Allow creating admins on web
This commit is contained in:
parent
c599dff590
commit
75140a5b58
4 changed files with 12 additions and 6 deletions
|
@ -301,14 +301,15 @@ async function setUserPower(roomID, mxid, power) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a user's power level for a whole room hierarchy.
|
* Set a user's power level for a whole room hierarchy.
|
||||||
* @param {string} roomID
|
* @param {string} spaceID
|
||||||
* @param {string} mxid
|
* @param {string} mxid
|
||||||
* @param {number} power
|
* @param {number} power
|
||||||
*/
|
*/
|
||||||
async function setUserPowerCascade(roomID, mxid, power) {
|
async function setUserPowerCascade(spaceID, mxid, power) {
|
||||||
assert(roomID[0] === "!")
|
assert(spaceID[0] === "!")
|
||||||
assert(mxid[0] === "@")
|
assert(mxid[0] === "@")
|
||||||
const rooms = await getFullHierarchy(roomID)
|
const rooms = await getFullHierarchy(spaceID)
|
||||||
|
await setUserPower(spaceID, mxid, power)
|
||||||
for (const room of rooms) {
|
for (const room of rooms) {
|
||||||
await setUserPower(room.room_id, mxid, power)
|
await setUserPower(room.room_id, mxid, power)
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,7 @@ block body
|
||||||
select#permissions(name="permissions")
|
select#permissions(name="permissions")
|
||||||
option(value="default") Default
|
option(value="default") Default
|
||||||
option(value="moderator") Moderator
|
option(value="moderator") Moderator
|
||||||
|
option(value="admin") Admin
|
||||||
input(type="hidden" name="guild_id" value=guild_id)
|
input(type="hidden" name="guild_id" value=guild_id)
|
||||||
.grid--row-start2
|
.grid--row-start2
|
||||||
button.s-btn.s-btn__filled.htmx-indicator Invite
|
button.s-btn.s-btn__filled.htmx-indicator Invite
|
||||||
|
|
|
@ -27,6 +27,7 @@ block body
|
||||||
select#permissions(name="permissions")
|
select#permissions(name="permissions")
|
||||||
option(value="default") Default
|
option(value="default") Default
|
||||||
option(value="moderator") Moderator
|
option(value="moderator") Moderator
|
||||||
|
option(value="admin") Admin
|
||||||
input(type="hidden" name="nonce" value=nonce)
|
input(type="hidden" name="nonce" value=nonce)
|
||||||
div
|
div
|
||||||
button.s-btn.s-btn__filled.htmx-indicator Invite
|
button.s-btn.s-btn__filled.htmx-indicator Invite
|
||||||
|
|
|
@ -20,7 +20,7 @@ const schema = {
|
||||||
}),
|
}),
|
||||||
invite: z.object({
|
invite: z.object({
|
||||||
mxid: z.string().regex(/@([^:]+):([a-z0-9:-]+\.[a-z0-9.:-]+)/),
|
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(),
|
guild_id: z.string().optional(),
|
||||||
nonce: z.string().optional()
|
nonce: z.string().optional()
|
||||||
}),
|
}),
|
||||||
|
@ -152,7 +152,10 @@ as.router.post("/api/invite", defineEventHandler(async event => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Permissions
|
// 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)
|
await api.setUserPowerCascade(spaceID, parsedBody.mxid, powerLevel)
|
||||||
|
|
||||||
if (parsedBody.guild_id) {
|
if (parsedBody.guild_id) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue