Skip to content

Commit 46d87d7

Browse files
committed
server owner is unauthorized
1 parent 7d21e04 commit 46d87d7

4 files changed

Lines changed: 55 additions & 17 deletions

File tree

dash/src/pages/api/server/[serverId]/guild-data.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,20 @@ export default async function handler(
1919

2020
// Check if user has access to this guild
2121
try {
22+
const accessToken = (session as any).accessToken
23+
24+
if (!accessToken) {
25+
return res.status(401).json({ error: 'Authentication token missing. Please sign out and sign in again.' })
26+
}
27+
2228
const guildsResponse = await fetch('https://discord.com/api/v10/users/@me/guilds', {
2329
headers: {
24-
Authorization: `Bearer ${(session as any).accessToken}`,
30+
Authorization: `Bearer ${accessToken}`,
2531
},
2632
})
2733

2834
if (!guildsResponse.ok) {
29-
return res.status(401).json({ error: 'Failed to verify guild access' })
35+
return res.status(401).json({ error: 'Failed to verify guild access. Please sign out and sign in again.' })
3036
}
3137

3238
const userGuilds = await guildsResponse.json()
@@ -36,8 +42,10 @@ export default async function handler(
3642
return res.status(403).json({ error: 'You do not have access to this server' })
3743
}
3844

39-
// Check if user has MANAGE_GUILD permission (0x20 = 32) or is owner
40-
const hasPermission = guild.owner || (parseInt(guild.permissions) & 0x20) === 0x20
45+
// Check if user has MANAGE_GUILD permission (0x20) or is owner
46+
const permissions = BigInt(guild.permissions)
47+
const hasManageGuild = (permissions & BigInt(0x20)) === BigInt(0x20)
48+
const hasPermission = guild.owner || hasManageGuild
4149

4250
if (!hasPermission) {
4351
return res.status(403).json({ error: 'You do not have permission to manage this server' })

dash/src/pages/api/server/[serverId]/leaderboard.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,20 @@ export default async function handler(
4848

4949
// Check if user has access to this guild
5050
try {
51+
const accessToken = (session as any).accessToken
52+
53+
if (!accessToken) {
54+
return res.status(401).json({ error: 'Authentication token missing. Please sign out and sign in again.' })
55+
}
56+
5157
const guildsResponse = await fetch('https://discord.com/api/v10/users/@me/guilds', {
5258
headers: {
53-
Authorization: `Bearer ${(session as any).accessToken}`,
59+
Authorization: `Bearer ${accessToken}`,
5460
},
5561
})
5662

5763
if (!guildsResponse.ok) {
58-
return res.status(401).json({ error: 'Failed to verify guild access' })
64+
return res.status(401).json({ error: 'Failed to verify guild access. Please sign out and sign in again.' })
5965
}
6066

6167
const userGuilds = await guildsResponse.json()
@@ -65,8 +71,10 @@ export default async function handler(
6571
return res.status(403).json({ error: 'You do not have access to this server' })
6672
}
6773

68-
// Check if user has MANAGE_GUILD permission (0x20 = 32) or is owner
69-
const hasPermission = guild.owner || (parseInt(guild.permissions) & 0x20) === 0x20
74+
// Check if user has MANAGE_GUILD permission (0x20) or is owner
75+
const permissions = BigInt(guild.permissions)
76+
const hasManageGuild = (permissions & BigInt(0x20)) === BigInt(0x20)
77+
const hasPermission = guild.owner || hasManageGuild
7078

7179
if (!hasPermission) {
7280
return res.status(403).json({ error: 'You do not have permission to manage this server' })

dash/src/pages/api/server/[serverId]/settings.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,45 @@ export default async function handler(
2121

2222
// Check if user has access to this guild
2323
try {
24+
const accessToken = (session as any).accessToken
25+
console.log('[API] Checking guild access for user, serverId:', serverId, 'hasToken:', !!accessToken)
26+
27+
if (!accessToken) {
28+
console.error('[API] No access token in session')
29+
return res.status(401).json({ error: 'Authentication token missing. Please sign out and sign in again.' })
30+
}
31+
2432
const guildsResponse = await fetch('https://discord.com/api/v10/users/@me/guilds', {
2533
headers: {
26-
Authorization: `Bearer ${(session as any).accessToken}`,
34+
Authorization: `Bearer ${accessToken}`,
2735
},
2836
})
2937

3038
if (!guildsResponse.ok) {
31-
return res.status(401).json({ error: 'Failed to verify guild access' })
39+
console.error('[API] Failed to fetch user guilds:', guildsResponse.status, guildsResponse.statusText)
40+
return res.status(401).json({ error: 'Failed to verify guild access. Please sign out and sign in again.' })
3241
}
3342

3443
const userGuilds = await guildsResponse.json()
3544
const guild = userGuilds.find((g: any) => g.id === serverId)
3645

3746
if (!guild) {
47+
console.warn('[API] User does not have access to guild:', serverId)
3848
return res.status(403).json({ error: 'You do not have access to this server' })
3949
}
4050

41-
// Check if user has MANAGE_GUILD permission (0x20 = 32) or is owner
42-
const hasPermission = guild.owner || (parseInt(guild.permissions) & 0x20) === 0x20
51+
// Check if user has MANAGE_GUILD permission (0x20) or is owner
52+
const permissions = BigInt(guild.permissions)
53+
const hasManageGuild = (permissions & BigInt(0x20)) === BigInt(0x20)
54+
const hasPermission = guild.owner || hasManageGuild
55+
56+
console.log('[API] Guild access check:', { owner: guild.owner, hasManageGuild, hasPermission })
4357

4458
if (!hasPermission) {
4559
return res.status(403).json({ error: 'You do not have permission to manage this server' })
4660
}
4761
} catch (error) {
48-
console.error('Error checking guild permissions:', error)
62+
console.error('[API] Error checking guild permissions:', error)
4963
return res.status(500).json({ error: 'Failed to verify permissions' })
5064
}
5165

dash/src/pages/api/server/[serverId]/stats.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,20 @@ export default async function handler(
2121

2222
// Check if user has access to this guild
2323
try {
24+
const accessToken = (session as any).accessToken
25+
26+
if (!accessToken) {
27+
return res.status(401).json({ error: 'Authentication token missing. Please sign out and sign in again.' })
28+
}
29+
2430
const guildsResponse = await fetch('https://discord.com/api/v10/users/@me/guilds', {
2531
headers: {
26-
Authorization: `Bearer ${(session as any).accessToken}`,
32+
Authorization: `Bearer ${accessToken}`,
2733
},
2834
})
2935

3036
if (!guildsResponse.ok) {
31-
return res.status(401).json({ error: 'Failed to verify guild access' })
37+
return res.status(401).json({ error: 'Failed to verify guild access. Please sign out and sign in again.' })
3238
}
3339

3440
const userGuilds = await guildsResponse.json()
@@ -38,8 +44,10 @@ export default async function handler(
3844
return res.status(403).json({ error: 'You do not have access to this server' })
3945
}
4046

41-
// Check if user has MANAGE_GUILD permission (0x20 = 32) or is owner
42-
const hasPermission = guild.owner || (parseInt(guild.permissions) & 0x20) === 0x20
47+
// Check if user has MANAGE_GUILD permission (0x20) or is owner
48+
const permissions = BigInt(guild.permissions)
49+
const hasManageGuild = (permissions & BigInt(0x20)) === BigInt(0x20)
50+
const hasPermission = guild.owner || hasManageGuild
4351

4452
if (!hasPermission) {
4553
return res.status(403).json({ error: 'You do not have permission to manage this server' })

0 commit comments

Comments
 (0)