From e9c68d0280bd5413a9143de875278715f45192a9 Mon Sep 17 00:00:00 2001 From: stringsplit <77242831+nbitzz@users.noreply.github.com> Date: Sun, 2 Jul 2023 23:35:38 -0700 Subject: [PATCH] Delete file --- src/server/routes/adminRoutes.ts | 36 +++++++++++++++++++++++ src/svelte/elem/prompts/admin.js | 30 +++++++++++++++++++ src/svelte/elem/pulldowns/Accounts.svelte | 2 +- 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/src/server/routes/adminRoutes.ts b/src/server/routes/adminRoutes.ts index d6ae04e..13e680b 100644 --- a/src/server/routes/adminRoutes.ts +++ b/src/server/routes/adminRoutes.ts @@ -60,10 +60,46 @@ adminRoutes.post("/reset", parser, (req,res) => { } Accounts.password.set ( targetAccount.id, req.body.password ) + auth.AuthTokens.filter(e => e.account == targetAccount?.id).forEach((v) => { + auth.invalidate(v.token) + }) res.send() }) +adminRoutes.post("/delete", parser, (req,res) => { + + if (!auth.validate(req.cookies.auth)) { + ServeError(res, 401, "not logged in") + return + } + + let acc = Accounts.getFromToken(req.cookies.auth) as Accounts.Account + + if (!acc) return + if (!acc.admin) return + if (typeof req.body.target !== "string") { + res.status(404) + res.send() + return + } + + let targetFile = files.getFilePointer(req.body.target) + + if (!targetFile) { + res.status(404) + res.send() + return + } + + files.unlink(req.body.target).then(() => { + res.status(200) + }).catch(() => { + res.status(500) + }).finally(() => res.send()) + +}) + adminRoutes.post("/transfer", parser, (req,res) => { if (!auth.validate(req.cookies.auth)) { diff --git a/src/svelte/elem/prompts/admin.js b/src/svelte/elem/prompts/admin.js index f400d84..4b07a99 100644 --- a/src/svelte/elem/prompts/admin.js +++ b/src/svelte/elem/prompts/admin.js @@ -70,6 +70,36 @@ export function chgOwner(optPicker) { optPicker.picker(`${response.status} ${response.statusText}`,[]) } + }) + } + }) +} + +export function delFile(optPicker) { + optPicker.picker("Delete file",[ + { + name: "File ID", + icon: "/static/assets/icons/file.svg", + id: "file", + inputSettings: {} + }, + { + name: "Delete", + icon: "/static/assets/icons/admin/delete_file.svg", + description: "This can't be undone", + id: true + } + ]).then((exp) => { + if (exp && exp.selected) { + fetch(`/admin/delete`,{method:"POST", body:JSON.stringify({ + owner: exp.owner, + target: exp.file + })}).then((response) => { + + if (response.status != 200) { + optPicker.picker(`${response.status} ${response.statusText}`,[]) + } + }) } }) diff --git a/src/svelte/elem/pulldowns/Accounts.svelte b/src/svelte/elem/pulldowns/Accounts.svelte index e356b33..b6ec26c 100644 --- a/src/svelte/elem/pulldowns/Accounts.svelte +++ b/src/svelte/elem/pulldowns/Accounts.svelte @@ -208,7 +208,7 @@

Change file owner

-