roles que puedo inventar
El sistema de permisos recibió la última pieza que quería. Desde la reforma del RBAC el sitio tiene una matriz de capacidades que puedo editar, qué rol puede moderar comentarios, cuál ve la lista de usuarios, todo activable. Pero los roles en sí estaban tallados en piedra: user, moderator, dev, admin, lo tomas o lo dejas. ¿Querías un "moderador junior"? Mala suerte, a escribir código.
Ahora los roles son solo datos. La página de permisos los muestra como una escalera, user fijado abajo, admin fijado arriba, y puedo crear un rol nuevo en cualquier punto intermedio, renombrarlo, moverlo arriba y abajo, o borrarlo. La posición en la escalera es el rango, y el rango decide quién puede actuar sobre quién, así que subir un rol por encima de moderator significa literalmente que los moderadores ya no pueden tocar a quienes lo tienen. Un rol nuevo empieza con cero permisos hasta que yo active algunos, que me pareció el único punto de partida sensato.
La parte en la que de verdad puse cuidado fue el borrado. Borrar un rol que alguien tiene me pide confirmar con el número exacto de personas que lo tienen, y luego todas vuelven a ser user normal. ¿Y los tokens con los que esa gente sigue andando? Un token de sesión que nombra un rol que ya no existe no recibe nada en absoluto, el sistema entero trata los roles desconocidos como rango cero sin permisos. Probé exactamente ese caso, creé un rol, le di a alguien un token con él, borré el rol, reproduje el token: 403. Es el tipo aburrido de prueba que me deja dormir.
Un pequeño arreglo extra ya que estaba: la regla de que solo rangos superiores pueden editar nombres de usuario y correos comprobaba antes el rol literalmente llamado "dev". Como dev ahora se puede renombrar, esa comprobación compara posiciones en la escalera en vez de nombres. Los nombres son etiquetas ahora, la escalera es la verdad.