Control de acceso

Lista de control de acceso

La ACL definida en la aplicación se aplica a registros, no a bloques. Los bloques siempre son accesibles, si no queremos que un bloque proporcione alguna información, tenemos que implementar esto en su archivo Python o usar la configuración view_permission.

Además, el control de acceso sólo afecta el acceso HTTP directo a los registros (como abrir una dirección URL de registro, eliminar un registro a través de la API de JSON, etc.) y no afecta lo que sucede en los archivos de Python de bloque.

Por ejemplo, en el Tutorial, si un visitante anónimo hace clic en el botón «Like» de una página en la que nadie había votado todavía, la función like creará un registro.

Pero un visitante anónimo no podría modificar este registro o eliminarlo usando la API de JSON.

El formato esperado es:

acl:
  rights:
    reader: [<list of users or groups>]
    author: [<list of users or groups>]
    editor: [<list of users or groups>]
  roles: {<role_id>: [<list of users or groups>]}

En la lista de usuarios o grupos, '*' significa todo el mundo.

Niveles de acceso

Los niveles de acceso son:

  • reader: puede leer todos los registros,
  • author: puede leer todos los registros, puede crear registros, puede modificar / borrar sus propios registros,
  • editor: puede leer / modificar / borrar cualquier registro, puede crear registros.

El control de acceso se gestiona en el archivo settings.yaml de la carpeta raíz de la aplicación.

Roles

Los roles no otorgan derechos específicos en los registros, pueden definirse libremente. Se utilizan en nuestras funciones de Python para cambiar el comportamiento de la aplicación dependiendo del usuario.

Por ejemplo, podríamos tener un rol llamado “PurchaseManager”, y en nuestro bloque mostraríamos un botón «Validate purchase» si el usuario actual tiene el rol “PurchaseManager”.

Permisos sobre bloques

De forma predeterminada, los bloques son accesibles por cualquier persona (incluidos los visitantes anónimos).

Al configurar el atributo view_permission en el archivo YAML de un bloque, podemos controlar el acceso a este bloque.

Su valor es una lista de usuarios o grupos.

Ejemplo:

elements:
  whatever: BASIC
view_permission:
  PurchaseDepartment
  eric

Este bloque será accesible sólo por los miembros del grupo “PurchaseDepartment” y Eric.

Esta restricción se aplica a la representación directa de bloques y las llamadas de elementos, incluidas las llamadas REST.