Пример #1
0
        public async Task <TokenCouple> RenewAsync(TokenCouple tokenCouple)
        {
            var handler           = new JwtSecurityTokenHandler();
            var jwtObject         = handler.ReadJwtToken(tokenCouple.Jwt);
            var userId            = jwtObject.Claims.FirstOrDefault(x => x.Type == JwtRegisteredClaimNames.NameId).Value;
            var tokenCoupleFromDb = await _unitOfWork.TokenCoupleRepository
                                    .Filter(x => x.Refresh == tokenCouple.Refresh && x.Jwt == tokenCouple.Jwt)
                                    .FirstOrDefaultAsync();

            if (tokenCoupleFromDb != null)
            {
                var user = await _userManager.FindByIdAsync(userId);

                if (!user.IsDeleted)
                {
                    return(await GetTokenCouple(user.UserName, user));
                }
                else
                {
                    throw new WebsiteException("Renew Failed! User has been deleted!");
                }
            }
            else
            {
                throw new WebsiteException("Renew Failed! Refresh token doesn't exist!");
            }
        }
Пример #2
0
        private async Task <TokenCouple> GetTokenCouple(string login, User appUser)
        {
            var result = new TokenCouple()
            {
                Jwt     = GenerateJwtToken(login, appUser),
                Refresh = GenerateRefreshToken()
            };

            var tokenCouple = _unitOfWork.TokenCoupleRepository.Create(result);
            await _unitOfWork.Save();

            return(tokenCouple);
        }
Пример #3
0
        public async Task <IActionResult> Renew([FromBody] TokenCouple model)
        {
            var result = await _service.RenewAsync(model);

            return(Json(result));
        }