Exemple #1
0
        public async Task <ResultModel <object> > SaveToken(TokenRefreshDTO model)
        {
            ResultModel <object> result = new ResultModel <object>();

            try
            {
                using (var transaction = _context.Database.BeginTransaction()) {
                    try
                    {
                        var token = _mapper.Map <TokenRefreshDTO, TokenRefresh>(model);

                        await _context.TokenRefreshes.AddAsync(token);

                        await _context.SaveChangesAsync();

                        transaction.Commit();

                        result.SetSuccess("success");
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw new Exception(ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                result.SetFailed(ex.Message);
                _logging.WriteErr(ex);
            }

            return(result);
        }
Exemple #2
0
 public async Task <TokenDTO> RefreshAsync(TokenRefreshDTO dto)
 {
     return(new TokenDTO()
     {
         Access_token = "part1.part2.part3",
         Token_type = "bearer",
         Expires_in = 1799,
         Refresh_token = "1234567890",
     });
 }
Exemple #3
0
        public async Task <AuthResultDTO> GenerateToken(int userId, string userName, string fullName)
        {
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Security:Tokens:Key"]));

            var token = new JwtSecurityToken(
                issuer: _configuration["Security:Tokens:Issuer"],
                audience: _configuration["Security:Tokens:Audience"],
                claims: new[]
            {
                new Claim(type: "Id", value: userId.ToString()),
                new Claim(ClaimTypes.Name, userName),
                new Claim(ClaimTypes.NameIdentifier, userId.ToString()),
                new Claim(ClaimTypes.Surname, fullName ?? string.Empty),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
            },
                expires: DateTime.UtcNow.AddMinutes(1),
                notBefore: DateTime.UtcNow,
                signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
                );

            var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);

            var tokenRefresh = new TokenRefreshDTO()
            {
                JwtId      = token.Id,
                IsUsed     = false,
                UserId     = userId,
                AddedDate  = DateTime.UtcNow,
                ExpiryDate = DateTime.UtcNow.AddYears(1),
                IsRevoked  = false,
                Token      = RandomString(25) + Guid.NewGuid()
            };

            await _user.SaveToken(tokenRefresh);

            Response.Cookies.Append("X-Access-Token", jwtToken, new CookieOptions()
            {
                HttpOnly = true, SameSite = SameSiteMode.Strict
            });
            Response.Cookies.Append("X-Refresh-Token", tokenRefresh.Token, new CookieOptions()
            {
                HttpOnly = true, SameSite = SameSiteMode.Strict
            });


            return(new AuthResultDTO()
            {
                Token = jwtToken,
                Success = true,
                RefreshToken = tokenRefresh.Token
            });
        }
        public IActionResult updateTokens([FromBody] TokenRefreshDTO tokenRefreshDTO)
        {
            try
            {
                if (tokenRefreshDTO.Token == null)
                {
                    return(StatusCode(401));
                }
                string refreshToken = _userService.updateTokens(tokenRefreshDTO.Token, tokenRefreshDTO.UserId);
                if (refreshToken == null)
                {
                    return(StatusCode(401));
                }

                UserDTO userDTO = _userService.GetUserData(tokenRefreshDTO.UserId);//_userService.GetUserAccount(userDTO.Email, userDTO.Password);
                if (userDTO == null)
                {
                    return(StatusCode(401));
                }
                var claims = new[] {
                    new Claim(ClaimsIdentity.DefaultNameClaimType, userDTO.Email),
                    new Claim(ClaimTypes.Role, userDTO.Role.Name)
                };
                var tokenExpires = DateTime.Now.Add(TimeSpan.FromMinutes(_jwtAuthentication.Value.Lifetime));
                var token        = _userService.createToken(claims, tokenExpires);

                var response = new
                {
                    access_token  = token,
                    refresh_token = refreshToken,
                    expires       = tokenExpires,
                    user          = userDTO
                };
                return(Ok(response));
            }
            catch (Exception ex)
            {
                return(StatusCode(404));
            }
        }
Exemple #5
0
 public Task <TokenDTO> RefreshAsync(TokenRefreshDTO dto, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }