Control de acceso

El control de acceso en Truke KF se basa en etiquetas — textos cortos asignados tanto a usuarios como a ítems.

Etiquetas

Una etiqueta es un texto simple, por ejemplo personal, beta o finanzas. Las etiquetas distinguen mayúsculas y minúsculas.

Un usuario tiene un conjunto de etiquetas. El ACL de un ítem es una lista de etiquetas, cada una de las cuales puede llevar, tras dos puntos, las operaciones que concede:

OperaciónLetra
Leerr
Escribir (editar)w
Añadir hijosa
Eliminard
Entrada del ACL del ítemSignificado
finanzasAcceso de lectura para usuarios con la etiqueta finanzas (igual que finanzas:r)
finanzas:rwAcceso de lectura y escritura para usuarios con la etiqueta finanzas
finanzas:rwadTodas las operaciones para usuarios con la etiqueta finanzas
*:rAcceso de lectura para todos los usuarios

Cada operación se concede solo con su propia letra: finanzas:w permite editar un ítem, pero no leerlo ni eliminarlo. Para editar, normalmente hace falta rw.

Reglas

Un ACL vacío, en cualquiera de los dos lados, significa que no se aplica ninguna regla:

  • Un ítem sin etiquetas es abierto: todos pueden leerlo, escribirlo, añadirle hijos y eliminarlo.
  • Un usuario sin etiquetas tiene todos los derechos sobre todos los ítems.

En los demás casos:

  • Un usuario puede realizar una operación sobre un ítem si tiene una etiqueta a la que el ACL del ítem concede esa operación. * en el ACL de un ítem representa a cualquier usuario.
  • Un usuario con la etiqueta o admin tiene todos los derechos sobre todos los ítems. En un usuario, representa todos los derechos; en un ítem, a todos los usuarios.
  • Una petición sin usuario identificado es anónima, y solo puede usar ítems sin etiquetas.

Dejar vacías las etiquetas de un usuario es concederle, a propósito, todos los derechos. Los usuarios creados automáticamente en su primer inicio de sesión único nunca quedan vacíos: reciben las etiquetas por defecto configuradas (staff, salvo que se indique otra cosa).

Subítems

El padre de un ítem es el ítem que lo contiene como componente (∋), como tarea (*) o como enlace de la barra lateral (-). Las etiquetas siguen a ese padre:

  • Un ítem nuevo toma las etiquetas de su padre. El formulario de alta las muestra ya rellenas. Los ítems enlazados de otra forma, como un evento causado por un ítem, empiezan sin etiquetas.
  • Un cambio llega a los ítems que lo seguían. Cuando cambian las etiquetas de un ítem, todos los ítems por debajo que aún tenían las etiquetas anteriores reciben las nuevas. Un ítem con etiquetas propias las conserva, y también todo lo que hay por debajo que sigue a esas.
  • Un ítem movido que seguía a su padre anterior toma las etiquetas del nuevo. Uno con etiquetas propias las conserva.

Los ítems etiquetados reference, que se comparten entre varios padres, quedan fuera de las tres reglas: conservan las etiquetas que se les den.

Quién puede cambiar las etiquetas

Fijar las etiquetas de un ítem requiere todos los derechos sobre él — una etiqueta con rwad, o * / admin en el usuario. Lo mismo vale para crear un ítem con etiquetas distintas de las que tomaría de su padre: requiere todos los derechos sobre el padre. Cualquiera puede restringir un ítem sin etiquetas, porque sobre él todos tienen todos los derechos. Sin ese derecho, el campo se muestra pero no se puede editar.

Ejemplo

ACL
Usuario Aliciapersonal, finanzas
Usuario Robertopersonal
Usuaria Carmen(ninguna)
Ítem Afinanzas:rwad
Ítem Bpersonal
Ítem Cpersonal finanzas:rw
Ítem D(ninguna)
  • Ítem A: Alicia puede leerlo, editarlo y eliminarlo. Roberto no puede verlo.
  • Ítem B: Tanto Alicia como Roberto pueden verlo. Ninguno puede editarlo.
  • Ítem C: Ambos pueden verlo; solo Alicia puede editarlo.
  • Ítem D: Todos pueden verlo y editarlo.
  • Carmen no tiene etiquetas, así que puede hacer cualquier cosa con los cuatro ítems.