43 lines
1.3 KiB
C#
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 { });
|
|
}
|
|
}
|