1 | |
2 |
|
3 | import * as wmill from "windmill-client" |
4 |
|
5 | |
6 | wmill.OpenAPI.interceptors.response.use(async (response) => { |
7 | if (!response.ok) { |
8 | throw new Error(`${response.status} ${await response.text()}`) |
9 | } |
10 | return response |
11 | }) |
12 |
|
13 | export type DynSelect_name = string |
14 |
|
15 | export async function name() { |
16 | const names = await wmill.FolderService.listFolderNames({ |
17 | workspace: wmill.getWorkspace(), |
18 | }) |
19 | return names.map((n) => ({ value: n, label: n })) |
20 | } |
21 |
|
22 | |
23 | * Remove User or Group from Folder |
24 | * Revoke all access a user (`u/<username>`) or group (`g/<group>`) has to a folder, admin included. Requires a folder admin or a workspace admin. |
25 | */ |
26 | export async function main(name: DynSelect_name, member: string) { |
27 | const ws = wmill.getWorkspace() |
28 | const folder = await wmill.FolderService.getFolder({ workspace: ws, name }) |
29 | |
30 | if (folder.owners.includes(member)) { |
31 | await wmill.FolderService.removeOwnerToFolder({ |
32 | workspace: ws, |
33 | name, |
34 | requestBody: { owner: member }, |
35 | }) |
36 | } |
37 | if (member in (folder.extra_perms ?? {})) { |
38 | await wmill.GranularAclService.removeGranularAcls({ |
39 | workspace: ws, |
40 | kind: "folder", |
41 | path: name, |
42 | requestBody: { owner: member }, |
43 | }) |
44 | } |
45 | return await wmill.FolderService.getFolder({ workspace: ws, name }) |
46 | } |
47 |
|