permission-common: fix basic permission validation

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
Vincenzo Scamporlino
2025-05-15 20:51:20 +02:00
parent 329c1193a0
commit 13d15f7bfc
2 changed files with 18 additions and 12 deletions
@@ -407,7 +407,7 @@ describe('PermissionClient', () => {
},
{
id: req.body.items[1].id,
result: [AuthorizeResult.DENY],
result: AuthorizeResult.DENY,
},
{
id: req.body.items[2].id,
@@ -60,14 +60,16 @@ const authorizePermissionResponseSchema: z.ZodSchema<AuthorizePermissionResponse
.or(z.literal(AuthorizeResult.DENY)),
});
const authorizePermissionResponseBatchSchema = z.object({
result: z.array(
z.union([
z.literal(AuthorizeResult.ALLOW),
z.literal(AuthorizeResult.DENY),
]),
),
});
const authorizePermissionResponseBatchSchema = z
.object({
result: z.array(
z.union([
z.literal(AuthorizeResult.ALLOW),
z.literal(AuthorizeResult.DENY),
]),
),
})
.or(authorizePermissionResponseSchema);
const queryPermissionResponseSchema: z.ZodSchema<QueryPermissionResponse> =
z.union([
@@ -240,9 +242,13 @@ export class PermissionClient implements PermissionEvaluator {
const { id } = request[query.permission.name];
const item = responsesById[id];
return {
result: query.resourceRef ? item.result.shift()! : item.result[0],
};
if (Array.isArray(item.result)) {
return {
result: query.resourceRef ? item.result.shift()! : item.result[0],
};
}
return { result: item.result };
});
}