public async Task <TokenResponse> RefreshTokenAsync(string refreshToken, string userEmail) { var token = await _tokenHandler.TakeRefreshTokenAsync(refreshToken); if (token == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } if (DateTime.UtcNow.Ticks > token.Expiration) { return(new TokenResponse(false, "Expired refresh token.", null)); } var user = await _userService.FindByEmailAsync(userEmail); if (user == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } var accessToken = await _tokenHandler.CreateAccessTokenAsync(user); if (token == null) { return(new TokenResponse(false, "error creating token", null)); } return(new TokenResponse(true, null, accessToken)); }