femto-backend/Femto.Api/Controllers/Auth/AuthController.cs
2025-05-14 23:53:00 +02:00

43 lines
1.3 KiB
C#

using Femto.Api.Sessions;
using Femto.Modules.Auth.Application;
using Femto.Modules.Auth.Application.Commands.Login;
using Femto.Modules.Auth.Application.Commands.Register;
using Microsoft.AspNetCore.Mvc;
namespace Femto.Api.Controllers.Auth;
[ApiController]
[Route("auth")]
public class AuthController(IAuthenticationModule authModule) : ControllerBase
{
[HttpPost("login")]
public async Task<ActionResult<LoginResponse>> Login([FromBody] LoginRequest request)
{
var result = await authModule.PostCommand(
new LoginCommand(request.Username, request.Password)
);
HttpContext.SetSession(result.Session);
return new LoginResponse(result.UserId, result.Username);
}
[HttpPost("signup")]
public async Task<ActionResult<SignupResponse>> Signup([FromBody] SignupRequest request)
{
var result = await authModule.PostCommand(
new RegisterCommand(request.Username, request.Password)
);
HttpContext.SetSession(result.Session);
return new SignupResponse(result.UserId, result.Username);
}
[HttpPost("delete-session")]
public async Task<ActionResult> DeleteSession([FromBody] DeleteSessionRequest request)
{
// TODO
return Ok(new { });
}
}