Allow creating admins on web
This commit is contained in:
parent
c599dff590
commit
75140a5b58
4 changed files with 12 additions and 6 deletions
src
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue