2.3 KiB
2.3 KiB
Domain Entities — Unit 0: Backend Prerequisites
Modified Entity: ApplicationUser
ApplicationUser is extended with a new DisplayName property.
public class ApplicationUser : IdentityUser<Guid>
{
// Existing properties (unchanged)
public bool IsActive { get; set; }
public DateTime CreatedAt { get; set; }
// NEW: Display name shown in the frontend UI
// Optional — if null/empty, the frontend falls back to the user's email
public string? DisplayName { get; set; }
}
Migration required: A new EF Core migration must be added to SlpModularCms.Core/Migrations/ to add the DisplayName column to the AspNetUsers table.
| Property | Type | Nullable | Max Length | Default |
|---|---|---|---|---|
DisplayName |
nvarchar |
Yes | 100 | NULL |
Modified DTO: TokenResponse
TokenResponse is extended to carry the user's display name and role for the frontend auth context.
public record TokenResponse(
string AccessToken,
string RefreshToken, // Kept in record for internal use; NOT returned in HTTP response body
DateTime ExpiresAt,
UserDto User
);
public record UserDto(
Guid Id,
string Email,
string Name, // DisplayName ?? Email (fallback)
string Role,
bool IsActive
);
Note
:
RefreshTokenis no longer returned in the HTTP response body. TheAuthControllerreads it from theTokenResponserecord internally to set the httpOnly cookie, then returns onlyAccessToken,ExpiresAt, andUserto the client.
Removed: RefreshTokenRequest
RefreshTokenRequest.cs is deleted. The refresh token is now read exclusively from the httpOnly cookie.
// DELETED — no longer needed
// public record RefreshTokenRequest(string AccessToken, string RefreshToken);
Configuration Entity: CorsSettings
New configuration section read via IConfiguration — no database entity.
// appsettings.json (production placeholder)
{
"Cors": {
"AllowedOrigins": []
}
}
// appsettings.Development.json
{
"Cors": {
"AllowedOrigins": ["http://localhost:5173"]
}
}
// Bound via IConfiguration — not a domain entity
public class CorsSettings
{
public string[] AllowedOrigins { get; set; } = [];
}