public async Task <ActionResult <LoginResult> > Login(LoginRequest request) { if (!ModelState.IsValid) { return(BadRequest()); } if (!await _userService.IsValidUserCredentialsAsync(request.Email, request.Password)) { return(NotFound()); } var role = await _userService.GetUserRoleAsync(request.Email); var claims = new Claim[] { new Claim(ClaimTypes.Name, request.Email), new Claim(ClaimTypes.Role, role) }; var jwtResult = await _jwtAuthManager.GenerateTokensAsync(request.Email, claims, DateTime.Now); _logger.LogInformation($"User [{request.Email}] logged in the system."); return(new LoginResult { Email = request.Email, Role = role, AccessToken = jwtResult.AccessToken, RefreshToken = jwtResult.RefreshToken.TokenString }); }