teoat
deploy: sync from main Sun Jan 11 18:43:53 WIT 2026
4a2ab42
"""
Role-Based Access Control (RBAC) for Zenith Fraud Detection Platform
"""
from enum import Enum
class Permission(str, Enum):
# Case permissions
VIEW_CASES = "view_cases"
CREATE_CASES = "create_cases"
EDIT_CASES = "edit_cases"
DELETE_CASES = "delete_cases"
CLOSE_CASES = "close_cases"
# Transaction permissions
VIEW_TRANSACTIONS = "view_transactions"
UPLOAD_TRANSACTIONS = "upload_transactions"
EDIT_TRANSACTIONS = "edit_transactions"
# Evidence permissions
VIEW_EVIDENCE = "view_evidence"
UPLOAD_EVIDENCE = "upload_evidence"
DELETE_EVIDENCE = "delete_evidence"
# User permissions
MANAGE_USERS = "manage_users"
VIEW_USERS = "view_users"
# System permissions
VIEW_REPORTS = "view_reports"
MANAGE_SYSTEM = "manage_system"
VIEW_AUDIT = "view_audit"
# Role definitions
ROLE_PERMISSIONS: dict[str, list[str]] = {
"viewer": [
Permission.VIEW_CASES,
Permission.VIEW_TRANSACTIONS,
Permission.VIEW_EVIDENCE,
Permission.VIEW_REPORTS,
],
"analyst": [
Permission.VIEW_CASES,
Permission.CREATE_CASES,
Permission.EDIT_CASES,
Permission.VIEW_TRANSACTIONS,
Permission.UPLOAD_TRANSACTIONS,
Permission.EDIT_TRANSACTIONS,
Permission.VIEW_EVIDENCE,
Permission.UPLOAD_EVIDENCE,
Permission.VIEW_REPORTS,
Permission.VIEW_AUDIT,
],
"investigator": [
Permission.VIEW_CASES,
Permission.CREATE_CASES,
Permission.EDIT_CASES,
Permission.CLOSE_CASES,
Permission.DELETE_CASES,
Permission.VIEW_TRANSACTIONS,
Permission.UPLOAD_TRANSACTIONS,
Permission.EDIT_TRANSACTIONS,
Permission.VIEW_EVIDENCE,
Permission.UPLOAD_EVIDENCE,
Permission.DELETE_EVIDENCE,
Permission.VIEW_REPORTS,
Permission.VIEW_AUDIT,
],
"manager": [
Permission.VIEW_CASES,
Permission.CREATE_CASES,
Permission.EDIT_CASES,
Permission.CLOSE_CASES,
Permission.DELETE_CASES,
Permission.VIEW_TRANSACTIONS,
Permission.UPLOAD_TRANSACTIONS,
Permission.EDIT_TRANSACTIONS,
Permission.VIEW_EVIDENCE,
Permission.UPLOAD_EVIDENCE,
Permission.DELETE_EVIDENCE,
Permission.MANAGE_USERS,
Permission.VIEW_USERS,
Permission.VIEW_REPORTS,
Permission.VIEW_AUDIT,
],
"admin": [
Permission.VIEW_CASES,
Permission.CREATE_CASES,
Permission.EDIT_CASES,
Permission.CLOSE_CASES,
Permission.DELETE_CASES,
Permission.VIEW_TRANSACTIONS,
Permission.UPLOAD_TRANSACTIONS,
Permission.EDIT_TRANSACTIONS,
Permission.VIEW_EVIDENCE,
Permission.UPLOAD_EVIDENCE,
Permission.DELETE_EVIDENCE,
Permission.MANAGE_USERS,
Permission.VIEW_USERS,
Permission.MANAGE_SYSTEM,
Permission.VIEW_REPORTS,
Permission.VIEW_AUDIT,
],
}
def has_permission(user_role: str, permission: str) -> bool:
"""Check if a user role has a specific permission"""
if user_role not in ROLE_PERMISSIONS:
return False
return permission in ROLE_PERMISSIONS[user_role]
def get_role_permissions(role: str) -> list[str]:
"""Get all permissions for a role"""
return ROLE_PERMISSIONS.get(role, [])