示例#1
0
        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));
        }