-
Notifications
You must be signed in to change notification settings - Fork 39
/
project_permissions_list.ts
33 lines (29 loc) · 1.14 KB
/
project_permissions_list.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
import logger from "lib/logger";
import { Ctx } from "../lib/ctx";
import * as Result from "../result";
import * as Cache from "./cache2";
import { ConnToken } from "./conn";
import { ServiceUser } from "./domain/organization/service_user";
import { Permissions } from "./domain/permissions";
import * as Project from "./domain/workflow/project";
import * as ProjectPermissionsList from "./domain/workflow/project_permissions_list";
export async function getProjectPermissions(
conn: ConnToken,
ctx: Ctx,
serviceUser: ServiceUser,
projectId: Project.Id,
): Promise<Result.Type<Permissions>> {
logger.debug({ projectId }, "Get project permissions");
const projectPermissionsResult = await Cache.withCache(conn, ctx, async (cache) =>
ProjectPermissionsList.getProjectPermissions(ctx, serviceUser, projectId, {
getProject: async (pId) => {
return cache.getProject(pId);
},
}),
);
if (Result.isErr(projectPermissionsResult)) {
projectPermissionsResult.message = `could not fetch project permissions: ${projectPermissionsResult.message}`;
return projectPermissionsResult;
}
return projectPermissionsResult;
}