using OwnChar.Api.Packets; using OwnChar.Api.Packets.General; using OwnChar.Server.Data.Model; using OwnChar.Server.Extensions; using Pilz.Net.Api; namespace OwnChar.Server.Api.Endpoint; internal class LoginApi(ServerContext server) { [MessageHandler("/auth/login")] public ApiResult Login(LoginRequest request, ApiRequestInfo info) { if (server.Data?.Set()?.FirstOrDefault(n => n.Username == request.Username && n.Password == request.Password) is UserAccountDb acc && acc.Profile != null) { if (info.IsAuthenticated) server.Logout(info.AuthKey); return ApiResult.Ok(new LoginResponse(acc.ToClient(), acc.Profile.ToClient(), server.Login(acc))); } return ApiResult.NotFound(); } [MessageHandler("/auth/logout")] public ApiResult Logout(ApiRequestInfo info) { if (info.IsAuthenticated) server.Logout(info.AuthKey); return ApiResult.Ok(); } }