using OwnChar.Base.Data.Requests; using OwnChar.Base.Data.Responses; using OwnChar.Server.Data.Model; namespace OwnChar.ServerNew.Api.Endpoint.Implementations; internal class LoginApi(ServerContext server) : IApiEndpoint { public void Initialize(IApiBuilder builder) { builder.Map("/auth/login/{request}", Login); builder.Map("/auth/logout/{request}", Logout); } private IResult Login(LoginRequest request) { LoginResponse? result; if (server.Data != null && server.Data.Set()?.FirstOrDefault(n => n.Username == request.Username && n.Password == request.Password) is UserAccountDb acc && acc.Profile != null) { result = new(new(acc), new(acc.Profile), server.Login(acc)); } else { result = new(null, null, null) { ErrorCode = Base.Data.OwnCharResponseError.NotAuthorized }; } return TypedResults.Ok(result); } private IResult Logout(LogoutRequest request) { server.Logout(request.AuthSecret); return TypedResults.Ok(); } }