Example #1
0
        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);
        }
Example #2
0
        /// <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);
            }
        }