3.1 KiB
3.1 KiB
Story 2.2: Identity Management System
Metadata
- Story ID: 2.2
- Title: Identity Management System
- Epic: 2 - Authentication & Authorization
- Status: Pending
- Priority: High
- Estimated Time: 8-10 hours
- Dependencies: 1.2, 2.1
Goal
Build a complete user identity management system with registration, email verification, password management, and user CRUD operations.
Description
This story implements the complete user identity management system including user registration, email verification, password reset, password change, and user profile management. All operations are secured and audited.
Deliverables
1. Identity Interfaces (pkg/identity/identity.go)
UserRepositoryinterface for user data accessUserServiceinterface for user business logic- User domain models
2. User Repository (internal/identity/user_repo.go)
- CRUD operations using Ent
- Password hashing (bcrypt or argon2)
- Email uniqueness validation
- User lookup by ID and email
- User search and pagination
3. User Service (internal/identity/user_service.go)
- User registration with email verification token generation
- Email verification flow
- Password reset flow (token-based, time-limited)
- Password change with old password verification
- User profile updates
- User deletion (soft delete option)
4. User Management API Endpoints
POST /api/v1/users- Register new userGET /api/v1/users/:id- Get user profile (authorized)PUT /api/v1/users/:id- Update user profile (authorized)DELETE /api/v1/users/:id- Delete user (admin only)POST /api/v1/users/verify-email- Verify email with tokenPOST /api/v1/users/reset-password- Request password resetPOST /api/v1/users/change-password- Change password
5. gRPC Server (Microservices)
- Expose gRPC server for identity service
- gRPC service definition in
api/proto/identity.proto - gRPC server implementation in
internal/identity/grpc/server.go - Service registration in service registry
6. Integration
- Integration with email notification system (Epic 5 placeholder)
- Integration with audit logging
- Integration with authentication system
- Identity service is an independent service that can be deployed separately
Acceptance Criteria
- Users can register with email and password
- Passwords are securely hashed
- Email verification tokens are generated and validated
- Password reset flow works end-to-end
- Users can update their profiles
- User operations require proper authentication
- All user actions are audited
- Email uniqueness is enforced
Related ADRs
- ADR-0018: Password Hashing
- ADR-0029: Microservices Architecture
- ADR-0030: Service Communication Strategy
Files to Create/Modify
pkg/identity/identity.go- Identity interfacesinternal/identity/user_repo.go- User repositoryinternal/identity/user_service.go- User serviceinternal/identity/handler.go- User handlersinternal/di/providers.go- Add identity providers