Convenciones internas (controllers, helpers, sesión, permisos, CSRF, logs)
Objetivo
Que un dev nuevo sepa “cómo se hacen las cosas aquí” para evitar bugs y duplicación de lógica.
1) Controllers (patrón CRUD base)
Muchos controllers heredan de una clase base Controller que ya trae CRUD genérico contra una tabla:
- Base: controller.php
Convenciones típicas:
- Cada controller define public $table = "nombre_tabla";
- Se usan helpers del base controller:
- get($id) trae el registro y además intenta decodificar el campo data como JSON ( data_decoded )
- insert($record) , update($record) , delete($id) filtran campos inválidos usando SHOW FIELDS
Ejemplo real con lógica adicional:
- UserController::login
2) Helpers (utilidades compartidas)
Existe un archivo grande de helpers con funciones reutilizadas por páginas/controllers (tablas, mail, traducción, logs, etc.):
- helpers.php
Regla práctica:
- Si una funcionalidad se usa en varias pantallas/módulos, normalmente se coloca aquí (o en un controller dedicado).
3) Sesión y usuario actual
- La sesión se inicia al comienzo del router:
- router.php
- Al loguearse se asigna:
- $_SESSION['current_user']
- Referencia: login.php
4) Permisos y autorización
Hay dos niveles frecuentes:
- Registro de rutas por permiso (si no cumple, la ruta ni se registra):
- Ejemplo: routes.php
- Chequeo dentro de validateLogin() que valida que existan menús/permissions para el rol:
- validateLogin (menús/permissions)
Regla práctica:
- Si un dev “no ve” un módulo, muchas veces es porque:
- La ruta está envuelta en validatePermission(...)
- El rol no tiene permisos/menús en DB
5) CSRF y manejo de POST
Las rutas con ['validatePost'] activan:
- Validación CSRF para requests con POST
- Generación/rotación del token en sesión
Referencia:
- validatePost
- is_csrf_valid
Regla práctica:
- Si un POST “no hace nada”, revisa si el CSRF falló: el código hace unset($_POST) cuando no valida.
6) Logs de aplicación
El proyecto usa Monolog y escribe en:
- c:\xampp\htdocs\moneytechcrm\log\app.log
Función central:
- helper_log
Regla práctica:
- Para depuración rápida, se usa helper_log($var) desde pages/controllers/router.