コード例 #1
0
        public async Task <TokenPairDto> RefreshExpiredTokens(TokenPairDto tokens, DateTime now)
        {
            if (string.IsNullOrWhiteSpace(tokens.AccessToken) || string.IsNullOrWhiteSpace(tokens.RefreshToken))
            {
                throw new BadRequestException("Refresh token can't be null");
            }

            var claims  = tokens.AccessToken.ParseClaimsFromJwt();
            var idClaim = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value;

            if (string.IsNullOrWhiteSpace(idClaim) || !int.TryParse(idClaim, out var _))
            {
                throw new BadRequestException("Invalid access token");
            }

            var userId = int.Parse(idClaim);
            var previousRefreshToken = await mediator.Send(new LoadRefreshTokenQuery(userId));

            if (previousRefreshToken is null || previousRefreshToken.Token != tokens.RefreshToken || previousRefreshToken.ExpireAt < now)
            {
                throw new BadRequestException("Invalid refresh token");
            }

            return(await GenerateTokens(userId, claims, now));
        }
コード例 #2
0
 public async Task <ActionResult <TokenPairDto> > RefreshExpiredTokens([FromBody] TokenPairDto tokens)
 {
     try
     {
         return(Ok(await accountService.RefreshExpiredTokens(tokens)));
     }
     catch (System.Exception)
     {
         return(Unauthorized());
     }
 }
コード例 #3
0
        public async Task <IHttpActionResult> SetFCMToken(TokenPairDto tokenPairDto)
        {
            if (ModelState.IsValid)
            {
                Session session = await db.Sessions.SingleOrDefaultAsync(QueryHelper.GetSessionObjectValidationQuery(tokenPairDto.Session));

                if (session != null)
                {
                    session.FCMToken = tokenPairDto.Token;
                    db.SaveChanges();
                    return(Ok());
                }

                return(NotFound());
            }
            return(BadRequest());
        }
コード例 #4
0
ファイル: AccountService.cs プロジェクト: abdelhakim94/Order
 public Task <TokenPairDto> RefreshExpiredTokens(TokenPairDto tokens)
 {
     return(jwtAuthenticationService.RefreshExpiredTokens(tokens, DateTime.Now));
 }