diff options
author | Sam Wilkins <samwilkins333@gmail.com> | 2020-05-17 17:46:30 -0700 |
---|---|---|
committer | Sam Wilkins <samwilkins333@gmail.com> | 2020-05-17 17:46:30 -0700 |
commit | 69e411884fb0a4be2edbf0816888a5fb93b96c7d (patch) | |
tree | 1d54ad9790fa75a84287edf3f037ea7c0081980f /src/server/ApiManagers/DeleteManager.ts | |
parent | 35b335eecd1ace5a1b3da04de3ee1e8674d10c15 (diff) |
cleanup
Diffstat (limited to 'src/server/ApiManagers/DeleteManager.ts')
-rw-r--r-- | src/server/ApiManagers/DeleteManager.ts | 79 |
1 files changed, 21 insertions, 58 deletions
diff --git a/src/server/ApiManagers/DeleteManager.ts b/src/server/ApiManagers/DeleteManager.ts index dcb21c30d..46c0d8a8a 100644 --- a/src/server/ApiManagers/DeleteManager.ts +++ b/src/server/ApiManagers/DeleteManager.ts @@ -3,7 +3,7 @@ import { Method, _permission_denied } from "../RouteManager"; import { WebSocket } from "../websocket"; import { Database } from "../database"; import rimraf = require("rimraf"); -import { filesDirectory, AdminPriviliges } from ".."; +import { filesDirectory } from ".."; import { DashUploadUtils } from "../DashUploadUtils"; import { mkdirSync } from "fs"; import RouteSubscriber from "../RouteSubscriber"; @@ -14,72 +14,35 @@ export default class DeleteManager extends ApiManager { register({ method: Method.GET, + requireAdminInRelease: true, subscription: new RouteSubscriber("delete").add("target?"), - secureHandler: async ({ req, res, isRelease, user: { id } }) => { + secureHandler: async ({ req, res }) => { const { target } = req.params; - if (isRelease && process.env.PASSWORD) { - if (AdminPriviliges.get(id)) { - AdminPriviliges.delete(id); - } else { - return res.redirect(`/admin/delete${target ? `:${target}` : ``}`); + + if (!target) { + await WebSocket.doDelete(); + } else { + let all = false; + switch (target) { + case "all": + all = true; + case "database": + await WebSocket.doDelete(false); + if (!all) break; + case "files": + rimraf.sync(filesDirectory); + mkdirSync(filesDirectory); + await DashUploadUtils.buildFileDirectories(); + break; + default: + await Database.Instance.dropSchema(target); } } - this.doDelete(target); res.redirect("/home"); } }); - register({ - method: Method.GET, - subscription: new RouteSubscriber("admin").add("previous_target"), - secureHandler: ({ res }) => res.render("admin.pug", { title: "Enter Administrator Password" }) - }) - - register({ - method: Method.POST, - subscription: new RouteSubscriber("admin").add("previous_target"), - secureHandler: async ({ req, res, isRelease, user: { id } }) => { - const { PASSWORD } = process.env; - if (!(isRelease && PASSWORD)) { - return res.redirect("/home"); - } - const { password } = req.body; - const { previous_target } = req.params; - let redirect: string; - if (password === PASSWORD) { - AdminPriviliges.set(id, true); - redirect = `/${previous_target.replace(":", "/")}`; - } else { - redirect = `/admin/${previous_target}`; - } - res.redirect(redirect); - } - }) - - } - - - private doDelete = async (target?: string) => { - if (!target) { - await WebSocket.doDelete(); - } else { - let all = false; - switch (target) { - case "all": - all = true; - case "database": - await WebSocket.doDelete(false); - if (!all) break; - case "files": - rimraf.sync(filesDirectory); - mkdirSync(filesDirectory); - await DashUploadUtils.buildFileDirectories(); - break; - default: - await Database.Instance.dropSchema(target); - } - } } }
\ No newline at end of file |