Permisos
En el apartado de middlewares se explicaba que estos intervienen en acciones que permiten interceptar y/o modificar el flujo de datos.
En esta entrada, nos enfocaremos en la validación de permisos, utilizando la clase HasPerms
.
Disponible en el módulo app.common.middlewares.sessions
Nota
- Te recomendamos leer, el apartado de Inyección de Dependencias.
- Es necesario utilizar la dependencia (Depend) validate_auth_session, para que esta clase funcione en un route.
HasPerms
es una clase utilizada como Inyección de Dependencias, para realizar las siguientes operaciones:
Definición
-
al menos un permiso es requerido.
-
esta clase chequea que todos y cada uno los permisos a validar, existan en la lista de permisos enviados por la vista.
-
esta clase obtiene los datos a validar, del objeto
request.state
para más información, consulta la funciónvalidate_auth_session
enapp.common.middlewares.auth
. -
inyecta en el route, la lista de permisos obtenidos de la
sesión
, óNone
en caso de error.
Las dependencias no tienen que ser funciones; también pueden ser clases. Al declarar HasPerms como clase, FastAPI la instanciará y le inyectará los parámetros necesarios cuando se use.
la clase HasPerms buscará en el objeto request.state
si existe una llave llamada permissions
y verifica que todos los permisos, de la lista enviada, existan, en esta llave.
Nota
- Te recomendamos leer, el módulo app.common.middlewares.auth
veamos un ejemplo:
agregamos la dependencia validate_auth_session:
utilizamos HasPerms en un route:
Recuerda
Recuerda utilizar la dependencia (Depend) validate_auth_session, para que esta clase funcione correctamente en un route, de lo contrario generará un error al validar los permisos.