public async Task <ResponseModel> Handle(UserLoginRequest request, CancellationToken cancellationToken) { var user = await _userManager.FindByEmailAsync(request.Email) ?? await _userManager.FindByNameAsync(request.Email); var passwordIsCorrect = await _userManager.CheckPasswordAsync(user, request.Password); if (passwordIsCorrect) { var roles = await _userManager.GetRolesAsync(user); var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()) }; claims.AddRange(JwtHelper.GenerateClaims(ClaimTypes.Role, roles.ToList())); var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user); if (claims != null && claimsPrincipal?.Identity is ClaimsIdentity claimsIdentity) { claimsIdentity.AddClaims(claims); await _signInManager.SignInWithClaimsAsync(user, true, claimsIdentity.Claims); } return(new ResponseModel { StatusCode = HttpStatusCode.OK, Data = new { access_token = JwtHelper.GenerateJwtToken(claims, _configuration), role = roles.ToList() } }); } else { return(new ResponseModel { StatusCode = HttpStatusCode.BadRequest, Message = "User or Password is invalid" }); } }