From c8e3dfd8732911a0f29de8a81218bd8908632dee Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 2 Jul 2024 10:40:17 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1adidos=20permisos=20a=20tarifas,=20salvo?= =?UTF-8?q?=20metodo=20delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Controllers/BaseController.php | 2 +- .../Controllers/BaseResourceController.php | 25 +------------ ci4/app/Controllers/GoBaseController.php | 2 +- .../Tarifas/Acabados/TarifaAcabados.php | 8 ++++- ci4/app/Controllers/Tarifas/Tarifaextra.php | 12 +++---- .../Controllers/Tarifas/Tarifapapelcompra.php | 35 ------------------- .../Tarifas/Tarifapapeldefecto.php | 35 ------------------- .../Tarifas/Tarifapreimpresion.php | 15 ++------ .../Tarifas/Tarifasencuadernacion.php | 6 ++-- ci4/app/Controllers/Tarifas/Tarifasenvios.php | 10 +++--- .../Controllers/Tarifas/Tarifasmanipulado.php | 11 +++--- ci4/app/Helpers/rbac_helper.php | 26 ++++++++++++++ ci4/app/Language/es/App.php | 1 + .../main/menus/presupuesto_cliente_menu.php | 14 ++++++-- .../themes/vuexy/main/menus/tarifas_menu.php | 3 +- 15 files changed, 69 insertions(+), 136 deletions(-) delete mode 100755 ci4/app/Controllers/Tarifas/Tarifapapelcompra.php delete mode 100755 ci4/app/Controllers/Tarifas/Tarifapapeldefecto.php diff --git a/ci4/app/Controllers/BaseController.php b/ci4/app/Controllers/BaseController.php index f27cea44..de8b1e4c 100755 --- a/ci4/app/Controllers/BaseController.php +++ b/ci4/app/Controllers/BaseController.php @@ -37,7 +37,7 @@ class BaseController extends Controller * * @var array */ - protected $helpers = ['general', 'go_common']; + protected $helpers = ['general', 'go_common', 'rbac']; /** * Constructor. diff --git a/ci4/app/Controllers/BaseResourceController.php b/ci4/app/Controllers/BaseResourceController.php index 68c0d9d3..ce3d7952 100644 --- a/ci4/app/Controllers/BaseResourceController.php +++ b/ci4/app/Controllers/BaseResourceController.php @@ -85,7 +85,7 @@ abstract class BaseResourceController extends \CodeIgniter\RESTful\ResourceContr * * @var array */ - protected $helpers = ['session', 'go_common', 'form', 'text', 'general']; //JJO + protected $helpers = ['session', 'go_common', 'form', 'text', 'general', 'rbac']; //JJO /** * Initializer method. @@ -130,29 +130,6 @@ abstract class BaseResourceController extends \CodeIgniter\RESTful\ResourceContr $this->viewData['alertStyle'] = $this->alertStyle; } - protected function checkPermission($sectionPermission, $redirectRoute = NULL) - { - // TODO ojo, con no redirigir al indexRoute, que se crea bucle!!! - if (!auth()->user()->can($sectionPermission)) { - $this->session->setFlashdata('errorMessage', "No tiene permisos de acceso"); - if (is_null($redirectRoute)) { - return $this->response->redirect(route_to('home')); - } else { - return $this->response->redirect(route_to($redirectRoute)); - } - } - } - - protected function checkPermissionAJAX($sectionPermission) - { - - if (!auth()->user()->can($sectionPermission)) { - return $this->fail('Error'); - } - - } - - /** * Convenience method to display the form of a module * @param $forMethod diff --git a/ci4/app/Controllers/GoBaseController.php b/ci4/app/Controllers/GoBaseController.php index 61dc5e64..669b0368 100755 --- a/ci4/app/Controllers/GoBaseController.php +++ b/ci4/app/Controllers/GoBaseController.php @@ -139,7 +139,7 @@ abstract class GoBaseController extends Controller { * * @var array */ - protected $helpers = ['session', 'go_common', 'text', 'general','jwt']; //JJO + protected $helpers = ['session', 'go_common', 'text', 'general','jwt', 'rbac']; //JJO public static $queries = []; diff --git a/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php b/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php index 04bd3460..3c1c7236 100644 --- a/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php +++ b/ci4/app/Controllers/Tarifas/Acabados/TarifaAcabados.php @@ -48,6 +48,8 @@ class TarifaAcabados extends BaseResourceController public function index() { + checkPermission('tarifa-acabado.menu'); + $viewData = [ 'currentModule' => static::$controllerSlug, 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Tarifaacabado.tarifaacabado')]), @@ -64,6 +66,8 @@ class TarifaAcabados extends BaseResourceController public function add() { + checkPermission('tarifa-acabado.create', $this->indexRoute); + if ($this->request->getPost()) : $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -133,8 +137,10 @@ class TarifaAcabados extends BaseResourceController return $this->displayForm(__METHOD__); } // end function add() - public function edit($requestedId = null) { + public function edit($requestedId = null) + { + checkPermission('tarifa-acabado.edit', $this->indexRoute); if ($requestedId == null) : return $this->redirect2listView(); diff --git a/ci4/app/Controllers/Tarifas/Tarifaextra.php b/ci4/app/Controllers/Tarifas/Tarifaextra.php index 9dd27d9c..1b5591a4 100755 --- a/ci4/app/Controllers/Tarifas/Tarifaextra.php +++ b/ci4/app/Controllers/Tarifas/Tarifaextra.php @@ -40,6 +40,7 @@ class Tarifaextra extends \App\Controllers\GoBaseController public function index() { + checkPermission('tarifa-extra.menu'); $this->viewData['usingClientSideDataTable'] = true; @@ -51,8 +52,7 @@ class Tarifaextra extends \App\Controllers\GoBaseController public function add() { - - + checkPermission('tarifa-extra.create', $this->indexRoute); if ($this->request->getPost()) : @@ -117,6 +117,7 @@ class Tarifaextra extends \App\Controllers\GoBaseController public function edit($requestedId = null) { + checkPermission('tarifa-extra.edit', $this->indexRoute); if ($requestedId == null) : return $this->redirect2listView(); @@ -129,14 +130,10 @@ class Tarifaextra extends \App\Controllers\GoBaseController return $this->redirect2listView('errorMessage', $message); endif; - - if ($this->request->getPost()) : - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + $sanitizedData = $this->sanitized($postData, true); // JJO if (isset($this->model->user_updated_id)) { @@ -192,7 +189,6 @@ class Tarifaextra extends \App\Controllers\GoBaseController return $this->displayForm(__METHOD__, $id); } // end function edit(...) - public function allItemsSelect() { if ($this->request->isAJAX()) { diff --git a/ci4/app/Controllers/Tarifas/Tarifapapelcompra.php b/ci4/app/Controllers/Tarifas/Tarifapapelcompra.php deleted file mode 100755 index f69c8fd5..00000000 --- a/ci4/app/Controllers/Tarifas/Tarifapapelcompra.php +++ /dev/null @@ -1,35 +0,0 @@ -user()->can('tarifa-preimpresion.menu')){ - $message = "No tiene permisos de acceso"; - return redirect()->to(route_to('home'))->with('errorMessage', $message); - } + checkPermission('tarifa-preimpresion.menu'); $this->viewData['usingClientSideDataTable'] = true; $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tarifapreimpresion.tarifapreimpresion')]); parent::index(); - } public function add() { - - if(!auth()->user()->can('tarifa-preimpresion.create')){ - $message = "No tiene permisos de acceso"; - return redirect()->to(route_to($this->indexRoute))->with('errorMessage', $message); - } - - + checkPermission('tarifa-preimpresion.create', $this->indexRoute); if ($this->request->getPost()) : @@ -125,6 +115,7 @@ class Tarifapreimpresion extends \App\Controllers\GoBaseController public function edit($requestedId = null) { + checkPermission('tarifa-preimpresion.edit', $this->indexRoute); if ($requestedId == null) : return $this->redirect2listView(); diff --git a/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php b/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php index da6ebf94..12e77c70 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php +++ b/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php @@ -56,7 +56,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController public function index() { // Check if the user is allowed to list items - parent::checkPermission('tarifa-encuadernacion.menu'); + checkPermission('tarifa-encuadernacion.menu'); $viewData = [ 'currentModule' => static::$controllerSlug, @@ -75,7 +75,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController public function add() { - parent::checkPermission('tarifa-encuadernacion.create', $this->indexRoute); + checkPermission('tarifa-encuadernacion.create', $this->indexRoute); if ($this->request->getPost()) : @@ -158,7 +158,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController public function edit($requestedId = null) { - parent::checkPermission('tarifa-encuadernacion.create', $this->indexRoute); + checkPermission('tarifa-encuadernacion.edit', $this->indexRoute); if ($requestedId == null) : return $this->redirect2listView(); diff --git a/ci4/app/Controllers/Tarifas/Tarifasenvios.php b/ci4/app/Controllers/Tarifas/Tarifasenvios.php index 1d239b40..452545a9 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasenvios.php +++ b/ci4/app/Controllers/Tarifas/Tarifasenvios.php @@ -57,7 +57,7 @@ class Tarifasenvios extends \App\Controllers\BaseResourceController { public function index() { // Check if the user is allowed to list items - parent::checkPermission('tarifa-envio.menu'); + checkPermission('tarifa-envio.menu'); $viewData = [ 'currentModule' => static::$controllerSlug, @@ -75,7 +75,7 @@ class Tarifasenvios extends \App\Controllers\BaseResourceController { public function add() { - parent::checkPermission('tarifa-envio.create', $this->indexRoute); + checkPermission('tarifa-envio.create', $this->indexRoute); if ($this->request->getPost()) : @@ -144,7 +144,7 @@ class Tarifasenvios extends \App\Controllers\BaseResourceController { public function edit($requestedId = null) { - parent::checkPermission('tarifa-envio.edit', $this->indexRoute); + checkPermission('tarifa-envio.edit', $this->indexRoute); if ($requestedId == null) : @@ -231,9 +231,9 @@ class Tarifasenvios extends \App\Controllers\BaseResourceController { // JJO public function delete($id = null) { - if (!auth()->user()->can('tarifa-envio.delete')) { + /*if (!auth()->user()->can('tarifa-envio.delete')) { return $this->fail('Error'); - } + }*/ if (!empty(static::$pluralObjectNameCc) && !empty(static::$singularObjectNameCc)) { $objName = mb_strtolower(lang(ucfirst(static::$pluralObjectNameCc).'.'.static::$singularObjectNameCc)); diff --git a/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php b/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php index f590a476..29833e50 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php +++ b/ci4/app/Controllers/Tarifas/Tarifasmanipulado.php @@ -52,7 +52,7 @@ class Tarifasmanipulado extends \App\Controllers\BaseResourceController public function index() { // Check if the user is allowed to list items - parent::checkPermission('tarifa-manipulado.menu'); + checkPermission('tarifa-manipulado.menu'); $viewData = [ 'currentModule' => static::$controllerSlug, @@ -71,8 +71,7 @@ class Tarifasmanipulado extends \App\Controllers\BaseResourceController public function add() { - - + checkPermission('tarifa-manipulado.create', $this->indexRoute); if ($this->request->getPost()) : @@ -142,6 +141,7 @@ class Tarifasmanipulado extends \App\Controllers\BaseResourceController public function edit($requestedId = null) { + checkPermission('tarifa-manipulado.edit', $this->indexRoute); if ($requestedId == null) : return $this->redirect2listView(); @@ -153,16 +153,13 @@ class Tarifasmanipulado extends \App\Controllers\BaseResourceController $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Tarifamanipulado.tarifamanipulado')), $id]); return $this->redirect2listView('sweet-error', $message); endif; - if ($this->request->getPost()) : - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + $sanitizedData = $this->sanitized($postData, true); // JJO if (isset($this->model->user_updated_id)) { diff --git a/ci4/app/Helpers/rbac_helper.php b/ci4/app/Helpers/rbac_helper.php index 04d8f403..6eb65e33 100644 --- a/ci4/app/Helpers/rbac_helper.php +++ b/ci4/app/Helpers/rbac_helper.php @@ -2,6 +2,7 @@ use App\Models\Usuarios\GroupModel; use App\Models\Usuarios\PermisosModel; +use CodeIgniter\HTTP\RedirectResponse; if (!function_exists('generate_php_roles_constant')) { function generate_php_roles_constant() @@ -94,3 +95,28 @@ if (!function_exists('generate_php_permissions_matrix_constant')) { + +if (!function_exists('checkPermission')) { + /** + * Checks if the user has the required permission and redirects accordingly. + * + * @param string $sectionPermission The permission to check. + * @param string|null $redirectRoute The route to redirect to if the permission is not granted. + * @return RedirectResponse|null Redirect response if the user does not have permission, null otherwise. + */ + function checkPermission(string $sectionPermission, string $redirectRoute = null) + { + $session = \Config\Services::session(); + $response = \Config\Services::response(); + + if (!auth()->user()->can($sectionPermission)) { + $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/App.php b/ci4/app/Language/es/App.php index 15882bbe..5e607b58 100755 --- a/ci4/app/Language/es/App.php +++ b/ci4/app/Language/es/App.php @@ -742,6 +742,7 @@ return [ "menu_pedidos_todos" => "Todos", "menu_presupuestos" => "Presupuestos", + "menu_presupuestos_clientes" => "Presupuestos (Clientes)", "menu_presupuesto" => "Libros", "menu_presupuesto_buscador" => "Buscador", "menu_libros" => "Libros", diff --git a/ci4/app/Views/themes/vuexy/main/menus/presupuesto_cliente_menu.php b/ci4/app/Views/themes/vuexy/main/menus/presupuesto_cliente_menu.php index b0873ed2..46359e42 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/presupuesto_cliente_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/presupuesto_cliente_menu.php @@ -3,14 +3,22 @@ * MENU PRESUPUESTOS VISTA CLIENTES */ if (auth()->user()->inGroup('cliente-admin') - || auth()->user()->inGroup('cliente-editor')) { + || auth()->user()->inGroup('cliente-editor') + || auth()->user()->inGroup('admin') +) { - if (auth()->user()->can('presupuesto-cliente.menu')) { + if (auth()->user()->can('presupuesto-cliente.menu') || auth()->user()->inGroup('admin')) { ?>