Skip to content

Commit ef82fcd

Browse files
committed
fix(sso): restrict SSO provider read/write to org owners and admins
1 parent 1b3693d commit ef82fcd

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

apps/sim/app/api/auth/sso/providers/route.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@ export async function GET(request: NextRequest) {
1919
let verifiedOrganizationId: string | null = null
2020
if (organizationId) {
2121
const [membership] = await db
22-
.select({ organizationId: member.organizationId })
22+
.select({ organizationId: member.organizationId, role: member.role })
2323
.from(member)
2424
.where(and(eq(member.userId, userId), eq(member.organizationId, organizationId)))
2525
.limit(1)
2626
if (!membership) {
2727
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
2828
}
29+
if (membership.role !== 'owner' && membership.role !== 'admin') {
30+
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
31+
}
2932
verifiedOrganizationId = membership.organizationId
3033
}
3134

apps/sim/app/api/auth/sso/register/route.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,16 @@ export async function POST(request: NextRequest) {
116116

117117
if (orgId) {
118118
const [membership] = await db
119-
.select({ organizationId: member.organizationId })
119+
.select({ organizationId: member.organizationId, role: member.role })
120120
.from(member)
121121
.where(and(eq(member.userId, session.user.id), eq(member.organizationId, orgId)))
122122
.limit(1)
123123
if (!membership) {
124124
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
125125
}
126+
if (membership.role !== 'owner' && membership.role !== 'admin') {
127+
return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
128+
}
126129
}
127130

128131
const headers: Record<string, string> = {}

0 commit comments

Comments
 (0)