"""Role constants and RBAC helpers.""" from enum import Enum class Role(str, Enum): LEARNER = "learner" SALES_MANAGER = "sales_manager" DEPT_HEAD = "dept_head" LD_ADMIN = "ld_admin" CREDIT_HEAD = "credit_head" # Role hierarchy for permission checks ROLE_HIERARCHY = { Role.LEARNER: 0, Role.SALES_MANAGER: 1, Role.DEPT_HEAD: 2, Role.LD_ADMIN: 3, Role.CREDIT_HEAD: 4, } def has_role(user_roles: list[str], required: Role) -> bool: return required.value in user_roles def has_any_role(user_roles: list[str], required_roles: list[Role]) -> bool: return any(r.value in user_roles for r in required_roles) def is_staff_or_above(user_roles: list[str]) -> bool: """True if the user is a sales manager, dept head, L&D admin, or credit head.""" staff = { Role.SALES_MANAGER, Role.DEPT_HEAD, Role.LD_ADMIN, Role.CREDIT_HEAD, } return has_any_role(user_roles, list(staff))