From e1c1de3feec183228a68876bbc948628ae83572e Mon Sep 17 00:00:00 2001 From: Arthur Lu Date: Mon, 14 Sep 2026 18:53:15 +0000 Subject: [PATCH] move mv-isos and ct-templates paths to /access/users/:username/... --- src/routes/access/users.js | 79 ++++++++++++++++++++++++++++++++++++++ src/routes/user.js | 65 ------------------------------- 2 files changed, 79 insertions(+), 65 deletions(-) delete mode 100644 src/routes/user.js diff --git a/src/routes/access/users.js b/src/routes/access/users.js index 8b98a50..9b6ce27 100644 --- a/src/routes/access/users.js +++ b/src/routes/access/users.js @@ -1,6 +1,9 @@ import { Router } from "express"; export const router = Router({ mergeParams: true }); +const config = global.config; +const checkAuth = global.utils.checkAuth; + /** * GET - get specific user * request: @@ -35,3 +38,79 @@ router.get("/:username", async (req, res) => { res.status(200).send({ user }); }); + +/** + * GET - get user accessible iso files + * response: + * - 200: Array. + * - 401: {auth: false} + */ +router.get("/:username/vm-isos", async (req, res) => { + const params = { + username: req.params.username + }; + // check auth + const auth = await checkAuth(req.cookies, res); + if (!auth) { + return; + } + // check requested username is current user + if (req.cookies.username !== params.username) { + res.status(401).send({ auth: false }); + return; + } + // get user iso config + const userIsoConfig = config.useriso; + // get all isos + const content = await global.pve.requestPVE(`/nodes/${userIsoConfig.node}/storage/${userIsoConfig.storage}/content?content=iso`, "GET", { token: true }); + if (content.status !== 200) { + res.status(content.status).send({ error: content.statusText }); + return; + } + const isos = content.data; + const userIsos = []; + isos.forEach((iso) => { + iso.name = iso.volid.replace(`${userIsoConfig.storage}:iso/`, ""); + userIsos.push(iso); + }); + userIsos.sort(); + res.status(200).send(userIsos); +}); + +/** + * GET - get user accessible container template files + * response: + * - 200: Array. + * - 401: {auth: false} + */ +router.get("/:username/ct-templates", async (req, res) => { + const params = { + username: req.params.username + }; + // check auth + const auth = await checkAuth(req.cookies, res); + if (!auth) { + return; + } + // check requested username is current user + if (req.cookies.username !== params.username) { + res.status(401).send({ auth: false }); + return; + } + // get user iso config + const userIsoConfig = config.useriso; + // get all isos + const content = await global.pve.requestPVE(`/nodes/${userIsoConfig.node}/storage/${userIsoConfig.storage}/content?content=vztmpl`, "GET", { token: true }); + if (content.status !== 200) { + res.status(content.status).send({ error: content.statusText }); + return; + } + const isos = content.data; + const userIsos = []; + isos.forEach((iso) => { + iso.name = iso.volid.replace(`${userIsoConfig.storage}:vztmpl/`, ""); + userIsos.push(iso); + }); + userIsos.sort(); + res.status(200).send(userIsos); +}); diff --git a/src/routes/user.js b/src/routes/user.js deleted file mode 100644 index 4eb80ca..0000000 --- a/src/routes/user.js +++ /dev/null @@ -1,65 +0,0 @@ -import { Router } from "express"; -export const router = Router({ mergeParams: true }); ; - -const config = global.config; -const checkAuth = global.utils.checkAuth; - -/** - * GET - get user accessible iso files - * response: - * - 200: Array. - * - 401: {auth: false} - */ -router.get("/vm-isos", async (req, res) => { - // check auth - const auth = await checkAuth(req.cookies, res); - if (!auth) { - return; - } - // get user iso config - const userIsoConfig = config.useriso; - // get all isos - const content = await global.pve.requestPVE(`/nodes/${userIsoConfig.node}/storage/${userIsoConfig.storage}/content?content=iso`, "GET", { token: true }); - if (content.status !== 200) { - res.status(content.status).send({ error: content.statusText }); - return; - } - const isos = content.data; - const userIsos = []; - isos.forEach((iso) => { - iso.name = iso.volid.replace(`${userIsoConfig.storage}:iso/`, ""); - userIsos.push(iso); - }); - userIsos.sort(); - res.status(200).send(userIsos); -}); - -/** - * GET - get user accessible container template files - * response: - * - 200: Array. - * - 401: {auth: false} - */ -router.get("/ct-templates", async (req, res) => { - // check auth - const auth = await checkAuth(req.cookies, res); - if (!auth) { - return; - } - // get user iso config - const userIsoConfig = config.useriso; - // get all isos - const content = await global.pve.requestPVE(`/nodes/${userIsoConfig.node}/storage/${userIsoConfig.storage}/content?content=vztmpl`, "GET", { token: true }); - if (content.status !== 200) { - res.status(content.status).send({ error: content.statusText }); - return; - } - const isos = content.data; - const userIsos = []; - isos.forEach((iso) => { - iso.name = iso.volid.replace(`${userIsoConfig.storage}:vztmpl/`, ""); - userIsos.push(iso); - }); - userIsos.sort(); - res.status(200).send(userIsos); -});