返回提交历史
Added
src/controllers/custom/deleteAccountController.ts
+19
-0
Modified
src/routes/custom.ts
+2
-0
Modified
static/webui/index.html
+3
-7
Modified
static/webui/script.js
+17
-0
XFEstudio/XFESpaceNinjaServer
feat(webui): delete account (#615)
ba7da656
代码差异
4 个文件
+41
-7
@@ -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
};
@@ -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);
@@ -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">
@@ -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
}