예제 #1
0
        public OperationResponse <RefreshTokenResult> Post(RefreshAccessToken request)
        {
            OperationResponse <RefreshTokenResult> result = new OperationResponse <RefreshTokenResult>();

            try
            {
                string refreshTokenSerial = request.RefreshTokenSerialId;
                if (String.IsNullOrEmpty(refreshTokenSerial))
                {
                    Log.Error("refresh token is empty");
                    result.OnError("Invalid token, please login again", null);
                    return(result);
                }

                var accessToken = TokenBusinessLogic.RefreshToken(refreshTokenSerial);
                if (accessToken == null)
                {
                    Log.Error("Access Token is Empty");
                    result.OnError("Invalid token, please login again", null);
                    return(result);
                }
                result.OnSuccess(new RefreshTokenResult()
                {
                    AccessToken = accessToken
                },
                                 "new token received successfully");
                return(result);
            }
            catch (Exception e)
            {
                Log.Error(e.Message + " " + e.StackTrace);
                result.OnException(e.Message);
                return(result);
            }
        }
예제 #2
0
        public async Task <IActionResult> RefreshAccessToken(string refreshToken)
        {
            var refreshAccess = new RefreshAccessToken
            {
                Token = refreshToken
            };

            var refreshedAccess = await _mediator.Send(refreshAccess);

            return(Ok(refreshedAccess));
        }
예제 #3
0
        public async Task <IActionResult> RefreshToken([FromBody] RefreshAccessToken model)
        {
            var newRefreshToken = await _authService.RefreshToken(model);

            if (newRefreshToken == null)
            {
                return(BadRequest());
            }

            return(Ok(newRefreshToken));
        }
        public string Post(RefreshAccessToken request)
        {
            string refreshTokenSerial = request.RefreshTokenSerialId;

            if (String.IsNullOrEmpty(refreshTokenSerial))
            {
                return("Invalid Token,please login again");
            }

            var refreshTokenResult = tokenBusinessLogic.RefreshToken(refreshTokenSerial);

            if (refreshTokenResult == null)
            {
                return(null);
            }



            return(refreshTokenResult);
        }
예제 #5
0
        public async Task Should_Refresh_AccessToken()
        {
            //arrange
            var(fakeUser, sut, userRepository, refreshAccessRepository) = Arrange();
            var fakeRefreshToken = new RefreshToken(fakeUser, new PasswordHasher <User>());

            userRepository.GetAsync(Arg.Any <string>()).ReturnsForAnyArgs(fakeUser);
            userRepository.GetAsync(Arg.Any <Guid>()).ReturnsForAnyArgs(fakeUser);
            refreshAccessRepository.GetAsync(Arg.Any <string>()).ReturnsForAnyArgs(fakeRefreshToken);
            var createAccessToken = new RefreshAccessToken
            {
                Token = fakeRefreshToken.Token
            };

            //act
            Func <Task> action = async() => await sut.Handle(createAccessToken, new CancellationToken());

            //assert
            action.Should().NotThrow();
            await Task.CompletedTask;
        }
        public async Task <RefreshAccessToken> RefreshToken(RefreshAccessToken model)
        {
            var principal = _tokenService.GetPrincipalFromExpiredToken(model.AccessToken);
            var username  = principal.Identity.Name;
            var user      = appDbContext.Users.SingleOrDefault(u => u.UserName == username);

            if (user == null || model.RefreshToken != user.WebRefreshToken)
            {
                return(null);
            }
            var newJwtToken     = _tokenService.GenerateAccessToken(principal.Claims);
            var newRefreshToken = _tokenService.GenerateRefreshToken();

            user.WebRefreshToken = newRefreshToken;
            await appDbContext.SaveChangesAsync();


            return(new RefreshAccessToken()
            {
                AccessToken = newJwtToken, RefreshToken = newRefreshToken
            });
        }
예제 #7
0
 public async Task <IActionResult> RefreshAccessToken(string refreshToken, RefreshAccessToken command)
 => Ok(await _refreshTokenService.CreateAccessTokenAsync(command.Bind(c => c.Token, refreshToken).Token));
예제 #8
0
 public async Task <IActionResult> RefreshAccessToken([FromBody] RefreshAccessToken command)
 => Ok(await _refreshTokenService.CreateAccessTokenAsync(command.Token));