mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 13:05:44 +00:00
fix(freight:backoffice): remove coarse fleet.view/fleet.manage/admin fallbacks
Now that every fleet-resource page and settings page has its own dedicated permission key (previous commit), the broad fallbacks are redundant and over-grant: anyone holding only fleet:view/fleet:manage or admin could reach every page in that whole section, not just one. Removed fleet.view fallback from: Routes, Locomotives, Train Builder, Wagons, Containers, Cargoes, Compliance & Alerts, Procurement, and the Overview dashboard's Fleet KPI tab. Removed fleet.manage fallback from: canFleetAction() (per-resource fleet CRUD, lib/permissions.ts) and TrainBuilderDetailPage's wagon- assignment check. Hard-delete already had no such fallback. Removed admin fallback from: File settings, Dropdown settings, Contract templates, Portal content, Trade access, Exchange rate. Left untouched: Incidents (sole gate is fleet.view — no dedicated edr_freight_app:incidents:* key exists on the backend yet, so there's nothing to fall back FROM; removing it would make the page super-admin-only). Access-narrowing change: anyone currently relying on the coarse grant without also holding the specific resource/settings key will lose access to these pages until roles are updated to grant the specific keys directly. Audit role assignments before this deploys. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -85,9 +85,7 @@ export default function TrainBuilderDetailPage() {
|
||||
const { user } = useAuth();
|
||||
const canUpdate = canFleetAction(user, "trains", "update");
|
||||
const canDelete = canFleetAction(user, "trains", "delete");
|
||||
const canAssign =
|
||||
hasPermission(user, FREIGHT_PERMS.trains.assignWagons) ||
|
||||
hasPermission(user, FREIGHT_PERMS.fleet.manage);
|
||||
const canAssign = hasPermission(user, FREIGHT_PERMS.trains.assignWagons);
|
||||
|
||||
const compositionQuery = useQuery(
|
||||
api.trainBuilder.composition.queryOptions({ input: { id }, enabled: Boolean(id) }),
|
||||
|
||||
Reference in New Issue
Block a user