43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
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<UserDto>(StatusCodes.Status201Created)]
|
|
[ProducesResponseType<ProblemDetails>(StatusCodes.Status409Conflict)]
|
|
[ProducesResponseType<ValidationProblemDetails>(StatusCodes.Status400BadRequest)]
|
|
public async Task<IActionResult> Register([FromBody] CreateUserDto request, CancellationToken cancellationToken)
|
|
{
|
|
var user = await _userService.CreateAsync(request, cancellationToken);
|
|
return Created($"/api/users/{user.Id}", user);
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpPost("login")]
|
|
[ProducesResponseType<LoginResponseDto>(StatusCodes.Status200OK)]
|
|
[ProducesResponseType<ProblemDetails>(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType<ValidationProblemDetails>(StatusCodes.Status400BadRequest)]
|
|
public async Task<IActionResult> Login([FromBody] LoginRequestDto request, CancellationToken cancellationToken)
|
|
{
|
|
var response = await _authService.LoginAsync(request, cancellationToken);
|
|
return Ok(response);
|
|
}
|
|
}
|