private async Task <AuthResultDto> GenerateAuthResult(ApplicationUser user)
        {
            var roles = await _userManager.GetRolesAsync(user);

            var claimsIdentity = _jwtBuilder.GenerateClaimsIdentity(user, roles);
            var securityToken  = _jwtBuilder.GenerateSecurityToken(claimsIdentity);

            var newRefreshToken = new RefreshTokenData
            {
                RefreshToken      = Guid.NewGuid().ToString(),
                Jti               = securityToken.Id,
                CreationDate      = DateTime.UtcNow,
                ExpirationDate    = DateTime.UtcNow.AddDays(1),
                IsUsed            = false,
                IsInvalidated     = false,
                ApplicationUserId = user.Id
            };

            await _context.RefreshTokens.AddAsync(newRefreshToken);

            await _context.SaveChangesAsync();

            return(new AuthResultDto
            {
                Token = new JwtSecurityTokenHandler().WriteToken(securityToken),
                RefreshToken = newRefreshToken.RefreshToken
            });
        }
        private async Task <ClaimsIdentity> GetClaimsIdentity(string userName, string password)
        {
            if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))
            {
                var userToVerify = await _userManager.FindByNameAsync(userName);

                if (userToVerify != null)
                {
                    bool passwordCorrect = await _userManager.CheckPasswordAsync(userToVerify, password);

                    if (passwordCorrect)
                    {
                        return(await Task.FromResult(_jwtBuilder.GenerateClaimsIdentity(userName, userToVerify.Id)));
                    }
                }
            }

            return(await Task.FromResult <ClaimsIdentity>(null));
        }