public async Task <TokenResponse> RefreshTokenAsync(string refreshToken, string userEmail) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } if (token.IsExpired()) { 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 = _tokenHandler.CreateAccessToken(user); return(new TokenResponse(true, null, accessToken)); }
public async Task <AccessToken> RefreshTokenAsync(string refreshToken, string userEmail) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { throw new ApiException((int)ErrorEnum.InvalidRefreshToken, nameof(ErrorEnum.InvalidRefreshToken), null); } if (token.IsExpired()) { throw new ApiException((int)ErrorEnum.ExpiredRefreshToken, nameof(ErrorEnum.ExpiredRefreshToken), null); } var user = await _userService.FindByEmailAsync(userEmail); if (user == null) { throw new ApiException((int)ErrorEnum.InvalidRefreshToken, nameof(ErrorEnum.InvalidRefreshToken), null);; } var accessToken = _tokenHandler.CreateAccessToken(user); return(accessToken); }
public async Task <GenericResponse <AccessToken> > RefreshTokenAsync(string refreshToken, string userEmail) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new GenericResponse <AccessToken>("Invalid refresh token")); } if (token.IsExpired()) { return(new GenericResponse <AccessToken>("Expired refresh token")); } var user = await _userService.FindByEmailAsync(userEmail); if (user == null) { return(new GenericResponse <AccessToken>("Invalid refresh token")); } var accessToken = _tokenHandler.CreateAccessToken(user); return(new GenericResponse <AccessToken>(accessToken)); }
public async Task <TokenResponse> RefreshTokenAsync(string refreshToken, string customerEmail) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } if (token.IsExpired()) { return(new TokenResponse(false, "Expired refresh token.", null)); } var customer = await _dbContext .Customer .FirstAsync(c => c.Email == customerEmail); if (customer == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } var accessToken = _tokenHandler.CreateAccessToken(customer); return(new TokenResponse(true, null, accessToken)); }
/// <summary> /// Refreshes an access token /// </summary> /// <param name="refreshToken"></param> /// <param name="name"></param> /// <returns> /// Unsuccessful TokenResponse if refresh token is invalid; /// Unsuccessful TokenResponse if refresh token has expired; /// Unsuccessful TokenResponse if user does not exist; /// Successful TokenResponse with the access token /// </returns> public async Task <TokenResponse> RefreshTokenAsync(string refreshToken, string name) { // validate the refresh token var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new TokenResponse("Invalid refresh token")); } if (token.IsExpired()) { return(new TokenResponse("Expired refresh token")); } // validate the username var userResult = await _userService.GetUserByNameAsync(name); if (!userResult.Success) { return(new TokenResponse("User not found")); } // create the new access token var accessToken = _tokenHandler.CreateAccessToken(userResult.User); return(new TokenResponse(accessToken)); }
public async Task <BaseResponse> RefreshTokenAsync(RefreshTokenResource refreshTokenResource) { try { var token = _tokenHandler.TakeRefreshToken(refreshTokenResource.token); if (token == null) { return(GetErrorResponse("Invalid refresh token")); } if (token.IsExpired()) { return(GetErrorResponse("Expired refresh token")); } User user = await _userRepository.GetUserByValue("Id", refreshTokenResource.userId); if (user == null) { return(GetErrorResponse("Invalid refresh token")); } var accesstoken = _tokenHandler.CreateAccessToken(user); return(new BaseResponse(true, null, accesstoken)); } catch (Exception ex) { return(GetErrorResponse(ex.Message)); } }
public async Task <TokenResponse> RefreshTokenAsync(string refreshToken, string userEmail) { var token = tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new TokenResponse(null, "", "", false, 498, "Invalid refresh token.")); } if (token.IsExpired()) { return(new TokenResponse(null, "", "", false, 498, "Expired refresh token.")); } var user = await identityService.GetByUserNameAsync(userEmail); // var roles = await identityService.roles(user); if (user == null) { return(new TokenResponse(null, "", "", false, 498, "Invalid refresh token.", null)); } var accessToken = tokenHandler.CreateAccessToken(user, null); return(new TokenResponse(accessToken, hasher.Encrypt(user.Id), hasher.Encrypt(user.PhoneNumber), true, 200, "Token refreshed successfully")); }
public async Task <BaseResponse <AccessToken> > RefreshToken(string refreshToken, string username) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new BaseResponse <AccessToken>("Invalid refresh token")); } if (token.IsExpired()) { return(new BaseResponse <AccessToken>("Expired refresh token")); } var user = await _userService.FindFirstOrDefault(u => u.Username.Equals(username)); if (user == null) { return(new BaseResponse <AccessToken>("Invalid credentials")); } var accessToken = _tokenHandler.CreateAccessToken(user); return(new BaseResponse <AccessToken>(accessToken)); }
public TokenResponse RefreshTokenAsync(string refreshToken, string userEmail) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } if (token.IsExpired()) { return(new TokenResponse(false, "Expired refresh token.", null)); } var user = _userRepository.GetUserForLogin(userEmail); if (user == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } var accessToken = _tokenHandler.CreateAccessToken(user); return(new TokenResponse(true, null, accessToken)); }
public void Should_Take_Existing_Refresh_Token() { var accessToken = _tokenHandler.CreateAccessToken(_user); var refreshToken = _tokenHandler.TakeRefreshToken(accessToken.RefreshToken.Token); Assert.NotNull(refreshToken); Assert.Equal(accessToken.RefreshToken.Token, refreshToken.Token); Assert.Equal(accessToken.RefreshToken.Expiration, refreshToken.Expiration); }
public async Task <TokenResponse> RefreshTokenAsync(string refreshToken, string userEmail) { var token = _tokenHandler.TakeRefreshToken(refreshToken); if (token == null) { return(new TokenResponse(false, "Invalid refresh token.", null)); } if (token.IsExpired()) { return(new TokenResponse(false, "Expired refresh token.", null)); } //var user = await _userManager.FindByEmailAsync(userEmail); var user = await _userManager.Users .Include(x => x.Company) .SingleAsync(x => x.NormalizedEmail == userEmail); if (user == null) { return(new TokenResponse(false, "Invalid refresh token user.", null)); } var roles = await _userManager.GetRolesAsync(user); if (roles.Count > 0) { user.UserRoles = new List <AppRole>(); foreach (var item in roles) { user.UserRoles.Add(new AppRole(item)); } } var accessToken = _tokenHandler.CreateAccessToken(user); return(new TokenResponse(true, null, accessToken)); }