XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

feat(webui): delete account (#615)

ba7da656
Sainan <sainan@calamity.inc>
提交于

代码差异

4 个文件 +41 -7
Added src/controllers/custom/deleteAccountController.ts +19 -0
@@ -0,0 +1,19 @@
1 import { RequestHandler } from "express";
2 import { getAccountIdForRequest } from "@/src/services/loginService";
3 import { Account } from "@/src/models/loginModel";
4 import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
5 import { Loadout } from "@/src/models/inventoryModels/loadoutModel";
6 import { PersonalRooms } from "@/src/models/personalRoomsModel";
7 import { Ship } from "@/src/models/shipModel";
8
9 export const deleteAccountController: RequestHandler = async (req, res) => {
10 const accountId = await getAccountIdForRequest(req);
11 await Promise.all([
12 Account.deleteOne({ _id: accountId }),
13 Inventory.deleteOne({ accountOwnerId: accountId }),
14 Loadout.deleteOne({ loadoutOwnerId: accountId }),
15 PersonalRooms.deleteOne({ personalRoomsOwnerId: accountId }),
16 Ship.deleteOne({ ShipOwnerId: accountId })
17 ]);
18 res.end();
19 };
Modified src/routes/custom.ts +2 -0
@@ -4,6 +4,7 @@ import { tunablesController } from "@/src/controllers/custom/tunablesController"
4 4 import { getItemListsController } from "@/src/controllers/custom/getItemListsController";
5 5 import { pushArchonCrystalUpgradeController } from "@/src/controllers/custom/pushArchonCrystalUpgradeController";
6 6 import { popArchonCrystalUpgradeController } from "@/src/controllers/custom/popArchonCrystalUpgradeController";
7 import { deleteAccountController } from "@/src/controllers/custom/deleteAccountController";
7 8
8 9 import { createAccountController } from "@/src/controllers/custom/createAccountController";
9 10 import { addItemController } from "@/src/controllers/custom/addItemController";
@@ -17,6 +18,7 @@ customRouter.get("/tunables.json", tunablesController);
17 18 customRouter.get("/getItemLists", getItemListsController);
18 19 customRouter.get("/pushArchonCrystalUpgrade", pushArchonCrystalUpgradeController);
19 20 customRouter.get("/popArchonCrystalUpgrade", popArchonCrystalUpgradeController);
21 customRouter.get("/deleteAccount", deleteAccountController);
20 22
21 23 customRouter.post("/createAccount", createAccountController);
22 24 customRouter.post("/addItem", addItemController);
Modified static/webui/index.html +3 -7
@@ -38,6 +38,8 @@
38 38 <button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
39 39 <ul class="dropdown-menu dropdown-menu-end">
40 40 <li><a class="dropdown-item" href="/webui/" onclick="logout();">Logout</a></li>
41 <li><hr class="dropdown-divider"></li>
42 <li><a class="dropdown-item" onclick="deleteAccount();">Delete Account</a></li>
41 43 </ul>
42 44 </li>
43 45 </ul>
@@ -47,13 +49,7 @@
47 49 <div class="offcanvas-lg offcanvas-start" tabindex="-1" id="sidebar" aria-labelledby="sidebarLabel">
48 50 <div class="offcanvas-header">
49 51 <h5 class="offcanvas-title" id="sidebarLabel">Sidebar</h5>
50 <button
51 type="button"
52 class="btn-close"
53 data-bs-dismiss="offcanvas"
54 data-bs-target="#sidebar"
55 aria-label="Close"
56 ></button>
52 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" aria-label="Close"></button>
57 53 </div>
58 54 <div class="offcanvas-body">
59 55 <div class="navbar p-0">
Modified static/webui/script.js +17 -0
@@ -61,6 +61,23 @@ function logout() {
61 61 localStorage.removeItem("password");
62 62 }
63 63
64 function deleteAccount() {
65 if (
66 window.confirm(
67 "Are you sure you want to delete your account " +
68 $(".displayname").text() +
69 " (" +
70 localStorage.getItem("email") +
71 ")? This action cannot be undone."
72 )
73 ) {
74 fetch("/custom/deleteAccount?" + window.authz).then(function () {
75 logout();
76 single.loadRoute("/webui/"); // Show login screen
77 });
78 }
79 }
80
64 81 if (localStorage.getItem("email") && localStorage.getItem("password")) {
65 82 loginFromLocalStorage();
66 83 }