refactor: more consistent field names, also in STYLE.md
This commit is contained in:
		
							parent
							
								
									344a0071e5
								
							
						
					
					
						commit
						c77ee660ca
					
				
					 14 changed files with 86 additions and 71 deletions
				
			
		|  | @ -7,7 +7,7 @@ using NodaTime; | |||
| namespace Foxnouns.Backend.Controllers.Authentication; | ||||
| 
 | ||||
| [Route("/api/v2/auth")] | ||||
| public class AuthController(Config config, KeyCacheService keyCacheSvc, ILogger logger) : ApiControllerBase | ||||
| public class AuthController(Config config, KeyCacheService keyCache, ILogger logger) : ApiControllerBase | ||||
| { | ||||
|     private readonly ILogger _logger = logger.ForContext<AuthController>(); | ||||
| 
 | ||||
|  | @ -19,7 +19,7 @@ public class AuthController(Config config, KeyCacheService keyCacheSvc, ILogger | |||
|             config.DiscordAuth.Enabled, | ||||
|             config.GoogleAuth.Enabled, | ||||
|             config.TumblrAuth.Enabled); | ||||
|         var state = HttpUtility.UrlEncode(await keyCacheSvc.GenerateAuthStateAsync(ct)); | ||||
|         var state = HttpUtility.UrlEncode(await keyCache.GenerateAuthStateAsync(ct)); | ||||
|         string? discord = null; | ||||
|         if (config.DiscordAuth is { ClientId: not null, ClientSecret: not null }) | ||||
|             discord = | ||||
|  |  | |||
|  | @ -15,10 +15,10 @@ public class DiscordAuthController( | |||
|     ILogger logger, | ||||
|     IClock clock, | ||||
|     DatabaseContext db, | ||||
|     KeyCacheService keyCacheSvc, | ||||
|     AuthService authSvc, | ||||
|     RemoteAuthService remoteAuthSvc, | ||||
|     UserRendererService userRendererSvc) : ApiControllerBase | ||||
|     KeyCacheService keyCacheService, | ||||
|     AuthService authService, | ||||
|     RemoteAuthService remoteAuthService, | ||||
|     UserRendererService userRenderer) : ApiControllerBase | ||||
| { | ||||
|     private readonly ILogger _logger = logger.ForContext<DiscordAuthController>(); | ||||
| 
 | ||||
|  | @ -30,17 +30,17 @@ public class DiscordAuthController( | |||
|     public async Task<IActionResult> CallbackAsync([FromBody] AuthController.CallbackRequest req, CancellationToken ct = default) | ||||
|     { | ||||
|         CheckRequirements(); | ||||
|         await keyCacheSvc.ValidateAuthStateAsync(req.State, ct); | ||||
|         await keyCacheService.ValidateAuthStateAsync(req.State, ct); | ||||
| 
 | ||||
|         var remoteUser = await remoteAuthSvc.RequestDiscordTokenAsync(req.Code, req.State, ct); | ||||
|         var user = await authSvc.AuthenticateUserAsync(AuthType.Discord, remoteUser.Id, ct: ct); | ||||
|         var remoteUser = await remoteAuthService.RequestDiscordTokenAsync(req.Code, req.State, ct); | ||||
|         var user = await authService.AuthenticateUserAsync(AuthType.Discord, remoteUser.Id, ct: ct); | ||||
|         if (user != null) return Ok(await GenerateUserTokenAsync(user,ct)); | ||||
| 
 | ||||
|         _logger.Debug("Discord user {Username} ({Id}) authenticated with no local account", remoteUser.Username, | ||||
|             remoteUser.Id); | ||||
| 
 | ||||
|         var ticket = AuthUtils.RandomToken(); | ||||
|         await keyCacheSvc.SetKeyAsync($"discord:{ticket}", remoteUser, Duration.FromMinutes(20), ct); | ||||
|         await keyCacheService.SetKeyAsync($"discord:{ticket}", remoteUser, Duration.FromMinutes(20), ct); | ||||
| 
 | ||||
|         return Ok(new AuthController.CallbackResponse(false, ticket, remoteUser.Username)); | ||||
|     } | ||||
|  | @ -49,7 +49,7 @@ public class DiscordAuthController( | |||
|     [ProducesResponseType<AuthController.AuthResponse>(StatusCodes.Status200OK)] | ||||
|     public async Task<IActionResult> RegisterAsync([FromBody] AuthController.OauthRegisterRequest req, CancellationToken ct = default) | ||||
|     { | ||||
|         var remoteUser = await keyCacheSvc.GetKeyAsync<RemoteAuthService.RemoteUser>($"discord:{req.Ticket}",ct:ct); | ||||
|         var remoteUser = await keyCacheService.GetKeyAsync<RemoteAuthService.RemoteUser>($"discord:{req.Ticket}",ct:ct); | ||||
|         if (remoteUser == null) throw new ApiError.BadRequest("Invalid ticket", "ticket", req.Ticket); | ||||
|         if (await db.AuthMethods.AnyAsync(a => a.AuthType == AuthType.Discord && a.RemoteId == remoteUser.Id, ct)) | ||||
|         { | ||||
|  | @ -58,7 +58,7 @@ public class DiscordAuthController( | |||
|             throw new FoxnounsError("Discord ticket was issued for user with existing link"); | ||||
|         } | ||||
| 
 | ||||
|         var user = await authSvc.CreateUserWithRemoteAuthAsync(req.Username, AuthType.Discord, remoteUser.Id, | ||||
|         var user = await authService.CreateUserWithRemoteAuthAsync(req.Username, AuthType.Discord, remoteUser.Id, | ||||
|             remoteUser.Username, ct: ct); | ||||
| 
 | ||||
|         return Ok(await GenerateUserTokenAsync(user, ct)); | ||||
|  | @ -70,7 +70,7 @@ public class DiscordAuthController( | |||
|         _logger.Debug("Logging user {Id} in with Discord", user.Id); | ||||
| 
 | ||||
|         var (tokenStr, token) = | ||||
|             authSvc.GenerateToken(user, frontendApp, ["*"], clock.GetCurrentInstant() + Duration.FromDays(365)); | ||||
|             authService.GenerateToken(user, frontendApp, ["*"], clock.GetCurrentInstant() + Duration.FromDays(365)); | ||||
|         db.Add(token); | ||||
| 
 | ||||
|         _logger.Debug("Generated token {TokenId} for {UserId}", user.Id, token.Id); | ||||
|  | @ -78,7 +78,7 @@ public class DiscordAuthController( | |||
|         await db.SaveChangesAsync(ct); | ||||
| 
 | ||||
|         return new AuthController.AuthResponse( | ||||
|             await userRendererSvc.RenderUserAsync(user, selfUser: user, renderMembers: false, ct: ct), | ||||
|             await userRenderer.RenderUserAsync(user, selfUser: user, renderMembers: false, ct: ct), | ||||
|             tokenStr, | ||||
|             token.ExpiresAt | ||||
|         ); | ||||
|  |  | |||
|  | @ -12,10 +12,10 @@ namespace Foxnouns.Backend.Controllers.Authentication; | |||
| [Route("/api/v2/auth/email")] | ||||
| public class EmailAuthController( | ||||
|     DatabaseContext db, | ||||
|     AuthService authSvc, | ||||
|     MailService mailSvc, | ||||
|     KeyCacheService keyCacheSvc, | ||||
|     UserRendererService userRendererSvc, | ||||
|     AuthService authService, | ||||
|     MailService mailService, | ||||
|     KeyCacheService keyCacheService, | ||||
|     UserRendererService userRenderer, | ||||
|     IClock clock, | ||||
|     ILogger logger) : ApiControllerBase | ||||
| { | ||||
|  | @ -26,30 +26,30 @@ public class EmailAuthController( | |||
|     { | ||||
|         if (!req.Email.Contains('@')) throw new ApiError.BadRequest("Email is invalid", "email", req.Email); | ||||
| 
 | ||||
|         var state = await keyCacheSvc.GenerateRegisterEmailStateAsync(req.Email, userId: null, ct); | ||||
|         var state = await keyCacheService.GenerateRegisterEmailStateAsync(req.Email, userId: null, ct); | ||||
|         if (await db.AuthMethods.AnyAsync(a => a.AuthType == AuthType.Email && a.RemoteId == req.Email, ct)) | ||||
|             return NoContent(); | ||||
| 
 | ||||
|         mailSvc.QueueAccountCreationEmail(req.Email, state); | ||||
|         mailService.QueueAccountCreationEmail(req.Email, state); | ||||
|         return NoContent(); | ||||
|     } | ||||
| 
 | ||||
|     [HttpPost("callback")] | ||||
|     public async Task<IActionResult> CallbackAsync([FromBody] CallbackRequest req, CancellationToken ct = default) | ||||
|     { | ||||
|         var state = await keyCacheSvc.GetRegisterEmailStateAsync(req.State, ct); | ||||
|         var state = await keyCacheService.GetRegisterEmailStateAsync(req.State, ct); | ||||
|         if (state == null) throw new ApiError.BadRequest("Invalid state", "state", req.State); | ||||
| 
 | ||||
|         if (state.ExistingUserId != null) | ||||
|         { | ||||
|             var authMethod = | ||||
|                 await authSvc.AddAuthMethodAsync(state.ExistingUserId.Value, AuthType.Email, state.Email, ct: ct); | ||||
|                 await authService.AddAuthMethodAsync(state.ExistingUserId.Value, AuthType.Email, state.Email, ct: ct); | ||||
|             _logger.Debug("Added email auth {AuthId} for user {UserId}", authMethod.Id, state.ExistingUserId); | ||||
|             return NoContent(); | ||||
|         } | ||||
| 
 | ||||
|         var ticket = AuthUtils.RandomToken(); | ||||
|         await keyCacheSvc.SetKeyAsync($"email:{ticket}", state.Email, Duration.FromMinutes(20)); | ||||
|         await keyCacheService.SetKeyAsync($"email:{ticket}", state.Email, Duration.FromMinutes(20)); | ||||
| 
 | ||||
|         return Ok(new AuthController.CallbackResponse(false, ticket, state.Email)); | ||||
|     } | ||||
|  | @ -58,7 +58,7 @@ public class EmailAuthController( | |||
|     [ProducesResponseType<AuthController.AuthResponse>(StatusCodes.Status200OK)] | ||||
|     public async Task<IActionResult> LoginAsync([FromBody] LoginRequest req, CancellationToken ct = default) | ||||
|     { | ||||
|         var (user, authenticationResult) = await authSvc.AuthenticateUserAsync(req.Email, req.Password, ct); | ||||
|         var (user, authenticationResult) = await authService.AuthenticateUserAsync(req.Email, req.Password, ct); | ||||
|         if (authenticationResult == AuthService.EmailAuthenticationResult.MfaRequired) | ||||
|             throw new NotImplementedException("MFA is not implemented yet"); | ||||
| 
 | ||||
|  | @ -67,7 +67,7 @@ public class EmailAuthController( | |||
|         _logger.Debug("Logging user {Id} in with email and password", user.Id); | ||||
| 
 | ||||
|         var (tokenStr, token) = | ||||
|             authSvc.GenerateToken(user, frontendApp, ["*"], clock.GetCurrentInstant() + Duration.FromDays(365)); | ||||
|             authService.GenerateToken(user, frontendApp, ["*"], clock.GetCurrentInstant() + Duration.FromDays(365)); | ||||
|         db.Add(token); | ||||
| 
 | ||||
|         _logger.Debug("Generated token {TokenId} for {UserId}", token.Id, user.Id); | ||||
|  | @ -75,7 +75,7 @@ public class EmailAuthController( | |||
|         await db.SaveChangesAsync(ct); | ||||
| 
 | ||||
|         return Ok(new AuthController.AuthResponse( | ||||
|             await userRendererSvc.RenderUserAsync(user, selfUser: user, renderMembers: false, ct: ct), | ||||
|             await userRenderer.RenderUserAsync(user, selfUser: user, renderMembers: false, ct: ct), | ||||
|             tokenStr, | ||||
|             token.ExpiresAt | ||||
|         )); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue