From 55736040750c5110d0d18ce40b07c5a2e042491c Mon Sep 17 00:00:00 2001 From: cxfm666 <61831881+cxfm666@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:54:26 +0800 Subject: [PATCH] fix newlogin --- WebServer/Controllers/DispatchRoutes.cs | 2 + WebServer/Handler/NewUsernameLoginHandler.cs | 37 +++++++++++ WebServer/Objects/NewLoginResJson.cs | 65 ++++++++++++++++++++ WebServer/Objects/RequestBodies.cs | 5 ++ 4 files changed, 109 insertions(+) create mode 100644 WebServer/Handler/NewUsernameLoginHandler.cs create mode 100644 WebServer/Objects/NewLoginResJson.cs diff --git a/WebServer/Controllers/DispatchRoutes.cs b/WebServer/Controllers/DispatchRoutes.cs index ec79eac8..99c8c894 100644 --- a/WebServer/Controllers/DispatchRoutes.cs +++ b/WebServer/Controllers/DispatchRoutes.cs @@ -37,6 +37,8 @@ namespace EggLink.DanhengServer.WebServer.Controllers // === AUTHENTICATION === [HttpPost("/hkrpg_global/mdk/shield/api/login")] public JsonResult Login([FromBody] LoginReqJson req) => new UsernameLoginHandler().Handle(req.account!, req.password!, req.is_crypto); + [HttpPost("/hkrpg_global/account/ma-passport/api/appLoginByPassword")] + public JsonResult Login([FromBody] NewLoginReqJson req) => new NewUsernameLoginHandler().Handle(req.account!, req.password!); [HttpPost("/hkrpg_global/mdk/shield/api/verify")] public JsonResult Verify([FromBody] VerifyReqJson req) => new TokenLoginHandler().Handle(req.uid!, req.token!); [HttpPost("/hkrpg_global/combo/granter/login/v2/login")] diff --git a/WebServer/Handler/NewUsernameLoginHandler.cs b/WebServer/Handler/NewUsernameLoginHandler.cs new file mode 100644 index 00000000..5a48fb1e --- /dev/null +++ b/WebServer/Handler/NewUsernameLoginHandler.cs @@ -0,0 +1,37 @@ +using Microsoft.AspNetCore.Mvc; +using EggLink.DanhengServer.Database.Account; +using EggLink.DanhengServer.Util; +using static EggLink.DanhengServer.WebServer.Objects.NewLoginResJson; +using EggLink.DanhengServer.WebServer.Objects; + +namespace EggLink.DanhengServer.WebServer.Handler +{ + public class NewUsernameLoginHandler + { + public JsonResult Handle(string account, string password) + { + NewLoginResJson res = new(); + AccountData? accountData = AccountData.GetAccountByUserName(account); + + if (accountData == null) + { + if (ConfigManager.Config.ServerOption.AutoCreateUser) + { + AccountHelper.CreateAccount(account, 0); + accountData = AccountData.GetAccountByUserName(account); + } + else + { + return new JsonResult(new NewLoginResJson { message = "Account not found", retcode = -201 }); + } + } + if (accountData != null) + { + res.message = "OK"; + res.data = new VerifyData(accountData.Uid.ToString(), accountData.Username + "@egglink.me", accountData.GenerateDispatchToken()); + } + + return new JsonResult(res); + } + } +} diff --git a/WebServer/Objects/NewLoginResJson.cs b/WebServer/Objects/NewLoginResJson.cs new file mode 100644 index 00000000..dd3b9f2a --- /dev/null +++ b/WebServer/Objects/NewLoginResJson.cs @@ -0,0 +1,65 @@ +namespace EggLink.DanhengServer.WebServer.Objects +{ + public class NewLoginResJson + { + public string? message { get; set; } + public int retcode { get; set; } + public VerifyData? data { get; set; } + + public NewLoginResJson() { } + + public NewLoginResJson(string aid, string email, string token) + { + data = new VerifyData(aid, email, token); + } + + public class VerifyData + { + public UserInfoData user_info { get; set; } = new UserInfoData(); + public TokenData token { get; set; } = new TokenData(); + + public VerifyData(string aid, string email, string token) + { + user_info.aid = aid; + user_info.email = email; + this.token.token = token; + } + } + + public class UserInfoData + { + public string account_name { get; set; } = ""; + public string aid { get; set; } = ""; + public string area_code { get; set; } = ""; + public string country { get; set; } = ""; + public string email { get; set; } = ""; + public int is_email_verify { get; set; } = 0; + public string identity_code { get; set; } = ""; + public List links { get; set; } = new List + { + new LinkData() + }; + public string mid { get; set; } = ""; + public string mobile { get; set; } = ""; + public string realname { get; set; } = ""; + public string rebind_area_code { get; set; } = ""; + public string rebind_mobile { get; set; } = ""; + public string rebind_mobile_time { get; set; } = ""; + public string safe_area_code { get; set; } = ""; + public string safe_mobile { get; set; } = ""; + } + + public class TokenData + { + public string token { get; set; } = ""; + public int token_type { get; set; } = 1; + } + + public class LinkData + { + public string nickname { get; set; } = ""; + public string thirdparty { get; set; } = ""; + public string union_id { get; set; } = ""; + } + } +} diff --git a/WebServer/Objects/RequestBodies.cs b/WebServer/Objects/RequestBodies.cs index 34c8ad9f..55aa0866 100644 --- a/WebServer/Objects/RequestBodies.cs +++ b/WebServer/Objects/RequestBodies.cs @@ -6,6 +6,11 @@ public string? password { get; set; } public bool is_crypto { get; set; } } + public class NewLoginReqJson + { + public string? account { get; set; } + public string? password { get; set; } + } public class VerifyReqJson {