forked from OpenWF/SpaceNinjaServer
		
	feat(webui): delete account (#615)
This commit is contained in:
		
							parent
							
								
									066d07f8ba
								
							
						
					
					
						commit
						ba7da656a8
					
				
							
								
								
									
										19
									
								
								src/controllers/custom/deleteAccountController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/controllers/custom/deleteAccountController.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
 | 
					import { Account } from "@/src/models/loginModel";
 | 
				
			||||||
 | 
					import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
 | 
				
			||||||
 | 
					import { Loadout } from "@/src/models/inventoryModels/loadoutModel";
 | 
				
			||||||
 | 
					import { PersonalRooms } from "@/src/models/personalRoomsModel";
 | 
				
			||||||
 | 
					import { Ship } from "@/src/models/shipModel";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const deleteAccountController: RequestHandler = async (req, res) => {
 | 
				
			||||||
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
 | 
					    await Promise.all([
 | 
				
			||||||
 | 
					        Account.deleteOne({ _id: accountId }),
 | 
				
			||||||
 | 
					        Inventory.deleteOne({ accountOwnerId: accountId }),
 | 
				
			||||||
 | 
					        Loadout.deleteOne({ loadoutOwnerId: accountId }),
 | 
				
			||||||
 | 
					        PersonalRooms.deleteOne({ personalRoomsOwnerId: accountId }),
 | 
				
			||||||
 | 
					        Ship.deleteOne({ ShipOwnerId: accountId })
 | 
				
			||||||
 | 
					    ]);
 | 
				
			||||||
 | 
					    res.end();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -4,6 +4,7 @@ import { tunablesController } from "@/src/controllers/custom/tunablesController"
 | 
				
			|||||||
import { getItemListsController } from "@/src/controllers/custom/getItemListsController";
 | 
					import { getItemListsController } from "@/src/controllers/custom/getItemListsController";
 | 
				
			||||||
import { pushArchonCrystalUpgradeController } from "@/src/controllers/custom/pushArchonCrystalUpgradeController";
 | 
					import { pushArchonCrystalUpgradeController } from "@/src/controllers/custom/pushArchonCrystalUpgradeController";
 | 
				
			||||||
import { popArchonCrystalUpgradeController } from "@/src/controllers/custom/popArchonCrystalUpgradeController";
 | 
					import { popArchonCrystalUpgradeController } from "@/src/controllers/custom/popArchonCrystalUpgradeController";
 | 
				
			||||||
 | 
					import { deleteAccountController } from "@/src/controllers/custom/deleteAccountController";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { createAccountController } from "@/src/controllers/custom/createAccountController";
 | 
					import { createAccountController } from "@/src/controllers/custom/createAccountController";
 | 
				
			||||||
import { addItemController } from "@/src/controllers/custom/addItemController";
 | 
					import { addItemController } from "@/src/controllers/custom/addItemController";
 | 
				
			||||||
@ -17,6 +18,7 @@ customRouter.get("/tunables.json", tunablesController);
 | 
				
			|||||||
customRouter.get("/getItemLists", getItemListsController);
 | 
					customRouter.get("/getItemLists", getItemListsController);
 | 
				
			||||||
customRouter.get("/pushArchonCrystalUpgrade", pushArchonCrystalUpgradeController);
 | 
					customRouter.get("/pushArchonCrystalUpgrade", pushArchonCrystalUpgradeController);
 | 
				
			||||||
customRouter.get("/popArchonCrystalUpgrade", popArchonCrystalUpgradeController);
 | 
					customRouter.get("/popArchonCrystalUpgrade", popArchonCrystalUpgradeController);
 | 
				
			||||||
 | 
					customRouter.get("/deleteAccount", deleteAccountController);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
customRouter.post("/createAccount", createAccountController);
 | 
					customRouter.post("/createAccount", createAccountController);
 | 
				
			||||||
customRouter.post("/addItem", addItemController);
 | 
					customRouter.post("/addItem", addItemController);
 | 
				
			||||||
 | 
				
			|||||||
@ -38,6 +38,8 @@
 | 
				
			|||||||
                    <button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
 | 
					                    <button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
 | 
				
			||||||
                    <ul class="dropdown-menu dropdown-menu-end">
 | 
					                    <ul class="dropdown-menu dropdown-menu-end">
 | 
				
			||||||
                        <li><a class="dropdown-item" href="/webui/" onclick="logout();">Logout</a></li>
 | 
					                        <li><a class="dropdown-item" href="/webui/" onclick="logout();">Logout</a></li>
 | 
				
			||||||
 | 
					                        <li><hr class="dropdown-divider"></li>
 | 
				
			||||||
 | 
					                        <li><a class="dropdown-item" onclick="deleteAccount();">Delete Account</a></li>
 | 
				
			||||||
                    </ul>
 | 
					                    </ul>
 | 
				
			||||||
                </li>
 | 
					                </li>
 | 
				
			||||||
            </ul>
 | 
					            </ul>
 | 
				
			||||||
@ -47,13 +49,7 @@
 | 
				
			|||||||
        <div class="offcanvas-lg offcanvas-start" tabindex="-1" id="sidebar" aria-labelledby="sidebarLabel">
 | 
					        <div class="offcanvas-lg offcanvas-start" tabindex="-1" id="sidebar" aria-labelledby="sidebarLabel">
 | 
				
			||||||
            <div class="offcanvas-header">
 | 
					            <div class="offcanvas-header">
 | 
				
			||||||
                <h5 class="offcanvas-title" id="sidebarLabel">Sidebar</h5>
 | 
					                <h5 class="offcanvas-title" id="sidebarLabel">Sidebar</h5>
 | 
				
			||||||
                <button
 | 
					                <button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" aria-label="Close"></button>
 | 
				
			||||||
                type="button"
 | 
					 | 
				
			||||||
                class="btn-close"
 | 
					 | 
				
			||||||
                data-bs-dismiss="offcanvas"
 | 
					 | 
				
			||||||
                data-bs-target="#sidebar"
 | 
					 | 
				
			||||||
                aria-label="Close"
 | 
					 | 
				
			||||||
                ></button>
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="offcanvas-body">
 | 
					            <div class="offcanvas-body">
 | 
				
			||||||
                <div class="navbar p-0">
 | 
					                <div class="navbar p-0">
 | 
				
			||||||
 | 
				
			|||||||
@ -61,6 +61,23 @@ function logout() {
 | 
				
			|||||||
    localStorage.removeItem("password");
 | 
					    localStorage.removeItem("password");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function deleteAccount() {
 | 
				
			||||||
 | 
					    if (
 | 
				
			||||||
 | 
					        window.confirm(
 | 
				
			||||||
 | 
					            "Are you sure you want to delete your account " +
 | 
				
			||||||
 | 
					                $(".displayname").text() +
 | 
				
			||||||
 | 
					                " (" +
 | 
				
			||||||
 | 
					                localStorage.getItem("email") +
 | 
				
			||||||
 | 
					                ")? This action cannot be undone."
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					        fetch("/custom/deleteAccount?" + window.authz).then(function () {
 | 
				
			||||||
 | 
					            logout();
 | 
				
			||||||
 | 
					            single.loadRoute("/webui/"); // Show login screen
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (localStorage.getItem("email") && localStorage.getItem("password")) {
 | 
					if (localStorage.getItem("email") && localStorage.getItem("password")) {
 | 
				
			||||||
    loginFromLocalStorage();
 | 
					    loginFromLocalStorage();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user