using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SurveyBackend.DTOs; using SurveyBackend.Mappers; using IAuthorizationService = SurveyBackend.Core.Services.IAuthorizationService; namespace SurveyBackend.Controllers; [ApiController] [Route("api/auth")] public class AuthController : ControllerBase { private readonly IAuthorizationService _authorizationService; public AuthController(IAuthorizationService authorizationService) { _authorizationService = authorizationService; } /// /// Авторизация /// /// Принимает на вход email и password. При отсутствии такого email вернет 404, при неправильном пароле 401, при успехе 200 и валидный токен /// /// Success: Возвращает токен /// Unauthorized: Неправильный пароль /// [AllowAnonymous] [HttpPost("login")] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status200OK)] public async Task LogIn([FromBody] UserLoginDto loginData) { var token = await _authorizationService.LogInUser(loginData.Email, loginData.Password); return Ok(new { token = token }); } /// /// Регистрация /// /// Принимает на вход кучу всяких полей, потом разберемся /// /// [AllowAnonymous] [HttpPost("register")] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status200OK)] public async Task Register([FromBody] UserRegistrationDto registerData) { var token = await _authorizationService.RegisterUser( AuthMapper.UserRegistrationToModel(registerData)); return Ok(new { token = token }); } }