Exemplo n.º 1
0
        public async Task <IActionResult> Refresh([FromBody] AuthTokensDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var principal = _tokenBl.GetPrincipalFromExpiredAccessToken(dto.AccessToken);

            var user = await _accountBl.GetUserById(principal.Claims.Single(claim => claim.Type == "uid").Value);

            var userClaims = await _tokenBl.GetClaimsAsync(user);

            dto.AccessToken  = _tokenBl.GenerateJwtAccessToken(userClaims);
            dto.RefreshToken = await _tokenBl.UpdateRefreshTokenAsync(dto.RefreshToken, principal);

            dto.ExpireOn = _tokenBl.ExpirationTime;

            return(Ok(dto));
        }