forked from cadence/out-of-your-element
Compare commits
3 commits
9e0e0023f0
...
ce47199ba3
| Author | SHA1 | Date | |
|---|---|---|---|
| ce47199ba3 | |||
| 00bcdb0eb1 | |||
| 738921241a |
2 changed files with 10 additions and 27 deletions
|
|
@ -1,6 +0,0 @@
|
||||||
[*]
|
|
||||||
indent_style = tab
|
|
||||||
|
|
||||||
[*.pug]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
@ -41,41 +41,29 @@ function getCreateSpace(event) {
|
||||||
return event.context.createSpace || sync.require("../../d2m/actions/create-space")
|
return event.context.createSpace || sync.require("../../d2m/actions/create-space")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {H3Event} event
|
|
||||||
* @param {string} guild_id
|
|
||||||
*/
|
|
||||||
async function validateUserHaveRightsOnGuild(event, guild_id) {
|
async function validateUserHaveRightsOnGuild(event, guild_id) {
|
||||||
const managed = await auth.getManagedGuilds(event)
|
const managed = await auth.getManagedGuilds(event)
|
||||||
if (!managed.has(guild_id))
|
if (!managed.has(guild_id))
|
||||||
throw createError({status: 403, message: "Forbidden", data: "Can't edit a guild you don't have Manage Server permissions in"})
|
throw createError({status: 403, message: "Forbidden", data: "Can't edit a guild you don't have Manage Server permissions in"})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function validateBotIsInGuild(guild) {
|
||||||
* @param {H3Event} event
|
if (!guild)
|
||||||
* @param {string} guild_id
|
throw createError({status: 400, message: "Bad Request", data: "Discord guild does not exist or bot has not joined it"})
|
||||||
* @returns {Promise<DiscordTypes.APIGuild & {members: DiscordTypes.APIGuildMember[]}>}
|
}
|
||||||
*/
|
|
||||||
async function validateGuildAccess(event, guild_id) {
|
async function validateGuildAccess(event, guild_id) {
|
||||||
// Check guild ID or nonce
|
// Check guild ID or nonce
|
||||||
await validateUserHaveRightsOnGuild(event, guild_id)
|
await validateUserHaveRightsOnGuild(event, guild_id)
|
||||||
|
|
||||||
// Check guild exists
|
// Check guild exists
|
||||||
const guild = discord.guilds.get(guild_id)
|
const guild = discord.guilds.get(guild_id)
|
||||||
if (!guild)
|
validateBotIsInGuild(guild)
|
||||||
throw createError({status: 400, message: "Bad Request", data: "Discord guild does not exist or bot has not joined it"})
|
|
||||||
|
|
||||||
return guild
|
return guild
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
async function doRoomUnlink(createRoom, channel_id, guild_id) {
|
||||||
* @param {H3Event} event
|
|
||||||
* @param {string} channel_id
|
|
||||||
* @param {string} guild_id
|
|
||||||
*/
|
|
||||||
async function doRoomUnlink(event, channel_id, guild_id) {
|
|
||||||
const createRoom = getCreateRoom(event)
|
|
||||||
|
|
||||||
// Check that the channel (if it exists) is part of this guild
|
// Check that the channel (if it exists) is part of this guild
|
||||||
/** @type {any} */
|
/** @type {any} */
|
||||||
let channel = discord.channels.get(channel_id)
|
let channel = discord.channels.get(channel_id)
|
||||||
|
|
@ -170,7 +158,7 @@ as.router.post("/api/link", defineEventHandler(async event => {
|
||||||
const createSpace = getCreateSpace(event)
|
const createSpace = getCreateSpace(event)
|
||||||
|
|
||||||
const guildID = parsedBody.guild_id
|
const guildID = parsedBody.guild_id
|
||||||
const guild = await validateGuildAccess(event, guildID)
|
guild = await validateGuildAccess(event, guildID)
|
||||||
const spaceID = await createSpace.ensureSpace(guild)
|
const spaceID = await createSpace.ensureSpace(guild)
|
||||||
|
|
||||||
// Check channel exists
|
// Check channel exists
|
||||||
|
|
@ -234,9 +222,10 @@ as.router.post("/api/link", defineEventHandler(async event => {
|
||||||
|
|
||||||
as.router.post("/api/unlink", defineEventHandler(async event => {
|
as.router.post("/api/unlink", defineEventHandler(async event => {
|
||||||
const {channel_id, guild_id} = await readValidatedBody(event, schema.unlink.parse)
|
const {channel_id, guild_id} = await readValidatedBody(event, schema.unlink.parse)
|
||||||
|
const createRoom = getCreateRoom(event)
|
||||||
await validateGuildAccess(event, guild_id)
|
await validateGuildAccess(event, guild_id)
|
||||||
|
|
||||||
await doRoomUnlink(event, channel_id, guild_id)
|
await doRoomUnlink(createRoom, channel_id, guild_id)
|
||||||
|
|
||||||
setResponseHeader(event, "HX-Refresh", "true")
|
setResponseHeader(event, "HX-Refresh", "true")
|
||||||
return null // 204
|
return null // 204
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue