Exemple #1
0
        public async Task <UserTicketViewModel> RefreshAsync(RefreshTicketViewModel credentials)
        {
            _entityValidator.Value.ValidateAndThrow(credentials);

            var principal = GetPrincipalFromExpiredToken(credentials.AccessToken);
            var user      = await _userManager.Value.FindByEmailAsync(principal.Claims.FirstOrDefault().Value);

            if (user == null)
            {
                throw new SecurityTokenException("Invalid Token");
            }

            if (user.RefreshToken != credentials.RefreshToken || user.RefreshTokenExpiryDate < DateTime.UtcNow)
            {
                throw new SecurityTokenException("Invalid refresh token");
            }

            var newJwtToken     = GenerateAccessToken(principal.Claims);
            var newRefreshToken = GenerateRefreshToken();

            user.RefreshToken           = newRefreshToken;
            user.RefreshTokenExpiryDate = DateTime.UtcNow.AddDays(int.Parse(_configurations.Value["Tokens:RefreshTokenDurationInDays"]));

            await _userManager.Value.UpdateAsync(user);

            return(new UserTicketViewModel
            {
                AccessToken = newJwtToken,
                RefreshToken = newRefreshToken
            });
        }
 public async Task <UserTicketViewModel> Refresh([FromBody] RefreshTicketViewModel model)
 {
     return(await _userService.Value.RefreshAsync(model));
 }