Auditoria de plataforma: rutas rotas y errores por rol
Recorrido dinamico de las 26 rutas con los 10 roles (260 visitas con navegador real) mas revision estatica de endpoints FE vs BE. Hallazgos y correcciones: - frontend.py: expedientes_recientes no tenia @http.route (el endpoint /expedientes-recientes respondia 404). Se expone con GET + lectura. - auth.py: MEDICO_BLOCKED_PREFIXES hacia match por startswith, asi que /sales_goal quedaba bloqueado para medicos (403 en consola en todas las pantallas por el widget de meta del mes). Ahora el match exige frontera de path (/sales bloquea /sales/x pero no /sales_goal). - Reportes: getCommissions (endpoint admin-only) iba dentro de un Promise.all; el 403 tumbaba todo el tab General para recepcion, gerencia, enfermeria, psicologa, farmacia y lectura. Ahora va en peticion aislada y solo se llama para admin; la seccion de comisiones del tab General solo se renderiza para admin. - Matriz de menus guardada: medico habia quedado fuera de /pacientes y /visitas (los defaults del codigo lo incluyen y los medicos lo necesitan para ver clientes e historial). Restaurado via PUT /roles/permissions (queda en skeen_config_audit). Verificado con navegador: medico entra a /pacientes y /visitas sin 403; recepcion y gerencia cargan /reportes sin error; admin sigue viendo la seccion de comisiones. Usuarios temporales de auditoria eliminados.
This commit is contained in:
@@ -2797,6 +2797,7 @@ class SkeenFrontendController(http.Controller):
|
||||
'remaining_count': max(0, count - pagados) if count else 0,
|
||||
}
|
||||
|
||||
@http.route('/skeen/frontend/v1/expedientes-recientes', type='http', auth='none', methods=['GET', 'OPTIONS'], csrf=False)
|
||||
@require_role('lectura')
|
||||
def expedientes_recientes(self, **kw):
|
||||
"""Pacientes con visitas recientes (últimos 30 días por default)"""
|
||||
|
||||
Reference in New Issue
Block a user