diff --git a/UserMicroservice/Controllers/UserController.cs b/UserMicroservice/Controllers/UserController.cs index 27706aba3cf05bd01e99892fbba20f03e3f655de..c1a9d51b8f6a80bd1dd3a98016c42049e037fcc6 100644 --- a/UserMicroservice/Controllers/UserController.cs +++ b/UserMicroservice/Controllers/UserController.cs @@ -52,18 +52,15 @@ namespace UserMicroservice.Controllers if (!_authService.ValidateRefreshToken(refreshToken)) return Unauthorized("Invalid or expired refresh token."); - string? userIdString = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value; - if(userIdString == null) - return BadRequest(); - - if (!int.TryParse(userIdString, out int userId)) - return BadRequest("User ID is invalid."); + int? userId = _authService.GetUserId(refreshToken); + if (!userId.HasValue) + return BadRequest("Could not get User ID from refresh token"); - User? user = _userService.GetUser(userId); + User? user = _userService.GetUser(userId.Value); if(user == null) return Unauthorized(); - setAuthCookies(userId); + setAuthCookies(user.Id); return Ok(new { user.Id, user.Username, user.Email, user.Type }); } diff --git a/UserMicroservice/Services/AuthService.cs b/UserMicroservice/Services/AuthService.cs index 36f144c764b894a3872e1e7470a262c82cdbdd24..d5e1d0e4059c745f0b25a3607cd8c4b5ff60fdd0 100644 --- a/UserMicroservice/Services/AuthService.cs +++ b/UserMicroservice/Services/AuthService.cs @@ -28,6 +28,12 @@ namespace UserMicroservice.Services return new AuthTokenPair(accessToken, refreshToken); } + public int? GetUserId(string refreshToken) + { + RefreshToken? token = _context.RefreshTokens.SingleOrDefault(t => t.Token == refreshToken); + return token?.UserId; + } + private string GenerateAccessToken(int userId) { string? configuredKey = _configuration["Jwt:Key"]; diff --git a/UserMicroservice/Services/IAuthService.cs b/UserMicroservice/Services/IAuthService.cs index 26bff1f0186e82383877ca59f99340b399ce204b..8fb59de9703e0c780007c88455f625c89e97fa40 100644 --- a/UserMicroservice/Services/IAuthService.cs +++ b/UserMicroservice/Services/IAuthService.cs @@ -5,9 +5,8 @@ namespace UserMicroservice.Services public interface IAuthService { AuthTokenPair AuthenticateUser(int userId); - void RevokeRefreshToken(string token); - bool ValidateRefreshToken(string token); + int? GetUserId(string refreshToken); } }