public async Task <Jwt> CreateToken(TokenCreateDto dto, CancellationToken cancellationToken) { var user = _unitOfWork.UserRepository .Get(u => string.Equals(u.Email, dto.Email, StringComparison.CurrentCultureIgnoreCase)) .FirstOrDefault(); if (user == null) { return(null); } if (!_userService.VerifyPassword(user, dto.Password)) { return(null); } var claims = CreateClaims(user); var refreshToken = BuildRefreshToken(user); var jwt = BuildJwt(claims); var token = new JwtSecurityTokenHandler().WriteToken(jwt); var guid = await _tokenManager.GetGuidFromRequest(cancellationToken); await _tokenManager.AddNewTokens(token, refreshToken, user.Id, guid, cancellationToken); return(new Jwt { SecurityToken = token, RefreshToken = refreshToken, ExpiryDate = DateTime.UtcNow.AddMinutes(_options.Exp) }); }