public async Task <IActionResult> GetUser(int id) { User userDb = await ContextUserDb.GetAsync(id); if (userDb == null) { return(NotFound("Пользователь не найден")); } return(new UserResult(userDb)); }
public async Task <ActionResult <string> > GetToken(AuthModel userAuth, [FromServices] IJwtSigningEncodingKey signingEncodingKey) { // Проверяем данные пользователя из запроса. if (!ModelState.IsValid) { _logger.LogInformation($"Неверный запрос"); return(BadRequest(ModelState)); } User userDb = await ContextDb.GetAsync(userAuth.Name); if (userDb == null || !Hash.Validate(userAuth.Password, userDb.Sault, userDb.HashPassword)) { _logger.LogInformation($"Неверный пользователь"); return(Unauthorized($"Данный пользователь не зарегистрирован в системе.")); } // Создаем утверждения для токена. var claims = new Claim[] { new Claim(ClaimTypes.NameIdentifier, userAuth.Name), new Claim(ClaimTypes.Role, userDb.Role.Name) }; // Генерируем JWT. var token = new JwtSecurityToken( issuer: AuthOptions.ISSUER, audience: AuthOptions.AUDIENCE, claims: claims, expires: DateTime.Now.Add(AuthOptions.LIFETIME), signingCredentials: new SigningCredentials( signingEncodingKey.GetKey(), signingEncodingKey.SigningAlgorithm) ); string jwtToken = new JwtSecurityTokenHandler().WriteToken(token); _logger.LogInformation($"Для пользователя {userAuth.Name} создан токен: {jwtToken}"); return(Ok(jwtToken)); }