from starlette.requests import Request class SuperAdminOnly: """superadmin만 접근 가능 (편집/삭제/액션 모두 허용)""" def is_accessible(self, request: Request) -> bool: return request.session.get("admin_role") == "superadmin" class ViewerReadOnly: """viewer만 접근 가능한 읽기 전용 뷰""" can_create = False can_edit = False can_delete = False def is_accessible(self, request: Request) -> bool: return request.session.get("admin_role") == "viewer" class ViewerAccessible: """superadmin + viewer 접근 가능, 읽기 전용""" can_create = False can_edit = False can_delete = False def is_accessible(self, request: Request) -> bool: return request.session.get("admin_role") in ("superadmin", "viewer") class SuperAdminEditable: """superadmin + viewer 접근 가능, superadmin만 편집""" can_create = False can_edit = False can_delete = False def is_accessible(self, request: Request) -> bool: return request.session.get("admin_role") in ("superadmin", "viewer")