You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: render the server's effective API operation set (#3391 PR-4) (#2823)
The frontend consumes the per-object effective API operation set the server resolves (/me/permissions apiOperations, framework #3391) — never the raw apiMethods — so CRUD/Import/Export buttons match what the server admits, and a 405 import refusal shows a dedicated message instead of a silent fallback.
- core: resolveCrudAffordances(obj, effectiveApiOperations?) optional 2nd-arg intersection
- permissions: /me/permissions apiOperations + getObjectApiOperations + check(import→allowCreate, export→allowRead)
- app-shell ObjectView: Import affordance ∩ effective (identity-import bypass unaffected)
- plugin-list/plugin-grid: Export button+handler gate on effective export; plugin-grid gains @object-ui/permissions dep
- plugin-grid ImportWizard: isImportNotAllowed (405) at all catch sites → dedicated grid.import.notAllowed message, no fallback
Backward-compatible: missing effective set preserves current default-allow behavior.
0 commit comments