// вход и регистрация using DEMO.Data; // база using DEMO.Models; // пользователи using Microsoft.AspNetCore.Mvc; // контроллер using Microsoft.EntityFrameworkCore; // поиск в базе namespace DEMO.Controllers; [ApiController] // это api [Route("api/[controller]")] // адрес будет api/auth public class AuthController : ControllerBase { private readonly AppDbContext _context; // база // запоминаю базу public AuthController(AppDbContext context) { _context = context; } // войти, адрес POST api/auth/login [HttpPost("login")] public async Task Login(User user) // приходят логин и пароль { // ищу такого человека в базе var existingUser = await _context.Users .Include(u => u.Role) // сразу беру его роль .FirstOrDefaultAsync(u => u.Login == user.Login && u.Password == user.Password); // не нашел значит неправильный пароль if (existingUser == null) return Unauthorized("Неверный логин или пароль."); // нашел, отдаю его обратно return Ok(new { existingUser.Id, existingUser.Login, Role = existingUser.Role?.Name }); } // регистрация, адрес POST api/auth/register [HttpPost("register")] public async Task Register(User user) // приходят логин и пароль { // проверяю нет ли уже такого логина var exists = await _context.Users .AnyAsync(u => u.Login == user.Login); if (exists) return BadRequest("Такой логин уже занят."); // ищу роль клиент чтоб дать ее новичку var clientRole = await _context.Roles .FirstOrDefaultAsync(r => r.Name == "Client"); if (clientRole == null) return BadRequest("Роль Client не найдена."); user.RoleId = clientRole.Id; // даю роль клиент _context.Users.Add(user); // добавляю в базу await _context.SaveChangesAsync(); // сохраняю // отдаю нового человека return Ok(new { user.Id, user.Login, Role = clientRole.Name }); } }