-
Notifications
You must be signed in to change notification settings - Fork 1
feat: Implement Identity #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis pull request refactors user authentication and registration by introducing ASP.NET Core Identity integration. It replaces the Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant AuthController
participant Mediator
participant RegisterHandler
participant UserRepository
participant AuthService
participant TokenService
Client->>AuthController: POST /register (email, password, fullName)
AuthController->>Mediator: Send RegisterCommand
Mediator->>RegisterHandler: Handle
RegisterHandler->>UserRepository: GetByEmailAsync(email)
alt Email exists
RegisterHandler-->>Mediator: Result.Failure("EmailExists")
Mediator-->>AuthController: Failure result
AuthController-->>Client: 409 Conflict
else Email unique
RegisterHandler->>UserRepository: CreateAsync(domainUser)
RegisterHandler->>AuthService: CreateIdentityUserAsync(userId, email, fullName, password, roles)
alt Identity creation fails
RegisterHandler-->>Mediator: Result.Failure("IdentityFailed")
Mediator-->>AuthController: Failure result
AuthController-->>Client: 400 Bad Request
else Identity created
RegisterHandler->>TokenService: GenerateAccessToken
RegisterHandler->>TokenService: GenerateRefreshToken
RegisterHandler-->>Mediator: Result.Success(RegisterResponse with tokens)
Mediator-->>AuthController: Success result
AuthController-->>Client: 200 OK (userId, email, fullName, accessToken, refreshToken)
end
end
sequenceDiagram
participant Client
participant AuthController
participant Mediator
participant LoginHandler
participant UserRepository
participant AuthService
participant TokenService
Client->>AuthController: POST /login (email, password)
AuthController->>Mediator: Send LoginCommand
Mediator->>LoginHandler: Handle
LoginHandler->>AuthService: CheckPasswordAsync(email, password)
alt Password invalid
LoginHandler-->>Mediator: Result.Unauthorized
Mediator-->>AuthController: Unauthorized result
AuthController-->>Client: 401 Unauthorized
else Password valid
LoginHandler->>UserRepository: GetByEmailAsync(email)
alt User not active
LoginHandler-->>Mediator: Result.Failure
Mediator-->>AuthController: Failure result
AuthController-->>Client: 400 Bad Request
else User active
LoginHandler->>TokenService: GenerateAccessToken
LoginHandler->>TokenService: GenerateRefreshToken
LoginHandler-->>Mediator: Result.Success(LoginResponse)
Mediator-->>AuthController: Success result
AuthController-->>Client: 200 OK (accessToken, refreshToken, expiresAt)
end
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas requiring extra attention:
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Free 📒 Files selected for processing (37)
💤 Files with no reviewable changes (6)
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Refactor