using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using MikrocopApi.Dtos; using MikrocopApi.Services; namespace MikrocopApi.Controllers; [ApiController] [Route("api/auth")] public sealed class AuthController : ControllerBase { private readonly IAuthService _authService; private readonly IUserService _userService; public AuthController(IAuthService authService, IUserService userService) { _authService = authService; _userService = userService; } [AllowAnonymous] [HttpPost("register")] [ProducesResponseType(StatusCodes.Status201Created)] [ProducesResponseType(StatusCodes.Status409Conflict)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task Register([FromBody] CreateUserDto request, CancellationToken cancellationToken) { var user = await _userService.CreateAsync(request, cancellationToken); return Created($"/api/users/{user.Id}", user); } [AllowAnonymous] [HttpPost("login")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task Login([FromBody] LoginRequestDto request, CancellationToken cancellationToken) { var response = await _authService.LoginAsync(request, cancellationToken); return Ok(response); } }