using OwnChar.Api.Packets; using OwnChar.Api.Packets.General; using OwnChar.Server.Data.Model; using OwnChar.Server.Extensions; namespace OwnChar.Server.Api.Endpoint.Implementations; internal class LoginApi(ServerContext server) : IApiEndpoint { public void Initialize(IApiBuilder builder) { builder.Map("/auth/login", Login); builder.Map("/auth/logout", 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(acc.ToClient(), acc.Profile.ToClient(), server.Login(acc)); } else { result = new(null, null, null) { ErrorCode = OwnCharResponseError.NotFound, }; } return TypedResults.Ok(result); } private IResult Logout(LogoutRequest request) { server.Logout(request.AuthSecret); return TypedResults.Ok(new LogoutResponse()); } }