v0.1.14 - b2b portal
This commit is contained in:
@@ -21,6 +21,7 @@ MODULE_CATALOG = (
|
||||
("products", "Products", "pricing", "Review finished product pricing"),
|
||||
("scenarios", "Scenarios", "planning", "Run scenario overrides and comparisons"),
|
||||
("operations_throughput", "Operations Throughput", "production", "Log production throughput and QA checks for grain/feed packing"),
|
||||
("ordering", "Ordering Portal", "commerce", "Browse the private catalogue, build and submit B2B orders"),
|
||||
("powerbi_export", "Power BI Export", "reporting", "Expose client access data to BI consumers"),
|
||||
("client_access", "Client Access", "administration", "Manage user access, module permissions, and audit history"),
|
||||
)
|
||||
@@ -79,15 +80,25 @@ def has_access_level(access_level: str | None, minimum_level: str) -> bool:
|
||||
def default_access_level_for_role(role: str, module_key: str) -> str:
|
||||
normalized = role.strip().lower()
|
||||
if normalized == "superadmin":
|
||||
return "manage" if module_key in {"client_access", "mix_calculator", "operations_throughput"} else "edit"
|
||||
return "manage" if module_key in {"client_access", "mix_calculator", "operations_throughput", "ordering"} else "edit"
|
||||
if normalized == "admin":
|
||||
if module_key in {"mix_calculator", "operations_throughput"}:
|
||||
if module_key in {"mix_calculator", "operations_throughput", "ordering"}:
|
||||
return "manage"
|
||||
return "edit" if module_key != "client_access" else "none"
|
||||
if normalized == "operator":
|
||||
return "edit" if module_key in {"dashboard", "raw_materials", "mix_master", "mix_calculator", "products", "scenarios", "operations_throughput"} else "none"
|
||||
return "edit" if module_key in {"dashboard", "raw_materials", "mix_master", "mix_calculator", "products", "scenarios", "operations_throughput", "ordering"} else "none"
|
||||
if normalized == "viewer":
|
||||
return "view" if module_key in {"dashboard", "mix_calculator", "products", "powerbi_export", "operations_throughput"} else "none"
|
||||
return "view" if module_key in {"dashboard", "mix_calculator", "products", "powerbi_export", "operations_throughput", "ordering"} else "none"
|
||||
# --- B2B ordering-portal customer roles ---------------------------------
|
||||
# Ordering customers are scoped to the ordering module (plus a dashboard
|
||||
# view). They never see costing/admin modules.
|
||||
if normalized == "owner":
|
||||
return "manage" if module_key == "ordering" else ("view" if module_key == "dashboard" else "none")
|
||||
if normalized == "buyer":
|
||||
return "edit" if module_key == "ordering" else ("view" if module_key == "dashboard" else "none")
|
||||
if normalized == "accounts":
|
||||
# Accounts users review orders/invoicing but don't place orders.
|
||||
return "view" if module_key in {"ordering", "dashboard"} else "none"
|
||||
return "none"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user