survey-webapp/SurveyBackend/SurveyBackend.API/Controllers/AuthController.cs
2025-04-27 15:58:51 +05:00

61 lines
No EOL
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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