Skip to content

Commit 503221d

Browse files
committed
fix: prevent running bulk actions in resources, that out of scope of plugin config
AdminForth/1812/security-review
1 parent b10a3fb commit 503221d

2 files changed

Lines changed: 2 additions & 3 deletions

File tree

custom/InlineList.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,6 @@ async function startBulkAction(actionId) {
360360
path: `/plugin/${props.meta.pluginInstanceId}/start_bulk_action`,
361361
method: 'POST',
362362
body: {
363-
resourceId: listResource.value.resourceId,
364363
actionId: actionId,
365364
recordIds: checkboxes.value
366365
}

index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { interpretResource, ActionCheckSource } from "adminforth";
1111
import { z } from "zod";
1212

1313
const startBulkActionBodySchema = z.object({
14-
resourceId: z.string(),
1514
actionId: z.union([z.string(), z.number()]),
1615
recordIds: z.array(z.union([z.string(), z.number()])),
1716
}).strict();
@@ -70,7 +69,8 @@ export default class ForeignInlineListPlugin extends AdminForthPlugin {
7069
request_schema: startBulkActionBodySchema,
7170
handler: async ({ body, adminUser, tr }) => {
7271
const data = body as z.infer<typeof startBulkActionBodySchema>;
73-
const { resourceId, actionId, recordIds } = data;
72+
const { actionId, recordIds } = data;
73+
const resourceId = this.options.foreignResourceId;
7474
const resource = this.adminforth.config.resources.find((res) => res.resourceId == resourceId);
7575
if (!resource) {
7676
return { error: await tr(`Resource {resourceId} not found`, 'errors', { resourceId }) };

0 commit comments

Comments
 (0)