forked from cadence/out-of-your-element
		
	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.
 | 
			
		||||
 * @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…
	
	Add table
		Add a link
		
	
		Reference in a new issue