Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 6
0
        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));
            }
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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));
        }