Files
Server/OwnChar.Server/Api/Endpoint/LoginApi.cs
2024-08-23 11:18:46 +02:00

31 lines
994 B
C#

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<UserAccountDb>()?.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();
}
}