diff --git a/ci4/app/Config/RBAC/permissionMatrix.php b/ci4/app/Config/RBAC/permissionMatrix.php index e8a6010b..9baeb81d 100644 --- a/ci4/app/Config/RBAC/permissionMatrix.php +++ b/ci4/app/Config/RBAC/permissionMatrix.php @@ -21,8 +21,6 @@ const SK_PERMISSION_MATRIX = [ "presupuesto-cliente.edit", "presupuesto-cliente.delete", "presupuesto-cliente.menu", - "pedidos-validacion.view", - "pedidos-validacion.menu", "pedidos-activos.view", "pedidos-activos.menu", "pedidos-finalizados.view", @@ -31,8 +29,6 @@ const SK_PERMISSION_MATRIX = [ "pedidos-cancelados.menu", "pedidos-todos.view", "pedidos-todos.menu", - "pedidos-gestion.toprod", - "pedidos-gestion.menu", "tarifa-preimpresion.create", "tarifa-preimpresion.edit", "tarifa-preimpresion.delete", @@ -224,6 +220,10 @@ const SK_PERMISSION_MATRIX = [ "proveedores.menu", "tickets.edit", "tickets.menu", + "facturas.create", + "facturas.edit", + "facturas.vencimientos", + "facturas.menu", ], "contabilidad" => [ "token.token", diff --git a/ci4/app/Config/RBAC/permissions.php b/ci4/app/Config/RBAC/permissions.php index fe9506f3..60a7ee8e 100644 --- a/ci4/app/Config/RBAC/permissions.php +++ b/ci4/app/Config/RBAC/permissions.php @@ -103,4 +103,8 @@ const SK_PERMISSIONS = [ 'roles-permisos.menu' => 'Menu shall be visualize', 'tickets.edit' => 'Can edit', 'tickets.menu' => 'Menu shall be visualize', + 'facturas.create' => 'Can create', + 'facturas.edit' => 'Can edit', + 'facturas.vencimientos' => 'Can vencimientos', + 'facturas.menu' => 'Menu shall be visualize', ]; diff --git a/ci4/app/Controllers/Compras/Proveedores.php b/ci4/app/Controllers/Compras/Proveedores.php index 0ac9be3e..cca3fe73 100755 --- a/ci4/app/Controllers/Compras/Proveedores.php +++ b/ci4/app/Controllers/Compras/Proveedores.php @@ -50,6 +50,8 @@ class Proveedores extends \App\Controllers\BaseResourceController { public function index() { + + checkPermission('proveedores.menu'); $viewData = [ 'currentModule' => static::$controllerSlug, @@ -67,9 +69,7 @@ class Proveedores extends \App\Controllers\BaseResourceController { public function add() { - - - + checkPermission('proveedores.create'); if ($this->request->getPost()) : @@ -138,6 +138,8 @@ class Proveedores extends \App\Controllers\BaseResourceController { } // end function add() public function edit($requestedId = null) { + + checkPermission('proveedores.edit'); if ($requestedId == null) : return $this->redirect2listView(); diff --git a/ci4/app/Controllers/Facturacion/Facturas.php b/ci4/app/Controllers/Facturacion/Facturas.php index 22c4985c..9469b5ec 100755 --- a/ci4/app/Controllers/Facturacion/Facturas.php +++ b/ci4/app/Controllers/Facturacion/Facturas.php @@ -41,6 +41,7 @@ class Facturas extends \App\Controllers\BaseResourceController public function index() { + checkPermission('facturas.menu'); if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) { // Se obtiene el cliente ID a partir del usuario de la sesion @@ -62,6 +63,7 @@ class Facturas extends \App\Controllers\BaseResourceController public function list() { + checkGroups(['admin', 'cliente-admin', 'cliente-editor', 'contabilidad']); $viewData = [ 'currentModule' => static::$controllerSlug, @@ -103,6 +105,8 @@ class Facturas extends \App\Controllers\BaseResourceController public function add() { + checkPermission('facturas.create'); + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -200,6 +204,7 @@ class Facturas extends \App\Controllers\BaseResourceController public function edit($id = null) { + checkPermission('facturas.edit'); if ($id == null): return $this->redirect2listView(); @@ -328,26 +333,29 @@ class Facturas extends \App\Controllers\BaseResourceController } ) ->add("action", callback: function ($q) { - if ($q->estado == 'borrador') { - return ' + if (auth()->user()->can('facturas.edit')) { + if ($q->estado == 'borrador') { + return '
'; - } else { - return ' + } else { + return '
'; - } + } + } else + return ''; }); if ($clienteId != -1) { $result->hide('cliente'); $result->hide('creditoAsegurado'); - if(!$dataForClienteForm){ + if (!$dataForClienteForm) { $result->hide('estado'); - $result->hide('estado_pago'); + $result->hide('estado_pago'); } $result->hide('forma_pago'); $result->hide('vencimiento'); @@ -357,7 +365,8 @@ class Facturas extends \App\Controllers\BaseResourceController return $result->toJson(returnAsObject: true); } - public function getDatosFacturacionClienteForm($cliente_id){ + public function getDatosFacturacionClienteForm($cliente_id) + { return $this->respond($this->model->getSumatoriosFacturacionCliente($cliente_id)); } @@ -498,7 +507,7 @@ class Facturas extends \App\Controllers\BaseResourceController ->update(); $this->model->db->query('DELETE FROM facturas_pedidos_lineas WHERE factura_id=' . $id); - + // $message = lang('Basic.global.deleteSuccess', [$objName]); IMN commented $message = lang('Basic.global.deleteSuccess', [lang('Basic.global.record')]); $response = $this->respondDeleted(['id' => $id, 'msg' => $message]); diff --git a/ci4/app/Controllers/Sistema/Actividad.php b/ci4/app/Controllers/Sistema/Actividad.php index 263bd8dd..290fb8b9 100644 --- a/ci4/app/Controllers/Sistema/Actividad.php +++ b/ci4/app/Controllers/Sistema/Actividad.php @@ -35,6 +35,7 @@ class Actividad extends BaseResourceController public function index() { + checkPermission('actividad.menu'); $viewData = [ diff --git a/ci4/app/Controllers/Sistema/Ajustes.php b/ci4/app/Controllers/Sistema/Ajustes.php index 9165bf0e..a610783f 100644 --- a/ci4/app/Controllers/Sistema/Ajustes.php +++ b/ci4/app/Controllers/Sistema/Ajustes.php @@ -40,6 +40,7 @@ class Ajustes extends BaseResourceController public function settings() { + checkPermission('ajustes.menu'); $id = 1; $settingsEntity = $this->model->find($id); diff --git a/ci4/app/Controllers/Soporte/Ticketcontroller.php b/ci4/app/Controllers/Soporte/Ticketcontroller.php index d760d8c7..d9b65178 100644 --- a/ci4/app/Controllers/Soporte/Ticketcontroller.php +++ b/ci4/app/Controllers/Soporte/Ticketcontroller.php @@ -44,7 +44,7 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController public function index() { - //checkPermission('tickets.menu'); + checkPermission('tickets.menu'); $viewData = [ 'currentModule' => static::$controllerSlug, @@ -69,7 +69,7 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController public function add() { - //checkPermission('tickets.create', $this->indexRoute); + checkPermission('tickets.create'); if ($this->request->getPost()): @@ -145,6 +145,9 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController public function edit($requestedId = null) { + + checkPermission('tickets.edit'); + $modelRespuesta = new \App\Models\Soporte\TicketRespuestaModel(); if ($requestedId == null): diff --git a/ci4/app/Helpers/rbac_helper.php b/ci4/app/Helpers/rbac_helper.php index 6eb65e33..422250a6 100644 --- a/ci4/app/Helpers/rbac_helper.php +++ b/ci4/app/Helpers/rbac_helper.php @@ -120,3 +120,37 @@ if (!function_exists('checkPermission')) { } } +if (!function_exists('checkGroups')) { + /** + * Verifica si el usuario pertenece a alguno de los grupos especificados. + * + * @param array $groups Lista de grupos permitidos. + * @param string|null $redirectRoute Ruta de redirección si no pertenece a ningún grupo. + * @return \CodeIgniter\HTTP\RedirectResponse|null + */ + function checkGroups(array $groups, string $redirectRoute = null) + { + $session = \Config\Services::session(); + $response = \Config\Services::response(); + $auth = auth(); // Shield auth service + + $user = $auth->user(); + + $inGroup = false; + foreach ($groups as $group) { + if ($user->inGroup($group)) { + $inGroup = true; + break; + } + } + + if (!$inGroup) { + $session->setFlashdata('errorMessage', 'No tiene permisos de acceso.'); + $route = $redirectRoute ?? 'home'; + return $response->redirect(route_to($route)); + } + + return null; + } +} + diff --git a/ci4/app/Language/es/RolesPermisos.php b/ci4/app/Language/es/RolesPermisos.php index 859e8c50..788287c3 100644 --- a/ci4/app/Language/es/RolesPermisos.php +++ b/ci4/app/Language/es/RolesPermisos.php @@ -59,7 +59,9 @@ return [ 'seriesFacturasSection' => 'Series facturas', 'ajustesSection' => 'Ajustes', 'actividadSection' => 'Accesos', - + 'facturasSection' => 'Facturas', + 'albaranesPermission' => 'Albaranes', + 'vencimientosPermission' => 'Vencimientos', "ticketsSection" => "Tickets", 'validation' => [ diff --git a/ci4/app/Views/themes/vuexy/main/menus/compras_menu.php b/ci4/app/Views/themes/vuexy/main/menus/compras_menu.php index 8af7bd89..cc2dd5e8 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/compras_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/compras_menu.php @@ -2,35 +2,45 @@ /** * MENU COMPRAS */ -if (auth()->user()->inGroup('beta')) { -?> - - - +if ( + auth()->user()->can('proveedores.menu') || + auth()->user()->inGroup('beta') +) { + + ?> + + + \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php b/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php index 5a3621f9..169ae9c3 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php @@ -6,127 +6,127 @@ if ( auth()->user()->can('paises.menu') || auth()->user()->can('formas-pago.menu') || - auth()->user()->can('papel-genericosk .menu') || + auth()->user()->can('papel-generico.menu') || auth()->user()->can('papel-impresion.menu') || auth()->user()->can('maquinas.menu') || auth()->user()->can('maquinas-defecto.menu') || auth()->user()->can('usuarios.menu') || auth()->user()->can('roles-permisos.menu') ) { -?> - \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/main/menus/facturacion_cliente_menu.php b/ci4/app/Views/themes/vuexy/main/menus/facturacion_cliente_menu.php index 52553898..94f0f2f5 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/facturacion_cliente_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/facturacion_cliente_menu.php @@ -12,15 +12,10 @@ if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/main/menus/facturacion_menu.php b/ci4/app/Views/themes/vuexy/main/menus/facturacion_menu.php index d2a4bc73..32b156e0 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/facturacion_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/facturacion_menu.php @@ -2,35 +2,34 @@ /** * MENU FACTURACION */ -if (auth()->user()->inGroup('beta')) { +if (auth()->user()->can('facturas.menu')) { ?> - + \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/main/menus/mensajes_menu.php b/ci4/app/Views/themes/vuexy/main/menus/mensajes_menu.php index 7faa33da..0f82e9ca 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/mensajes_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/mensajes_menu.php @@ -2,9 +2,9 @@ /** * MENU MENSAJES */ -if (auth()->user()->inGroup('beta') || auth()->user()->inGroup('cliente-editor')) { +if (auth()->user()->inGroup('cliente-editor')) { ?> - + + + \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js index 6962c8db..a67afda7 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js @@ -186,6 +186,13 @@ class Envios { self.recogerTaller.prop('checked', true); self.insertarEnvio.addClass('d-none'); self.modalYesNo.hide(); + $(document).trigger('update-presupuesto', { + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }); }); } else {