public async Task <IActionResult> AuthModelWithRefreshToken([FromBody] AuthModelWithRefreshToken authData) { IActionResult response = Unauthorized(); try { var user = await _authService.AuthenticateUser(authData); if (user != null) { if (user.RefreshTokenExpiryTime < DateTime.Now) { return(new StatusCodeResult(402)); } var tokenString = TokenPublisher.GenerateAccessToken(user, _config); var refreshToken = TokenPublisher.GenerateRefreshToken(); user.AccessToken = tokenString; user.RefreshToken = refreshToken; user.RefreshTokenExpiryTime = DateTime.Now.AddYears(1); await _authService.UpdateRefreshToken(new UpdateRefreshTokenModel { Id = user.Id, RefreshToken = user.RefreshToken, RefreshTokenExpiryTime = user.RefreshTokenExpiryTime }); response = new OkObjectResult( user ); logger.Information( $"Type: AuthenticationController; Method: AuthModelWithRefreshToken; Info: AuthModelWithRefreshToken by Login: {authData.RefreshToken} successfully"); } } catch (Exception e) { logger.Error($"Type: AuthenticationController; Method: AuthModelWithRefreshToken; Error: {e.Message}"); throw; } return(response); }
public async Task <AuthResultModel> AuthenticateUser(AuthModelWithRefreshToken data) { AuthResultModel result = null; try { var authData = await _authServiceRepository.GetUserByRefreshToken(data.RefreshToken); result = MapperExtensions.Convert <AuthData, AuthResultModel>(authData); logger.Information($"AuthenticateUser [RefreshToken ] by {data.RefreshToken} was successfully"); } catch (Exception e) { logger.Error($"Method: AuthenticateUser with RefreshToken Message: {e.Message}"); throw; } return(result); }