Modelo RBAC
Ministrium usa RBAC (Role-Based Access Control). En lugar de asignar permisos individuales a cada usuario, los permisos se agrupan en roles y los roles se asignan a los usuarios.
Las tres entidades
Usuario ──► Asignación ──► Rol ──► Permiso- Permiso: una acción atómica (
donations.read,members.write,kiosk.operate). - Rol: un conjunto nombrado de permisos (
org_admin,leader,finance). - Asignación: la unión de un usuario, un rol y un alcance (toda la org o un campus específico).
¿Por qué RBAC y no permisos sueltos?
- Auditable: si revoca el rol
finance, sabe exactamente qué permisos perdió la persona. - Rotable: cuando alguien deja un cargo, basta cambiar su rol.
- Reproducible: dos voluntarios con el mismo rol tienen exactamente el mismo acceso. Sin sorpresas.
Cómo se evalúa una petición
- El usuario intenta una acción (ej. ver donaciones del campus Norte).
- Ministrium identifica el permiso requerido (
donations.read). - Verifica si el usuario tiene un rol que incluya ese permiso.
- Verifica si el alcance del rol cubre el campus Norte.
- Si ambas condiciones se cumplen, la acción procede. Si no, se devuelve
403.
// Ejemplo de un usuario con rol scoped
{
"user_id": "u_123",
"assignments": [
{ "role": "campus_admin", "scope": { "campus_id": "c_norte" } },
{ "role": "leader", "scope": { "campus_id": "c_centro", "group_ids": ["g_42"] } }
]
}Este usuario es admin del campus Norte y líder de un solo grupo del campus Centro. Puede ver toda la asistencia del Norte pero sólo la asistencia de su grupo en Centro.
Nada de permisos custom
Hoy no soportamos crear roles custom desde la UI. Los roles del sistema cubren los casos que hemos visto en cientos de iglesias. Si tiene un caso que no encaja, escríbanos — añadimos roles cuando vemos un patrón.
Last updated on