Saltar a contenido

sessions

app.common.middlewares.sessions

Middlewares (clases y funciones) para validación de sesiones de usuario. No modifiques este módulo directamente, hazle una copia y realiza tu propia implementación para la gestión de sesiones, roles y permisos.

Para más información, te recomendamos leer la documentación del Proyecto.

HasRoles

Una clase utilizada como DI para obtener una lista con información de los roles, validarlos y utilizarlos dentro de una vista (view).

Warning

esta clase:

  • se necesitan más pruebas y ejemplos.
Notes
  • esta clase chequea que al menos uno de los roles exista, en la lista de roles enviados por la vista.
  • si no se envía ningún rol, se asigna y se valida el rol de menor privilegio, AuthRoles.ANONYMOUS_USER.
  • esta clase obtiene los datos a validar, del objeto request.state para más información, consulta la función validate_auth_session en app.common.middlewares.auth.

Raises:

Type Description
HTTPException

una excepción para devolver respuestas HTTP con errores al cliente

DefaultException

excepciones para el manejo de errores personalizados

None

en caso de un error

Examples:

1
2
3
4
from app.common.middlewares.sessions import HasRoles

async def get(roles: Any = Depends(HasRoles(["ROLE1", "ROLE2"]))):
    ...

__init__(role_list)

Constructor de la clase HasRoles

Parameters:

Name Type Description Default
role_list list[StrictStr]

un lista con los nombres de los roles a validar.

required

__call__(request) async

Este método permite que la instancia de esta clase, sea callable, y de esta manera podemos "parametrizar" nuestra dependencia.

Parameters:

Name Type Description Default
request Request

una instancia de Request para las conexiones HTTP entrantes.

required

Raises:

Type Description
HTTPException

una excepción para devolver respuestas HTTP con errores al cliente

DefaultException

excepciones para el manejo de errores personalizados

None

en caso de un error

Returns:

Type Description
Optional[StrictStr]

el rol del obtenido de la sesión, ó None en caso de error

HasPerms

Una clase utilizada como DI para obtener una lista con información de los permisos, validarlos y utilizarlos dentro de una vista (view).

Warning

esta clase:

  • se necesitan más pruebas y ejemplos.
Notes
  • 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ón validate_auth_session en app.common.middlewares.auth.

Raises:

Type Description
HTTPException

una excepción para devolver respuestas HTTP con errores al cliente

DefaultException

excepciones para el manejo de errores personalizados

None

en caso de un error

Examples:

1
2
3
4
from app.common.middlewares.sessions import HasPerms

async def get(perms: Any = Depends(HasPerms(["perm1", "perm2"]))):
    ...

__init__(perm_list)

Constructor de la clase HasPerms

Parameters:

Name Type Description Default
perm_list list[StrictStr]

una lista con los nombres de los permisos.

required

__call__(request) async

Este método permite que la instancia de esta clase, sea callable, y de esta manera podemos "parametrizar" nuestra dependencia.

Parameters:

Name Type Description Default
request Request

una instancia de Request para las conexiones HTTP entrantes.

required

Raises:

Type Description
HTTPException

una excepción para devolver respuestas HTTP con errores al cliente

DefaultException

excepciones para el manejo de errores personalizados

None

en caso de un error

Returns:

Type Description
Optional[list[StrictStr]]

una lista de permisos obtenidos de la sesión, ó None en caso de error

session_info(request)

Una función utilizada como DI para obtener un objeto con información de la sesión y utilizarlo dentro de una vista (view).

Parameters:

Name Type Description Default
request Request

una instancia de Request para las conexiones HTTP entrantes.

required
Notes
  • esta clase valida que existan algunos campos comunes, en el objeto de la sesión.
  • esta clase obtiene los datos a validar, del objeto request.state para más información, consulta la función validate_auth_session en app.common.middlewares.auth.

Raises:

Type Description
HTTPException

una excepción para devolver respuestas HTTP con errores al cliente

DefaultException

excepciones para el manejo de errores personalizados

None

en caso de un error

Returns:

Type Description
Optional[object]

un objeto con la información obtenida de la sesión ó None en caso de no estar presente el objeto de sesión

Examples:

1
2
3
4
from app.common.middlewares.sessions import session_info

async def get(session: Optional[object | Any] = Depends(session_info)):
    ...