mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-09 22:04:16 +00:00
🚧 wip
This commit is contained in:
@@ -147,7 +147,7 @@ export enum ActionsEnum {
|
||||
setResourcePolicyHeaderAuth = "setResourcePolicyHeaderAuth",
|
||||
setResourcePolicyWhitelist = "setResourcePolicyWhitelist",
|
||||
setResourcePolicyRules = "setResourcePolicyRules",
|
||||
getResourcePolicies = "getResourcePolicies"
|
||||
|
||||
}
|
||||
|
||||
export async function checkUserActionPermission(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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",
|
||||
@@ -31,4 +31,4 @@ export * from "./addUserToResource";
|
||||
export * from "./removeUserFromResource";
|
||||
export * from "./listAllResourceNames";
|
||||
export * from "./removeEmailFromResourceWhitelist";
|
||||
export * from "./getResourcePolicies";
|
||||
export * from "./getDefaultResourcePolicy";
|
||||
|
||||
Reference in New Issue
Block a user