From 75140a5b588ffbdd1503861c4fce08f0d826f13a Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Tue, 24 Dec 2024 01:16:02 +1300 Subject: [PATCH] Allow creating admins on web --- src/matrix/api.js | 9 +++++---- src/web/pug/guild.pug | 1 + src/web/pug/invite.pug | 1 + src/web/routes/guild.js | 7 +++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/matrix/api.js b/src/matrix/api.js index a75f959..532e326 100644 --- a/src/matrix/api.js +++ b/src/matrix/api.js @@ -301,14 +301,15 @@ async function setUserPower(roomID, mxid, power) { /** * Set a user's power level for a whole room hierarchy. - * @param {string} roomID + * @param {string} spaceID * @param {string} mxid * @param {number} power */ -async function setUserPowerCascade(roomID, mxid, power) { - assert(roomID[0] === "!") +async function setUserPowerCascade(spaceID, mxid, power) { + assert(spaceID[0] === "!") assert(mxid[0] === "@") - const rooms = await getFullHierarchy(roomID) + const rooms = await getFullHierarchy(spaceID) + await setUserPower(spaceID, mxid, power) for (const room of rooms) { await setUserPower(room.room_id, mxid, power) } diff --git a/src/web/pug/guild.pug b/src/web/pug/guild.pug index 481ad01..d9ece95 100644 --- a/src/web/pug/guild.pug +++ b/src/web/pug/guild.pug @@ -64,6 +64,7 @@ block body select#permissions(name="permissions") option(value="default") Default option(value="moderator") Moderator + option(value="admin") Admin input(type="hidden" name="guild_id" value=guild_id) .grid--row-start2 button.s-btn.s-btn__filled.htmx-indicator Invite diff --git a/src/web/pug/invite.pug b/src/web/pug/invite.pug index 52b3ab2..7f7ff2e 100644 --- a/src/web/pug/invite.pug +++ b/src/web/pug/invite.pug @@ -27,6 +27,7 @@ block body select#permissions(name="permissions") option(value="default") Default option(value="moderator") Moderator + option(value="admin") Admin input(type="hidden" name="nonce" value=nonce) div button.s-btn.s-btn__filled.htmx-indicator Invite diff --git a/src/web/routes/guild.js b/src/web/routes/guild.js index fe24483..716314c 100644 --- a/src/web/routes/guild.js +++ b/src/web/routes/guild.js @@ -20,7 +20,7 @@ const schema = { }), invite: z.object({ mxid: z.string().regex(/@([^:]+):([a-z0-9:-]+\.[a-z0-9.:-]+)/), - permissions: z.enum(["default", "moderator"]), + permissions: z.enum(["default", "moderator", "admin"]), guild_id: z.string().optional(), nonce: z.string().optional() }), @@ -152,7 +152,10 @@ as.router.post("/api/invite", defineEventHandler(async event => { } // Permissions - const powerLevel = parsedBody.permissions === "moderator" ? 50 : 0 + const powerLevel = + ( parsedBody.permissions === "admin" ? 100 + : parsedBody.permissions === "moderator" ? 50 + : 0) await api.setUserPowerCascade(spaceID, parsedBody.mxid, powerLevel) if (parsedBody.guild_id) {