diff --git a/assets/icons/admin/change_file_id.svg b/assets/icons/admin/change_file_id.svg new file mode 100644 index 0000000..f3c5ba5 --- /dev/null +++ b/assets/icons/admin/change_file_id.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package.json b/package.json index 796dd97..0b5e312 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "author": "nbitzz", "license": "Unlicense", "engines": { - "node": ">=v18" + "node": ">=v16.11" }, "dependencies": { "@types/body-parser": "^1.19.2", diff --git a/src/server/routes/adminRoutes.ts b/src/server/routes/adminRoutes.ts index 7b24baa..281220f 100644 --- a/src/server/routes/adminRoutes.ts +++ b/src/server/routes/adminRoutes.ts @@ -84,8 +84,6 @@ adminRoutes.post("/elevate", parser, (req,res) => { }) adminRoutes.post("/delete", parser, (req,res) => { - - let acc = res.locals.acc as Accounts.Account if (typeof req.body.target !== "string") { res.status(404) @@ -153,8 +151,6 @@ adminRoutes.post("/delete_account", parser, async (req,res) => { }) adminRoutes.post("/transfer", parser, (req,res) => { - - let acc = res.locals.acc as Accounts.Account if (typeof req.body.target !== "string" || typeof req.body.owner !== "string") { res.status(404) @@ -192,4 +188,37 @@ adminRoutes.post("/transfer", parser, (req,res) => { res.send() }) // wasting a reassignment but whatee +}) + +adminRoutes.post("/transfer", parser, (req,res) => { + + if (typeof req.body.target !== "string" || typeof req.body.new !== "string") { + res.status(404) + res.send() + return + } + + let targetFile = files.getFilePointer(req.body.target) + if (!targetFile) { + res.status(404) + res.send() + return + } + + if (files.getFilePointer(req.body.new)) { + res.status(400) + res.send() + return + } + + delete files.files[req.body.target] + + files.writeFile(req.body.new, targetFile).then(() => { + res.send() + }).catch(() => { + files.files[req.body.target] = req.body.new + res.status(500) + res.send() + }) + }) \ No newline at end of file diff --git a/src/svelte/elem/prompts/admin.js b/src/svelte/elem/prompts/admin.js index b0156f3..8946845 100644 --- a/src/svelte/elem/prompts/admin.js +++ b/src/svelte/elem/prompts/admin.js @@ -75,6 +75,42 @@ export function chgOwner(optPicker) { }) } +export function chgId(optPicker) { + optPicker.picker("Change file ID",[ + { + name: "Target file", + icon: "/static/assets/icons/file.svg", + id: "file", + inputSettings: {} + }, + { + name: "New ID", + icon: "/static/assets/icons/change_file_id.svg", + id: "new", + inputSettings: {} + }, + { + name: "Update", + icon: "/static/assets/icons/update.svg", + description: "File will not be available at its old ID", + id: true + } + ]).then((exp) => { + if (exp && exp.selected) { + fetch(`/admin/idchange`,{method:"POST", body:JSON.stringify({ + target: exp.file, + new: exp.new + })}).then((response) => { + + if (response.status != 200) { + optPicker.picker(`${response.status} ${response.headers.get("x-backup-status-message") || response.statusText || ""}`,[]) + } + + }) + } + }) +} + export function delFile(optPicker) { optPicker.picker("Delete file",[ { diff --git a/src/svelte/elem/pulldowns/Accounts.svelte b/src/svelte/elem/pulldowns/Accounts.svelte index f02efc3..c40719b 100644 --- a/src/svelte/elem/pulldowns/Accounts.svelte +++ b/src/svelte/elem/pulldowns/Accounts.svelte @@ -228,6 +228,11 @@

Change file owner

+ +