31 lines
994 B
C#
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();
|
|
}
|
|
}
|