mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-15 20:17:22 +00:00
Update permission context handling and improve JSON field component
- Enhanced `MediaController` to include context in the `entityCreate` permission for better access control. - Refactored permission checks in `useBkndAuth` to ensure correct validation of role permissions. - Modified `JsonField` component to directly use `formData` in `JsonEditor`, simplifying data handling and improving user experience.
This commit is contained in:
@@ -189,7 +189,9 @@ export class MediaController extends Controller {
|
|||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
jsc("query", s.object({ overwrite: s.boolean().optional() })),
|
jsc("query", s.object({ overwrite: s.boolean().optional() })),
|
||||||
permission(DataPermissions.entityCreate, {}),
|
permission(DataPermissions.entityCreate, {
|
||||||
|
context: (c) => ({ entity: c.req.param("entity") }),
|
||||||
|
}),
|
||||||
permission(MediaPermissions.uploadFile, {}),
|
permission(MediaPermissions.uploadFile, {}),
|
||||||
async (c) => {
|
async (c) => {
|
||||||
const { entity: entity_name, id: entity_id, field: field_name } = c.req.valid("param");
|
const { entity: entity_name, id: entity_id, field: field_name } = c.req.valid("param");
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ export function useBkndAuth() {
|
|||||||
has_admin: Object.entries(config.auth.roles ?? {}).some(
|
has_admin: Object.entries(config.auth.roles ?? {}).some(
|
||||||
([name, role]) =>
|
([name, role]) =>
|
||||||
role.implicit_allow ||
|
role.implicit_allow ||
|
||||||
minimum_permissions.every((p) => role.permissions?.includes(p)),
|
minimum_permissions.every((p) => role.permissions?.some((p) => p.permission === p)),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
routes: {
|
routes: {
|
||||||
|
|||||||
@@ -10,23 +10,13 @@ export default function JsonField({
|
|||||||
readonly,
|
readonly,
|
||||||
...props
|
...props
|
||||||
}: FieldProps) {
|
}: FieldProps) {
|
||||||
const value = JSON.stringify(formData, null, 2);
|
|
||||||
|
|
||||||
function handleChange(data) {
|
|
||||||
try {
|
|
||||||
onChange(JSON.parse(data));
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const isDisabled = disabled || readonly;
|
const isDisabled = disabled || readonly;
|
||||||
const id = props.idSchema.$id;
|
const id = props.idSchema.$id;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-2">
|
<div className="flex flex-col gap-2">
|
||||||
<Label label={props.name} id={id} />
|
<Label label={props.name} id={id} />
|
||||||
<JsonEditor value={value} editable={!isDisabled} onChange={handleChange} />
|
<JsonEditor value={formData} editable={!isDisabled} onChange={onChange} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user