public async Task DeleteRefreshTokenAsync(ClaimsPrincipal userPrincipal) { if (!userPrincipal.HasClaim(claim => claim.Type == "uid")) { throw new SecurityTokenException("Refresh token deletion failed: access token has no user id."); } var userID = userPrincipal.FindFirst(claim => claim.Type == "uid").Value; var refreshToken = await refreshRepository.GetByUserIdAsync(userID); if (refreshToken == null) { throw new SecurityTokenException("Refresh token deletion failed: cannot retrieve refresh token."); } await refreshRepository.DeleteAsync(refreshToken.Id); }
/// <summary> /// Method for login user's refresh token /// <summary> /// <param name="userId">string</param> /// <param name="refreshToken">string</param> /// <returns>void</returns> public async Task LoginByRefreshTokenAsync(string userId, string refreshToken) { var userRefreshToken = await refreshRepository.GetByUserIdAsync(userId); if (userRefreshToken != null) { userRefreshToken.RefreshToken = refreshToken; userRefreshToken.ExpireOn = DateTime.Now.AddMonths(3); await refreshRepository.UpdateAsync(userRefreshToken); } else { userRefreshToken = new UserRefreshToken { UserId = userId, RefreshToken = refreshToken, ExpireOn = DateTime.Now.AddMonths(3) }; await refreshRepository.CreateAsync(userRefreshToken); } }