aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers/DeleteManager.ts
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2020-05-17 17:46:30 -0700
committerSam Wilkins <samwilkins333@gmail.com>2020-05-17 17:46:30 -0700
commit69e411884fb0a4be2edbf0816888a5fb93b96c7d (patch)
tree1d54ad9790fa75a84287edf3f037ea7c0081980f /src/server/ApiManagers/DeleteManager.ts
parent35b335eecd1ace5a1b3da04de3ee1e8674d10c15 (diff)
cleanup
Diffstat (limited to 'src/server/ApiManagers/DeleteManager.ts')
-rw-r--r--src/server/ApiManagers/DeleteManager.ts79
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