mirror of
https://github.com/azaion/admin.git
synced 2026-04-22 22:16:33 +00:00
d320d6dd59
Made-with: Cursor
1.8 KiB
1.8 KiB
Module: Azaion.Services.AuthService
Purpose
JWT token creation and current-user resolution from HTTP context claims.
Public Interface
IAuthService
| Method | Signature | Description |
|---|---|---|
GetCurrentUser |
Task<User?> GetCurrentUser() |
Extracts email from JWT claims, returns full User entity |
CreateToken |
string CreateToken(User user) |
Generates a signed JWT token for the given user |
Internal Logic
- GetCurrentUser: reads
ClaimTypes.NamefromHttpContext.User.Claims, then delegates toIUserService.GetByEmail. - CreateToken: builds a
SecurityTokenDescriptorwith claims (NameIdentifier = user ID, Name = email, Role = role), signs with HMAC-SHA256 using the configured secret, sets expiry fromJwtConfig.TokenLifetimeHours.
Private method:
GetCurrentUserEmail— extracts email from claims dictionary.
Dependencies
IHttpContextAccessor— for accessing current HTTP contextIOptions<JwtConfig>— JWT configurationIUserService— forGetByEmaillookupSystem.IdentityModel.Tokens.JwtMicrosoft.IdentityModel.Tokens
Consumers
Program.cs/loginendpoint — callsCreateTokenafter successful validationProgram.cs/users/current,/resources/get,/resources/get-installer,/resources/check— callGetCurrentUser
Data Models
None.
Configuration
Uses JwtConfig (Issuer, Audience, Secret, TokenLifetimeHours).
External Integrations
None.
Security
- Token includes user ID, email, and role as claims
- Signed with HMAC-SHA256
- Expiry controlled by
TokenLifetimeHoursconfig - Token validation parameters are configured in
Program.cs(ValidateIssuer, ValidateAudience, ValidateLifetime, ValidateIssuerSigningKey)
Tests
None.