Example #1
0
        public async Task <ActionResult> RefreshAsync(RefreshRequest refreshRequest, ModelStateDictionary modelState)
        {
            if (!modelState.IsValid)
            {
                return(BadRequestModelState(modelState));
            }

            bool isValidRefreshToken = _refreshTokenValidator.Validate(refreshRequest.RefreshToken);

            if (!isValidRefreshToken)
            {
                return(new BadRequestObjectResult(new ErrorResponse("Invalid refresh token.")));
            }

            RefreshToken refreshTokenDTO = await _refreshTokenRepository.GetByTokenAsync(refreshRequest.RefreshToken);

            if (refreshTokenDTO == null)
            {
                return(new NotFoundObjectResult(new ErrorResponse("Invalid refresh token.")));
            }

            await _refreshTokenRepository.DeleteAsync(refreshTokenDTO.Id);

            Account account = await _accountService.GetAsync(refreshTokenDTO.AccountId);

            if (account == null)
            {
                return(new NotFoundObjectResult(new ErrorResponse("Account not found.")));
            }

            AuthenticatedAccountResponse response = await _authenticator.AuthenticateAsync(account);

            return(new OkObjectResult(response));
        }
Example #2
0
        public async Task <IActionResult> Refresh([FromBody] RefreshRequest refreshRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequestState());
            }

            bool isValidRefreshToken = _refreshTokenValidator.Validate(refreshRequest.RefreshToken);

            if (!isValidRefreshToken)
            {
                return(BadRequest(new ErrorResponse("Invalid refresh token")));
            }

            RefreshToken refreshTokenDTO = await _refreshTokenRepository.GetByToken(refreshRequest.RefreshToken);

            if (refreshTokenDTO == null)
            {
                return(NotFound(new ErrorResponse("Invalid refresh token")));
            }

            _refreshTokenRepository.Delete(refreshTokenDTO.Id);

            User user = await _userRepository.GetById(refreshTokenDTO.UserId);

            if (user == null)
            {
                return(NotFound(new ErrorResponse("User not found")));
            }

            AuthenticatedUserResponse response = await _authenticator.Authenticate(user);

            return(Ok(response));
        }
Example #3
0
        public void Validates_Token()
        {
            const string expenseAidToken      = "eyJ1c2VybmFtZSI6IkVBQUFBS1V1M1ZQMmdKdGFURFFSME1FV01rOFVmZHV3YlBQbjkwcTIrdVp2RHdGZ2dHZ0dOQkJ3NlBlZ255bnRDRWxHMmc9PSIsInNlc3Npb25JZCI6IjQwOTk0IiwiZXhwIjoxNDc0MzU5MDk4LjU2NDgwNjd9.zZy_0Ms86E4prSRNG6O1CERzgeC1q30rkXMrTzt-EAI";
            const string expenseAidSigningKey = "eWHWsyQ0mCXcm9H0PB1R3ilu4aToXlud2yR6JmD5";

            var validator = new RefreshTokenValidator(
                tokenSigner: new JwsTokenSigner(
                    signingKey: expenseAidSigningKey),
                payloadDecoder: new PayloadDecoder());

            var tokenResult = Token.Parse(expenseAidToken);

            var result = validator.Validate(tokenResult.Value);

            Assert.Null(result.FailureReason);
            Assert.True(result.IsValid);
        }