Skip to content

Commit

Permalink
fix(supabase): invites
Browse files Browse the repository at this point in the history
  • Loading branch information
fouad committed Feb 15, 2024
1 parent 0a6ed40 commit 91c3366
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 13 deletions.
33 changes: 25 additions & 8 deletions packages/beta/indent-integration-supabase/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,17 @@ export class SupabaseIntegration
(m) => m.primary_email === actor.email
)

const { data: invited } = await this.FetchSupabase({
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/invite`,
})

const invitedMember = invited.find((m) => m.invited_email === actor.email)

if (event === 'access/grant') {
if (
existingMember &&
existingMember.role_ids.includes(
parseInt(resource.labels.role_id, 10)
)
invitedMember ||
(existingMember &&
existingMember.role_id === parseInt(resource.labels.role_id, 10))
) {
res.status.code = StatusCode.OK
delete res.status.message
Expand Down Expand Up @@ -144,14 +149,26 @@ export class SupabaseIntegration
}
} else if (event === 'access/revoke') {
if (!existingMember) {
res.status.code = StatusCode.OK
delete res.status.message
if (!invitedMember) {
res.status.code = StatusCode.OK
delete res.status.message
} else {
// Remove role from existing member or remove the member if needed
await this.FetchSupabase({
method: 'DELETE',
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/invite?invited_id=${invitedMember.invited_id}`,
})
console.log('deleted invite')
res.status.code = StatusCode.OK
delete res.status.message
}
} else {
// Remove role from existing member or remove the member if needed
// Remove member from organization
await this.FetchSupabase({
method: 'DELETE',
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/invite?invited_id=${existingMember.gotrue_id}`,
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/${existingMember.gotrue_id}`,
})
console.log('removed from organization')
res.status.code = StatusCode.OK
delete res.status.message
}
Expand Down
32 changes: 27 additions & 5 deletions packages/beta/indent-integration-supabase/test/supabase.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ function setupMocks() {
statusText: '',
headers: undefined,
config: undefined,
}
},
)

addMock(
Expand All @@ -123,7 +123,7 @@ function setupMocks() {
statusText: '',
headers: undefined,
config: undefined,
}
},
)

addMock(
Expand All @@ -145,21 +145,43 @@ function setupMocks() {
statusText: '',
headers: undefined,
config: undefined,
}
},
)

addMock(
{
method: 'GET',
baseURL: 'https://api.supabase.io',
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/invite`,
},
{
status: 200,
data: [
{
invited_id: 1234,
invited_at: 'now',
invited_email: '[email protected]',
role_id: 3729916,
},
],
statusText: '',
headers: undefined,
config: undefined,
},
)

addMock(
{
method: 'DELETE',
baseURL: 'https://api.supabase.io',
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/invite?invited_id=f650384e-0d8d-440c-91d6-a428cf6094c9`,
url: `/v0/organizations/${SUPABASE_ORG_ID}/members/invite?invited_id=1234`,
},
{
status: 200,
data: undefined,
statusText: '',
headers: undefined,
config: undefined,
}
},
)
}

0 comments on commit 91c3366

Please sign in to comment.