=============================================================================== GUÍA RÁPIDA - PRESTO 4.0 KAPITAL Sistema de Permisos y Configuración Última actualización: 2025-11-24 =============================================================================== 📍 UBICACIÓN Proyecto: C:\xampp\htdocs\presto_4.0_kapital Base de Datos: kapital_presto_ks URL: http://localhost/presto_4.0_kapital/ =============================================================================== 📚 ARCHIVOS DE DOCUMENTACIÓN (LEER EN ESTE ORDEN) =============================================================================== 1. GUIA_RAPIDA.txt <- Este archivo (inicio rápido) 2. RESUMEN_CAMBIOS_RECIENTES.md <- Qué se hizo recientemente 3. CONFIGURACION_SISTEMA_PERMISOS.md <- Configuración completa 4. DOCUMENTACION_PERMISO_ELIMINAR_PEDIDOS.md <- Detalles técnicos 5. INSTRUCCIONES_VERIFICAR_PERMISO.md <- Cómo probar 6. SQL_PERMISO_ELIMINAR_PEDIDOS.sql <- Script SQL de permisos =============================================================================== 🎯 ÚLTIMO CAMBIO IMPLEMENTADO =============================================================================== FUNCIONALIDAD: Eliminar Pedidos con Control de Permisos MÓDULO: 69 - "Eliminar Pedidos" PERFIL CON ACCESO: Admin (ID: 1) ARCHIVOS MODIFICADOS: - pedidos/acciones.php (backend) - pedidos/sucursales.php (vista) - pedidos/index.js (frontend) =============================================================================== 🔐 SISTEMA DE PERMISOS =============================================================================== CLASE: vendor/Security.php MÉTODO: $security->PermisoModulo($id_modulo) RETORNA: 0=Sin acceso, 1=Lectura, 2=Escritura, 3=Total EJEMPLO PHP: $permiso = $security->PermisoModulo(69); if ($permiso > 0) { /* tiene acceso */ } EJEMPLO JS: if (Index.permiso_eliminar > 0) { /* mostrar botón */ } =============================================================================== 📊 TABLAS IMPORTANTES =============================================================================== cat_modulo ├─ id (PK) ├─ numero ├─ nombre └─ menu cat_permiso ├─ id (PK) ├─ id_perfil (FK) ├─ id_modulo (FK) └─ permiso_acceso (0-3) cat_perfil ├─ id (PK) └─ nombre cat_usuario_sistema ├─ id (PK) ├─ usuario ├─ pass ├─ nombre └─ id_perfil (FK) =============================================================================== 🚀 PASOS PARA AGREGAR NUEVO PERMISO =============================================================================== 1. BASE DE DATOS SELECT MAX(id) + 1 FROM cat_modulo; -- Obtener siguiente ID INSERT INTO cat_modulo (id, numero, nombre, menu) VALUES ([ID], '[ID]', '[NOMBRE]', '[MENU]'); INSERT INTO cat_permiso (id_perfil, id_modulo, permiso_acceso) VALUES (1, [ID], '3'); -- Asignar a Admin 2. BACKEND (acciones.php) if ($security->PermisoModulo([ID]) == 0) { header('HTTP/1.1 403 FORBIDDEN'); exit; } 3. VISTA (index.php o similar) $permiso_nuevo = $security->PermisoModulo([ID]); // Pasar a JS: permiso_nuevo: 4. FRONTEND (index.js) permiso_nuevo: 0, init: function(data) { this.permiso_nuevo = data.permiso_nuevo || 0; } // Validar: if (Index.permiso_nuevo > 0) { /* código */ } =============================================================================== 📝 CONSULTAS SQL ÚTILES =============================================================================== -- Ver permisos de usuario SELECT u.usuario, pf.nombre, m.nombre, p.permiso_acceso FROM cat_usuario_sistema u JOIN cat_perfil pf ON u.id_perfil = pf.id LEFT JOIN cat_permiso p ON pf.id = p.id_perfil LEFT JOIN cat_modulo m ON p.id_modulo = m.id WHERE u.usuario = 'admin'; -- Ver módulo específico SELECT * FROM cat_modulo WHERE id = 69; SELECT * FROM cat_permiso WHERE id_modulo = 69; -- Asignar permiso a perfil INSERT INTO cat_permiso (id_perfil, id_modulo, permiso_acceso) VALUES (5, 69, '3'); -- Gerentes → Eliminar Pedidos -- Revocar permiso DELETE FROM cat_permiso WHERE id_perfil = 11 AND id_modulo = 69; =============================================================================== 🔧 COMANDOS ÚTILES =============================================================================== # Conectar a MySQL c:\xampp\mysql\bin\mysql -u root # Usar base de datos USE kapital_presto_ks; # Ejecutar script SQL c:\xampp\mysql\bin\mysql -u root kapital_presto_ks < script.sql # Verificar Apache/MySQL netstat -ano | findstr ":80" netstat -ano | findstr ":3306" # Abrir navegador start http://localhost/presto_4.0_kapital/ =============================================================================== 🧪 TESTING RÁPIDO =============================================================================== URL TEST: http://localhost/presto_4.0_kapital/pedidos/test_permiso.php URL PEDIDOS: http://localhost/presto_4.0_kapital/pedidos/sucursales.php ADMIN (con permiso): ✅ Ve botón 🗑️ en pedidos "Sin Surtir" ✅ Puede eliminar pedidos OTROS (sin permiso): ❌ NO ve botón 🗑️ ❌ HTTP 403 si intenta por API =============================================================================== 📂 ESTRUCTURA DE ARCHIVOS CLAVE =============================================================================== vendor/ ├─ DBA.php <- Acceso a BD ├─ Security.php <- Sistema de permisos ⭐ ├─ funciones.php <- Funciones globales └─ EncryptClass.php <- Encriptación estructura/ ├─ menu.php <- Menú dinámico con permisos ⭐ ├─ pie.php <- Footer └─ sistema.php <- Nombre del sistema pedidos/ ├─ sucursales.php <- Vista de pedidos ⭐ ├─ acciones.php <- API AJAX ⭐ └─ index.js <- Lógica frontend ⭐ connect.php <- Configuración BD login.php <- Autenticación =============================================================================== 🎓 CONCEPTOS CLAVE =============================================================================== 1. PERMISOS GRANULARES - Cada funcionalidad = 1 módulo - Cada perfil tiene permisos por módulo - Niveles: 0, 1, 2, 3 2. VALIDACIÓN DOBLE CAPA - Frontend: oculta opciones (UX) - Backend: valida acceso (seguridad) 3. PATRÓN MVC SIMPLIFICADO - index.php = Vista - acciones.php = Controlador - index.js = Interactividad 4. AJAX CON JQUERY - POST a acciones.php - Parámetro: op=[operacion] - Respuesta: JSON 5. DATATABLES - Tablas dinámicas - Paginación, búsqueda, ordenamiento - Renderizado con JS =============================================================================== ⚡ INICIO RÁPIDO PARA NUEVAS CONVERSACIONES =============================================================================== CONTEXTO: Sistema: Presto 4.0 Kapital (ERP restaurantero) Ubicación: C:\xampp\htdocs\presto_4.0_kapital BD: kapital_presto_ks (MySQL) Última implementación: Módulo 69 "Eliminar Pedidos" ARCHIVOS CLAVE: - vendor/Security.php (sistema de permisos) - estructura/menu.php (menú dinámico) - pedidos/acciones.php (último módulo trabajado) ESTADO: ✅ Sistema de permisos funcional ✅ Eliminar pedidos implementado ✅ Documentación completa ✅ Listo para producción SIGUIENTE: 1. Leer CONFIGURACION_SISTEMA_PERMISOS.md para contexto completo 2. Verificar test_permiso.php 3. Asignar permisos a otros perfiles si necesario =============================================================================== 📞 PERFILES EXISTENTES =============================================================================== ID | Nombre | Descripción ----|----------------|--------------------------------------- 1 | Admin | Acceso total (tiene módulo 69) 2 | RRHH Admin | Recursos Humanos 5 | Gerentes | Gerentes generales 7 | Gerente op | Gerente operacional 10 | Admin Gerente | Admin + Gerente 11 | Comisariato | Almacén/Inventario 14 | Jefes de Cocina| Producción 16 | Contadora | Contabilidad 17 | Compras | Departamento de compras =============================================================================== 🎯 CHECKLIST POST-IMPLEMENTACIÓN =============================================================================== [x] Módulo 69 creado en BD [x] Permiso asignado a Admin [x] Backend validando permiso [x] Frontend controlando visibilidad [x] Botón eliminar funcional [x] Confirmación SweetAlert [x] Documentación creada [ ] test_permiso.php eliminado (después de verificar) [ ] Asignar a otros perfiles (opcional) =============================================================================== FIN DE LA GUÍA RÁPIDA ===============================================================================