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 { pushArchonCrystalUpgradeController } from "@/src/controllers/custom/pushArchonCrystalUpgradeController";
 | 
			
		||||
import { popArchonCrystalUpgradeController } from "@/src/controllers/custom/popArchonCrystalUpgradeController";
 | 
			
		||||
import { deleteAccountController } from "@/src/controllers/custom/deleteAccountController";
 | 
			
		||||
 | 
			
		||||
import { createAccountController } from "@/src/controllers/custom/createAccountController";
 | 
			
		||||
import { addItemController } from "@/src/controllers/custom/addItemController";
 | 
			
		||||
@ -17,6 +18,7 @@ customRouter.get("/tunables.json", tunablesController);
 | 
			
		||||
customRouter.get("/getItemLists", getItemListsController);
 | 
			
		||||
customRouter.get("/pushArchonCrystalUpgrade", pushArchonCrystalUpgradeController);
 | 
			
		||||
customRouter.get("/popArchonCrystalUpgrade", popArchonCrystalUpgradeController);
 | 
			
		||||
customRouter.get("/deleteAccount", deleteAccountController);
 | 
			
		||||
 | 
			
		||||
customRouter.post("/createAccount", createAccountController);
 | 
			
		||||
customRouter.post("/addItem", addItemController);
 | 
			
		||||
 | 
			
		||||
@ -38,6 +38,8 @@
 | 
			
		||||
                    <button class="nav-link dropdown-toggle displayname" data-bs-toggle="dropdown" aria-expanded="false"></button>
 | 
			
		||||
                    <ul class="dropdown-menu dropdown-menu-end">
 | 
			
		||||
                        <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>
 | 
			
		||||
                </li>
 | 
			
		||||
            </ul>
 | 
			
		||||
@ -47,13 +49,7 @@
 | 
			
		||||
        <div class="offcanvas-lg offcanvas-start" tabindex="-1" id="sidebar" aria-labelledby="sidebarLabel">
 | 
			
		||||
            <div class="offcanvas-header">
 | 
			
		||||
                <h5 class="offcanvas-title" id="sidebarLabel">Sidebar</h5>
 | 
			
		||||
                <button
 | 
			
		||||
                type="button"
 | 
			
		||||
                class="btn-close"
 | 
			
		||||
                data-bs-dismiss="offcanvas"
 | 
			
		||||
                data-bs-target="#sidebar"
 | 
			
		||||
                aria-label="Close"
 | 
			
		||||
                ></button>
 | 
			
		||||
                <button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#sidebar" aria-label="Close"></button>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="offcanvas-body">
 | 
			
		||||
                <div class="navbar p-0">
 | 
			
		||||
 | 
			
		||||
@ -61,6 +61,23 @@ function logout() {
 | 
			
		||||
    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")) {
 | 
			
		||||
    loginFromLocalStorage();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user