1 | |
2 |
|
3 | export type DynSelect_group_key = string |
4 |
|
5 | |
6 | export async function group_key(auth: RT.Gworkspace) { |
7 | const groups: { email: string; name: string }[] = [] |
8 | let pageToken = "" |
9 | do { |
10 | const url = new URL("https://admin.googleapis.com/admin/directory/v1/groups") |
11 | url.searchParams.append("customer", "my_customer") |
12 | url.searchParams.append("maxResults", "200") |
13 | if (pageToken) url.searchParams.append("pageToken", pageToken) |
14 | const response = await fetch(url, { |
15 | headers: { |
16 | Authorization: `Bearer ${auth.token}`, |
17 | Accept: "application/json", |
18 | }, |
19 | }) |
20 | if (!response.ok) { |
21 | throw new Error(`${response.status} ${await response.text()}`) |
22 | } |
23 | const page = (await response.json()) as { |
24 | groups?: { email: string; name: string }[] |
25 | nextPageToken?: string |
26 | } |
27 | groups.push(...(page.groups ?? [])) |
28 | pageToken = page.nextPageToken ?? "" |
29 | } while (pageToken) |
30 | return groups.map((g) => ({ value: g.email, label: `${g.name} (${g.email})` })) |
31 | } |
32 |
|
33 | |
34 | * Remove Group Member |
35 | * Remove a member (by email or unique ID) from a group. |
36 | */ |
37 | export async function main( |
38 | auth: RT.Gworkspace, |
39 | group_key: DynSelect_group_key, |
40 | member_key: string, |
41 | ) { |
42 | const response = await fetch( |
43 | `https://admin.googleapis.com/admin/directory/v1/groups/${encodeURIComponent(group_key)}/members/${encodeURIComponent(member_key)}`, |
44 | { |
45 | method: "DELETE", |
46 | headers: { Authorization: `Bearer ${auth.token}` }, |
47 | }, |
48 | ) |
49 |
|
50 | if (!response.ok) { |
51 | throw new Error(`${response.status} ${await response.text()}`) |
52 | } |
53 |
|
54 | return { success: true } |
55 | } |
56 |
|