Skip to main content

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.