mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
import { applyDecorators, UseGuards } from '@nestjs/common';
|
|
import { JwtGuard } from '@tria-plc/api-common/modules/auth/services/jwt.guard';
|
|
|
|
import { FreightPermissionGuard } from './freight-permission.guard';
|
|
import { FREIGHT_PERMS } from '../seed/freight-permissions.registry';
|
|
|
|
export const BookingStaff = (permission: string | string[]) =>
|
|
applyDecorators(
|
|
UseGuards(
|
|
JwtGuard,
|
|
FreightPermissionGuard(
|
|
Array.isArray(permission) ? permission : [permission],
|
|
),
|
|
),
|
|
);
|
|
|
|
/**
|
|
* Read-only reference data (yard dropdowns, search filters): any signed-in
|
|
* staff. Menu/page visibility stays permission-gated in the frontend — this
|
|
* only lets forms populate their lookups.
|
|
*/
|
|
export const StaffReference = () => applyDecorators(UseGuards(JwtGuard));
|
|
|
|
export const BookingView = () => BookingStaff(FREIGHT_PERMS.bookings.view);
|
|
|
|
export const TrainSchedulingView = () =>
|
|
BookingStaff(FREIGHT_PERMS.trainScheduling.view);
|
|
|
|
export const TrainSchedulingManage = () =>
|
|
BookingStaff(FREIGHT_PERMS.trainScheduling.manage);
|
|
|
|
/**
|
|
* Fleet guards take an optional granular per-resource key (locomotives:create,
|
|
* wagons:delete, …). The legacy coarse fleet:view / fleet:manage keys remain
|
|
* valid as a one-of fallback so existing role grants keep working.
|
|
*/
|
|
export const FleetView = (granular?: string) =>
|
|
BookingStaff(
|
|
granular ? [granular, FREIGHT_PERMS.fleet.view] : FREIGHT_PERMS.fleet.view,
|
|
);
|
|
|
|
export const FleetManage = (granular?: string) =>
|
|
BookingStaff(
|
|
granular
|
|
? [granular, FREIGHT_PERMS.fleet.manage]
|
|
: FREIGHT_PERMS.fleet.manage,
|
|
);
|
|
|
|
/** Requester creates a wagon-transfer request (count-only, no wagon picks). */
|
|
export const WagonTransferRequest = () =>
|
|
BookingStaff(FREIGHT_PERMS.wagons.transferRequest);
|
|
|
|
/** OCC fulfils a wagon-transfer request — picks the wagons and executes the move. */
|
|
export const WagonTransferFulfill = () =>
|
|
BookingStaff(FREIGHT_PERMS.wagons.transferFulfill);
|
|
|
|
/** Admin: read every staffer's wagon-transfer history (not just one's own). */
|
|
export const WagonTransferHistoryAll = () =>
|
|
BookingStaff(FREIGHT_PERMS.wagons.transferHistoryAll);
|
|
|
|
/** Org-administration endpoints (user mgmt, billing config, company CRUD, settings). */
|
|
export const FreightAdmin = () => BookingStaff(FREIGHT_PERMS.admin);
|
|
|
|
/** Container allocation on a booking (allocate-containers endpoint). */
|
|
export const AllocationManage = () =>
|
|
BookingStaff(FREIGHT_PERMS.allocation.manage);
|