diff --git a/Libraries/SPTarkov.Server.Core/Callbacks/LauncherV2Callbacks.cs b/Libraries/SPTarkov.Server.Core/Callbacks/LauncherV2Callbacks.cs index cc8e7a8c..b4b55918 100644 --- a/Libraries/SPTarkov.Server.Core/Callbacks/LauncherV2Callbacks.cs +++ b/Libraries/SPTarkov.Server.Core/Callbacks/LauncherV2Callbacks.cs @@ -1,5 +1,6 @@ using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; +using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Launcher; using SPTarkov.Server.Core.Models.Spt.Launcher; using SPTarkov.Server.Core.Utils; @@ -15,17 +16,26 @@ public class LauncherV2Callbacks( { public ValueTask Ping() { - return new ValueTask(httpResponseUtil.NoBody(new LauncherV2PingResponse { Response = launcherV2Controller.Ping() })); + return new ValueTask(httpResponseUtil.NoBody(new LauncherV2PingResponse + { + Response = launcherV2Controller.Ping() + })); } public ValueTask Types() { - return new ValueTask(httpResponseUtil.NoBody(new LauncherV2TypesResponse { Response = launcherV2Controller.Types() })); + return new ValueTask(httpResponseUtil.NoBody(new LauncherV2TypesResponse + { + Response = launcherV2Controller.Types() + })); } public ValueTask Login(LoginRequestData info) { - return new ValueTask(httpResponseUtil.NoBody(new LauncherV2LoginResponse { Response = launcherV2Controller.Login(info) })); + return new ValueTask(httpResponseUtil.NoBody(new LauncherV2LoginResponse + { + Response = launcherV2Controller.Login(info) + })); } public async ValueTask Register(RegisterData info) @@ -55,26 +65,49 @@ public class LauncherV2Callbacks( public ValueTask CompatibleVersion() { return new ValueTask( - httpResponseUtil.NoBody(new LauncherV2VersionResponse { Response = launcherV2Controller.SptVersion() }) + httpResponseUtil.NoBody(new LauncherV2VersionResponse + { + Response = launcherV2Controller.SptVersion() + }) ); } public ValueTask Mods() { - return new ValueTask(httpResponseUtil.NoBody(new LauncherV2ModsResponse { Response = launcherV2Controller.LoadedMods() })); + return new ValueTask(httpResponseUtil.NoBody(new LauncherV2ModsResponse + { + Response = launcherV2Controller.LoadedMods() + })); } public ValueTask Profiles() { return new ValueTask( - httpResponseUtil.NoBody(new LauncherV2ProfilesResponse { Response = profileController.GetMiniProfiles() }) + httpResponseUtil.NoBody(new LauncherV2ProfilesResponse + { + Response = profileController.GetMiniProfiles() + }) ); } - public ValueTask Profile(LoginRequestData sessionId) + public ValueTask Profile(LoginRequestData username) { return new ValueTask( - httpResponseUtil.NoBody(new LauncherV2ProfileResponse { Response = launcherV2Controller.GetMiniProfileFromUsername(sessionId) }) + httpResponseUtil.NoBody(new LauncherV2ProfileResponse + { + Response = launcherV2Controller.GetMiniProfileFromUsername(username) + }) + ); + } + + public ValueTask Wipe(RegisterData info) + { + return new ValueTask( + httpResponseUtil.NoBody(new LauncherV2WipeResponse + { + Response = launcherV2Controller.Wipe(info), + Profiles = profileController.GetMiniProfiles(), + }) ); } } diff --git a/Libraries/SPTarkov.Server.Core/Controllers/LauncherV2Controller.cs b/Libraries/SPTarkov.Server.Core/Controllers/LauncherV2Controller.cs index 323abf49..2aba321b 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/LauncherV2Controller.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/LauncherV2Controller.cs @@ -173,4 +173,26 @@ public class LauncherV2Controller( { return profileController.GetMiniProfile(GetSessionId(info)); } + + public bool Wipe(RegisterData info) + { + if (!CoreConfig.AllowProfileWipe) + { + return false; + } + + var sessionId = Login(info); + + if (!sessionId) + { + var profileInfo = saveServer.GetProfiles().FirstOrDefault(x => + x.Value.ProfileInfo?.Username == info.Username + ).Value.ProfileInfo; + + profileInfo!.Edition = info.Edition; + profileInfo.IsWiped = true; + } + + return sessionId; + } } diff --git a/Libraries/SPTarkov.Server.Core/Routers/Static/LauncherV2StaticRouter.cs b/Libraries/SPTarkov.Server.Core/Routers/Static/LauncherV2StaticRouter.cs index 3dd14da9..fd5bce76 100644 --- a/Libraries/SPTarkov.Server.Core/Routers/Static/LauncherV2StaticRouter.cs +++ b/Libraries/SPTarkov.Server.Core/Routers/Static/LauncherV2StaticRouter.cs @@ -12,32 +12,38 @@ public class LauncherV2StaticRouter(LauncherV2Callbacks launcherV2Callbacks, Jso : StaticRouter( jsonUtil, [ - new RouteAction("/launcher/v2/ping", async (url, _, sessionID, _) => await launcherV2Callbacks.Ping()), - new RouteAction("/launcher/v2/types", async (url, _, sessionID, _) => await launcherV2Callbacks.Types()), + new RouteAction("/launcher/v2/ping", async (_, _, _, _) => await launcherV2Callbacks.Ping()), + new RouteAction("/launcher/v2/types", async (_, _, _, _) => await launcherV2Callbacks.Types()), new RouteAction( "/launcher/v2/login", - async (url, info, sessionID, _) => await launcherV2Callbacks.Login(info) + async (_, info, _, _) => await launcherV2Callbacks.Login(info) ), new RouteAction( "/launcher/v2/register", - async (url, info, sessionID, _) => await launcherV2Callbacks.Register(info) + async (_, info, _, _) => await launcherV2Callbacks.Register(info) ), new RouteAction( "/launcher/v2/remove", - async (url, info, sessionID, _) => await launcherV2Callbacks.Remove(info) + async (_, info, _, _) => await launcherV2Callbacks.Remove(info) ), new RouteAction( "/launcher/v2/version", - async (url, _, sessionID, _) => await launcherV2Callbacks.CompatibleVersion() + async (_, _, _, _) => await launcherV2Callbacks.CompatibleVersion() ), - new RouteAction("/launcher/v2/mods", async (url, _, sessionID, _) => await launcherV2Callbacks.Mods()), + new RouteAction("/launcher/v2/mods", async (_, _, _, _) => await launcherV2Callbacks.Mods()), new RouteAction( "/launcher/v2/profiles", - async (url, _, sessionID, _) => await launcherV2Callbacks.Profiles() + async (_, _, _, _) => await launcherV2Callbacks.Profiles() ), new RouteAction( "/launcher/v2/profile", - async (url, info, sessionID, _) => await launcherV2Callbacks.Profile(info) + async (_, info, _, _) => await launcherV2Callbacks.Profile(info) ), + new RouteAction( + "/launcher/v2/wipe", + async (_, info, _, _) => await launcherV2Callbacks.Wipe(info) + ) ] - ) { } + ) +{ +}