diff --git a/OwnChar b/OwnChar index 38dc09a..db5191b 160000 --- a/OwnChar +++ b/OwnChar @@ -1 +1 @@ -Subproject commit 38dc09ab12dfc2e1d98dc15f6805373fc5e6e33b +Subproject commit db5191b0b809c350776886368f22ae60b11a346b diff --git a/OwnChar.Server/Api/Endpoint/Implementations/LoginApi.cs b/OwnChar.Server/Api/Endpoint/Implementations/LoginApi.cs index f289213..06b0521 100644 --- a/OwnChar.Server/Api/Endpoint/Implementations/LoginApi.cs +++ b/OwnChar.Server/Api/Endpoint/Implementations/LoginApi.cs @@ -1,6 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using OwnChar.Base.Data.Requests; using OwnChar.Base.Data.Responses; -using OwnChar.Model; using OwnChar.Server.Data.Model; namespace OwnChar.ServerNew.Api.Endpoint.Implementations; @@ -9,24 +8,34 @@ internal class LoginApi(ServerContext server) : IApiEndpoint { public void Initialize(IApiBuilder builder) { - builder.Map("/auth/login/{username}", Login); - builder.Map("/auth/logout/{secret}", Logout); + builder.Map("/auth/login/{request}", Login); + builder.Map("/auth/logout/{request}", Logout); } - private IResult Login(string username, [FromHeader(Name = "X-USER-PASSWORD")] string password) + private IResult Login(LoginRequest request) { - if (server.Data != null && server.Data.Set()?.FirstOrDefault(n => n.Username == username && n.Password == password) is UserAccountBase account) - return TypedResults.Ok(new LoginResponse + 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) { - Secret = server.Login(account), - UserAccount = account, - }); - return TypedResults.Unauthorized(); + ErrorCode = Base.Data.OwnCharResponseError.NotAuthorized + }; + } + + return TypedResults.Ok(result); } - private IResult Logout([FromHeader(Name = "X-AUTH-SECRET")] string secret) + private IResult Logout(LogoutRequest request) { - server.Logout(secret); + server.Logout(request.AuthSecret); return TypedResults.Ok(); } } diff --git a/OwnChar.Server/Api/IServer.cs b/OwnChar.Server/Api/IServer.cs index 9cd3b5d..08e25c9 100644 --- a/OwnChar.Server/Api/IServer.cs +++ b/OwnChar.Server/Api/IServer.cs @@ -1,5 +1,5 @@ using Microsoft.EntityFrameworkCore; -using OwnChar.Model; +using OwnChar.Base.Data.Model; using Pilz.Configuration; using System.Diagnostics.CodeAnalysis; using ILogger = Castle.Core.Logging.ILogger; diff --git a/OwnChar.Server/ServerContext.cs b/OwnChar.Server/ServerContext.cs index 5b26e74..48d7726 100644 --- a/OwnChar.Server/ServerContext.cs +++ b/OwnChar.Server/ServerContext.cs @@ -1,5 +1,6 @@ using Castle.Core.Logging; using Microsoft.EntityFrameworkCore; +using OwnChar.Base.Data.Model; using OwnChar.Data; using OwnChar.Model; using OwnChar.Server;