feat(webui): delete account
This commit is contained in:
		
							parent
							
								
									d5c829e4fe
								
							
						
					
					
						commit
						2a9d2a3be6
					
				
							
								
								
									
										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>
 | 
				
			||||||
 | 
				
			|||||||
@ -61,6 +61,15 @@ 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