Пример #1
0
        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
            });
        }