This commit is contained in:
Fred KISSIE
2026-03-11 00:27:27 +01:00
parent 8a39b3fd45
commit f80e212b07
13 changed files with 156 additions and 618 deletions

View File

@@ -147,7 +147,7 @@ export enum ActionsEnum {
setResourcePolicyHeaderAuth = "setResourcePolicyHeaderAuth",
setResourcePolicyWhitelist = "setResourcePolicyWhitelist",
setResourcePolicyRules = "setResourcePolicyRules",
getResourcePolicies = "getResourcePolicies"
}
export async function checkUserActionPermission(

View File

@@ -637,10 +637,10 @@ authenticated.get(
);
authenticated.get(
"/resource/:resourceId/policies",
"/resource/:resourceId/default-policy",
verifyResourceAccess,
verifyUserHasAction(ActionsEnum.getResourcePolicies),
resource.getResourcePolicies
verifyUserHasAction(ActionsEnum.getResourcePolicy),
resource.getDefaultResourcePolicy
);
authenticated.put(

View File

@@ -454,10 +454,10 @@ authenticated.get(
);
authenticated.get(
"/resource/:resourceId/policies",
"/resource/:resourceId/default-policy",
verifyApiKeyResourceAccess,
verifyApiKeyHasAction(ActionsEnum.getResourcePolicies),
resource.getResourcePolicies
verifyApiKeyHasAction(ActionsEnum.getResourcePolicy),
resource.getDefaultResourcePolicy
);
authenticated.post(

View File

@@ -17,13 +17,11 @@ const getResourcePoliciesParamsSchema = z.strictObject({
resourceId: z.string().transform(Number).pipe(z.int().positive())
});
export type GetResourcePoliciesResponse = {
defaultPolicy: GetResourcePolicyResponse | null;
};
export type GetDefaultResourcePolicyResponse = GetResourcePolicyResponse;
registry.registerPath({
method: "get",
path: "/resource/{resourceId}/policies",
path: "/resource/{resourceId}/default-policy",
description: "Get the default policy for a resource.",
tags: [OpenAPITags.PublicResource, OpenAPITags.Policy],
request: {
@@ -32,7 +30,7 @@ registry.registerPath({
responses: {}
});
export async function getResourcePolicies(
export async function getDefaultResourcePolicy(
req: Request,
res: Response,
next: NextFunction
@@ -66,14 +64,20 @@ export async function getResourcePolicies(
);
}
const defaultPolicy = resource.defaultResourcePolicyId
? await queryResourcePolicy({
resourcePolicyId: resource.defaultResourcePolicyId
})
: null;
if (!resource.defaultResourcePolicyId) {
return next(
createHttpError(
HttpCode.NOT_FOUND,
"Resource has no default policy"
)
);
}
return response<GetResourcePoliciesResponse>(res, {
data: { defaultPolicy },
const defaultPolicy = await queryResourcePolicy({
resourcePolicyId: resource.defaultResourcePolicyId
});
return response<GetDefaultResourcePolicyResponse>(res, {
data: defaultPolicy,
success: true,
error: false,
message: "Resource policies retrieved successfully",

View File

@@ -31,4 +31,4 @@ export * from "./addUserToResource";
export * from "./removeUserFromResource";
export * from "./listAllResourceNames";
export * from "./removeEmailFromResourceWhitelist";
export * from "./getResourcePolicies";
export * from "./getDefaultResourcePolicy";