-
Notifications
You must be signed in to change notification settings - Fork 39
/
project_permission_revoke.ts
43 lines (37 loc) · 1.39 KB
/
project_permission_revoke.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import logger from "lib/logger";
import { VError } from "verror";
import Intent from "../authz/intents";
import { Ctx } from "../lib/ctx";
import * as Result from "../result";
import * as Cache from "./cache2";
import { ConnToken } from "./conn";
import { Identity } from "./domain/organization/identity";
import { ServiceUser } from "./domain/organization/service_user";
import * as Project from "./domain/workflow/project";
import * as ProjectPermissionRevoke from "./domain/workflow/project_permission_revoke";
import { store } from "./store";
export { RequestData } from "./domain/workflow/project_create";
export async function revokeProjectPermission(
conn: ConnToken,
ctx: Ctx,
serviceUser: ServiceUser,
projectId: Project.Id,
revokee: Identity,
intent: Intent,
): Promise<Result.Type<void>> {
logger.debug({ projectId, revokee, intent }, "Revoking project permission");
const newEventsResult = await Cache.withCache(conn, ctx, async (cache) =>
ProjectPermissionRevoke.revokeProjectPermission(ctx, serviceUser, projectId, revokee, intent, {
getProject: async (id) => {
return cache.getProject(id);
},
}),
);
if (Result.isErr(newEventsResult)) {
return new VError(newEventsResult, "revoke project permission failed");
}
const newEvents = newEventsResult;
for (const event of newEvents) {
await store(conn, ctx, event, serviceUser.address);
}
}