mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
add permissions and fix issues
This commit is contained in:
@@ -46,7 +46,10 @@ export const FREIGHT_PERMS = {
|
||||
approveDirector: "edr_freight_app:contracts:approve_director",
|
||||
approveCeo: "edr_freight_app:contracts:approve_ceo",
|
||||
generateContract: "edr_freight_app:contracts:generate_contract",
|
||||
signStaff: "edr_freight_app:contracts:sign_staff",
|
||||
signStaff: {
|
||||
bulk: "edr_freight_app:contracts:sign_staff:bulk",
|
||||
container: "edr_freight_app:contracts:sign_staff:container",
|
||||
},
|
||||
clearanceReview: "edr_freight_app:contracts:clearance_review",
|
||||
finalizeClearance: "edr_freight_app:contracts:finalize_clearance",
|
||||
createBooking: "edr_freight_app:contracts:create_booking",
|
||||
@@ -57,7 +60,6 @@ export const FREIGHT_PERMS = {
|
||||
},
|
||||
trainScheduling: {
|
||||
view: "edr_freight_app:train_scheduling:view",
|
||||
manage: "edr_freight_app:train_scheduling:manage",
|
||||
create: "edr_freight_app:train_scheduling:create",
|
||||
update: "edr_freight_app:train_scheduling:update",
|
||||
cancel: "edr_freight_app:train_scheduling:cancel",
|
||||
@@ -509,8 +511,18 @@ export function canViewScheduling(user: AuthUser | null | undefined): boolean {
|
||||
return hasPermission(user, FREIGHT_PERMS.trainScheduling.view);
|
||||
}
|
||||
|
||||
/** Any train-scheduling write action (create / update / cancel / reschedule). */
|
||||
export function canManageScheduling(user: AuthUser | null | undefined): boolean {
|
||||
return hasPermission(user, FREIGHT_PERMS.trainScheduling.manage);
|
||||
return (
|
||||
hasPermission(user, FREIGHT_PERMS.trainScheduling.create) ||
|
||||
hasPermission(user, FREIGHT_PERMS.trainScheduling.update) ||
|
||||
hasPermission(user, FREIGHT_PERMS.trainScheduling.cancel) ||
|
||||
hasPermission(user, FREIGHT_PERMS.trainScheduling.reschedule)
|
||||
);
|
||||
}
|
||||
|
||||
export function canCreateSchedule(user: AuthUser | null | undefined): boolean {
|
||||
return hasPermission(user, FREIGHT_PERMS.trainScheduling.create);
|
||||
}
|
||||
|
||||
export function canViewFleet(user: AuthUser | null | undefined): boolean {
|
||||
@@ -546,12 +558,17 @@ export function isFreightAdmin(user: AuthUser | null | undefined): boolean {
|
||||
return hasPermission(user, FREIGHT_PERMS.admin);
|
||||
}
|
||||
|
||||
export function ruleEngineViewKey(slug: RuleEngineResourceSlug): string {
|
||||
return `edr_freight_app:rule_engine:${slugToResourceKey(slug)}:view`;
|
||||
export type RuleEngineAction = "view" | "create" | "update" | "delete";
|
||||
|
||||
export function ruleEngineActionKey(
|
||||
slug: RuleEngineResourceSlug,
|
||||
action: RuleEngineAction,
|
||||
): string {
|
||||
return `edr_freight_app:rule_engine:${slugToResourceKey(slug)}:${action}`;
|
||||
}
|
||||
|
||||
export function ruleEngineManageKey(slug: RuleEngineResourceSlug): string {
|
||||
return `edr_freight_app:rule_engine:${slugToResourceKey(slug)}:manage`;
|
||||
export function ruleEngineViewKey(slug: RuleEngineResourceSlug): string {
|
||||
return ruleEngineActionKey(slug, "view");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -572,10 +589,19 @@ export function canApproveRuleEngineChange(
|
||||
export function canAccessRuleEngineResource(
|
||||
user: AuthUser | null | undefined,
|
||||
slug: RuleEngineResourceSlug,
|
||||
mode: "view" | "manage",
|
||||
mode: RuleEngineAction,
|
||||
): boolean {
|
||||
const key = mode === "manage" ? ruleEngineManageKey(slug) : ruleEngineViewKey(slug);
|
||||
return hasPermission(user, key);
|
||||
return hasPermission(user, ruleEngineActionKey(slug, mode));
|
||||
}
|
||||
|
||||
/** Holds any write action on the resource — for surfaces gated on "can edit at all". */
|
||||
export function canWriteRuleEngineResource(
|
||||
user: AuthUser | null | undefined,
|
||||
slug: RuleEngineResourceSlug,
|
||||
): boolean {
|
||||
return (["create", "update", "delete"] as const).some((a) =>
|
||||
canAccessRuleEngineResource(user, slug, a),
|
||||
);
|
||||
}
|
||||
|
||||
export function canAccessAnyRuleEngineView(
|
||||
|
||||
Reference in New Issue
Block a user