Jerarquía de tiers y permisos
Resumen
Cinco tiers ordenados por rango numérico; can_actor_modify_target(actor, target) exige tier_rank(actor) > tier_rank(target) para mutaciones sobre otro usuario.
Jerarquía
| Tier | Rank | Uso |
|---|---|---|
| free | 0 | Default |
| pro | 1 | Plan de pago |
| tester | 2 | Beta features |
| staff | 3 | Desk staff, wiki editor |
| admin | 4 | Gestión total |
Implementación: apps/folks/auth/tiers.py — TIER_RANK, VALID_TIERS, MANAGEMENT_TIERS.
can_actor_modify_target
def can_actor_modify_target(actor_tier, target_tier) -> bool:
return tier_rank(actor_tier) > tier_rank(target_tier)
Staff no puede modificar staff/admin. Admin puede modificar todos excepto degradarse a sí mismo en operaciones sensibles.
DESK_ASSIGNABLE_TIERS
- Actor
free/pro/tester/staff: puede asignarfree,pro,tester. - Actor
admin: además puede asignarstaff.
Invariantes
- Unique index: solo un
adminactivo en DB (convención operativa). - Soft delete:
deleted_aten users — usuario eliminado no autentica. - Audit log en Desk registra cambios de tier y acciones staff.