Rol medico: pagina Mis ventas con KPIs y comision estimada, menu restringido y bloqueo de endpoints de dinero global

This commit is contained in:
2026-08-31 03:56:48 +00:00
parent 009f84ce4a
commit 57efc3d9d3
10 changed files with 366 additions and 5 deletions

View File

@@ -22,6 +22,19 @@ SECRET_KEY = 'skeen.frontend.secret'
RANK = ROLE_RANKS
# Módulos de dinero globales vetados para el rol 'medico' por API: su menú ya
# los oculta (MENU_ROLES) y aquí se cierra la vía directa con token. Su propio
# reporte (/my/sales) no pasa por esta lista.
MEDICO_BLOCKED_PREFIXES = (
'/skeen/frontend/v1/reports/',
'/skeen/frontend/v1/sales',
'/skeen/frontend/v1/payments',
'/skeen/frontend/v1/wallets',
'/skeen/frontend/v1/pos/',
'/skeen/frontend/v1/cash_closings',
'/skeen/frontend/v1/doctors/',
)
def _cors_headers():
return {
@@ -118,6 +131,8 @@ def require_role(min_role='lectura'):
return _json({'status': 'error', 'message': 'No autenticado'}, 401)
if user.role_rank() < required:
return _json({'status': 'error', 'message': 'Sin permiso'}, 403)
if user.role == 'medico' and request.httprequest.path.startswith(MEDICO_BLOCKED_PREFIXES):
return _json({'status': 'error', 'message': 'Sin permiso'}, 403)
request.frontend_user = user
return func(self, *args, **kw)
return wrapper