62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class PermissionSpec:
|
|
codename: str
|
|
name: str
|
|
|
|
|
|
PERMISSIONS: tuple[PermissionSpec, ...] = (
|
|
PermissionSpec("ticket.view", "View tickets"),
|
|
PermissionSpec("ticket.create", "Create tickets"),
|
|
PermissionSpec("ticket.edit", "Edit tickets"),
|
|
PermissionSpec("ticket.export", "Export tickets"),
|
|
PermissionSpec("ticket.assign", "Assign tickets"),
|
|
PermissionSpec("ticket.close", "Close tickets"),
|
|
PermissionSpec("knowledge.view", "View knowledge"),
|
|
PermissionSpec("knowledge.manage", "Manage knowledge"),
|
|
PermissionSpec("solution.view", "View solutions"),
|
|
PermissionSpec("solution.manage", "Manage solutions"),
|
|
PermissionSpec("agent.use", "Use Agents"),
|
|
PermissionSpec("agent.manage", "Manage Agents"),
|
|
PermissionSpec("model.manage", "Manage model configs"),
|
|
PermissionSpec("tool.manage", "Manage MCP tools"),
|
|
PermissionSpec("audit.view", "View audit logs"),
|
|
PermissionSpec("system.manage", "Manage system settings"),
|
|
)
|
|
|
|
DEFAULT_GROUPS: dict[str, tuple[str, ...]] = {
|
|
"System Admin": tuple(permission.codename for permission in PERMISSIONS),
|
|
"Knowledge Admin": (
|
|
"ticket.view",
|
|
"knowledge.view",
|
|
"knowledge.manage",
|
|
"solution.view",
|
|
"solution.manage",
|
|
"agent.use",
|
|
),
|
|
"Support Engineer": (
|
|
"ticket.view",
|
|
"ticket.create",
|
|
"ticket.edit",
|
|
"ticket.assign",
|
|
"ticket.close",
|
|
"knowledge.view",
|
|
"solution.view",
|
|
"agent.use",
|
|
),
|
|
"Requester": (
|
|
"ticket.view",
|
|
"ticket.create",
|
|
"knowledge.view",
|
|
"solution.view",
|
|
),
|
|
"Auditor": (
|
|
"ticket.view",
|
|
"knowledge.view",
|
|
"solution.view",
|
|
"audit.view",
|
|
),
|
|
}
|