Creacion del Modelo y Controller auth
Fecha: Martes 16 de junio de 2026
Hora de inicio: 9:00 a.m.
Hora de finalización: 11:00 a.m.
Total de horas trabajadas: 2 horas
Objetivo de la
sesión
El objetivo de esta sesión fue implementar la
conexión entre la base de datos y las funciones de autenticación de la
aplicación.
Para esto trabajé en modelo_auth.py y controlador_auth.py, encargados de
manejar el inicio y cierre de sesión, el portal del empleado y la impersonación
realizada por un usuario administrador.
Actividades
realizadas
9:00 a.m. - 9:45
a.m.
Creación del
modelo de autenticación
Primero trabajé en modelo_auth.py, donde agregué las funciones necesarias para ejecutar los procedimientos
almacenados relacionados con la sesión.
Se implementaron las funciones para:
- Iniciar sesión.
- Cerrar sesión.
- Obtener el empleado asociado con un usuario.
- Registrar eventos relacionados con la sesión.
Las llamadas a la base de datos se realizaron
utilizando parámetros, evitando colocar valores directamente dentro de las
instrucciones SQL.
En el caso del procedure de inicio de sesión fue
necesario recorrer los conjuntos de resultados con nextset, hasta encontrar el resultado que contiene resultCode.
Posteriormente, el resultado se convierte en un
diccionario para que el controlador pueda acceder fácilmente al identificador
del usuario, nombre, tipo y código de resultado.
Img. 1: Login
9:45 a.m. - 10:40
a.m.
Creación del
controlador de autenticación
Después desarrollé controlador_auth.py, utilizando un Blueprint para agrupar las
rutas relacionadas con autenticación.
En la ruta de inicio de sesión se reciben el nombre
de usuario y la contraseña enviados desde el formulario. Luego se llama al
modelo y se revisa el código retornado.
Si el inicio de sesión es exitoso, los datos
principales se guardan en session y el usuario es
redirigido según su tipo:
- Los administradores ingresan a la lista de empleados.
- Los empleados ingresan a su portal.
También agregué mensajes para los casos en que el
usuario no existe, la contraseña es incorrecta o la cuenta se encuentra
bloqueada.
La función de cierre de sesión llama al procedimiento correspondiente, limpia los datos almacenados en la sesión y redirige nuevamente al login.
10:40 a.m. -11:00 a.m.
Impersonación y
pruebas
Finalmente agregué las rutas de impersonación.
Esta funcionalidad permite que un administrador
seleccione un empleado e ingrese temporalmente a la interfaz que dicho empleado
puede visualizar.
Antes de impersonar se guardan los datos del administrador en la sesión. Al regresar a la interfaz administrativa, estos datos se restauran y se eliminan las variables temporales de impersonación. Al final realicé pruebas básicas para comprobar el inicio y cierre de sesión, la redirección según el tipo de usuario y el regreso correcto desde la interfaz del empleado.
Resultado de
la sesión
Durante esta sesión quedaron implementados el modelo
y el controlador de autenticación.
Con esto, la aplicación permite iniciar y cerrar
sesión, identificar el tipo de usuario, mostrar el portal del empleado,
impersonar empleados desde una sesión administrativa y registrar estas acciones
en la bitácora.
La separación entre modelo y controlador permite
mantener las consultas a la base de datos fuera de las rutas y facilita
realizar cambios posteriores.
Referencias
- Flask – Quickstart y manejo de sesiones:
https://flask.palletsprojects.com/en/stable/quickstart/#sessions - Flask – Message Flashing:
https://flask.palletsprojects.com/en/stable/patterns/flashing/ - Flask – Modular Applications with
Blueprints:
https://flask.palletsprojects.com/en/stable/blueprints/ - Repositorio oficial de pyodbc:
https://github.com/mkleehammer/pyodbc - Documentación y código de la Tarea 2
Comentarios
Publicar un comentario