diff --git a/ci4/app/Config/RBAC/permissionMatrix.php b/ci4/app/Config/RBAC/permissionMatrix.php index f160f72b..8dc1c381 100644 --- a/ci4/app/Config/RBAC/permissionMatrix.php +++ b/ci4/app/Config/RBAC/permissionMatrix.php @@ -47,15 +47,14 @@ const SK_PERMISSION_MATRIX = [ "actividad.menu", ], "cliente" => [ - "token.token", - "token.menu", - "Profile.index", - "Profile.store", - "Profile.menu", - "Activity.index", - "Activity.menu", - "save.save", - "save.menu", + "clientes.create", + "clientes.edit", + "clientes.delete", + "clientes.menu", + "presupuesto.create", + "presupuesto.edit", + "presupuesto.delete", + "presupuesto.menu", ], "comercial" => [ "token.token", diff --git a/ci4/app/Controllers/Catalogo/Catalogo.php b/ci4/app/Controllers/Catalogo/Catalogo.php deleted file mode 100755 index 2e0d71b3..00000000 --- a/ci4/app/Controllers/Catalogo/Catalogo.php +++ /dev/null @@ -1,40 +0,0 @@ -id ?? $id; $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; diff --git a/ci4/app/Controllers/Configuracion/Users.php b/ci4/app/Controllers/Configuracion/Users.php index 36564178..c49c0e22 100755 --- a/ci4/app/Controllers/Configuracion/Users.php +++ b/ci4/app/Controllers/Configuracion/Users.php @@ -4,8 +4,10 @@ use App\Entities\Usuarios\UserEntity; use App\Models\Usuarios\GroupModel; -use App\Models\Usuarios\GroupsUsersModel; + use App\Models\UserModel; +use App\Models\Usuarios\GroupsUsersModel; +use CodeIgniter\Shield\Entities\User; class Users extends \App\Controllers\GoBaseController { @@ -43,49 +45,40 @@ class Users extends \App\Controllers\GoBaseController { public function index() { $this->viewData['usingClientSideDataTable'] = true; - $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Users.user')]); - $this->viewData['user_model'] = $this->user_model; parent::index(); } - public function add() { - - + public function add() { if ($this->request->getPost()) : - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - $postData = $this->request->getPost(); - - if(!empty($postData['password'])){ - $phpass = new PasswordHash(8, true); - $postData['password'] = $phpass->HashPassword($this->request->getPost('password')); - } - - + $currentGroups = $postData['group']??[]; unset($postData['group']); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - if ($this->request->getPost('last_ip') == null ) { - $sanitizedData['last_ip'] = '::1'; - } - - $sanitizedData['token'] = md5(uniqid(rand(), true)); + $sanitizedData = $this->sanitized($postData, true); $noException = true; + + $users = auth()->getProvider(); + if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate()) : try { - $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); + + $user = new User([ + 'username' => strstr($sanitizedData['email'], '@', true), + 'email' => $sanitizedData['email'], + 'password' => 'Safekat2024', + ]); + $users->save($user); + $successfulResult = true; // Hacked } catch (\Exception $e) { $noException = false; $this->dealWithException($e); @@ -99,11 +92,12 @@ class Users extends \App\Controllers\GoBaseController { endif; if ($noException && $successfulResult) : - $id = $this->model->db->insertID(); + $id = $users->getInsertID(); + $this->group_user_model->where('user_id', $user->id)->delete(); foreach($currentGroups as $group){ $group_user_data = [ - 'token_user' => $sanitizedData['token'], - 'token_group' => $group + 'user_id' => $user->id, + 'group' => $group ]; $this->group_user_model->insert($group_user_data); } @@ -127,11 +121,8 @@ class Users extends \App\Controllers\GoBaseController { endif; // ($requestMethod === 'post') $this->viewData['user'] = isset($sanitizedData) ? new UserEntity($sanitizedData) : new UserEntity(); - $this->viewData['paisList'] = $this->getPaisListItems(); - $this->viewData['formAction'] = route_to('createUser'); - $this->viewData['groups'] = $this->group_model->select('token,title')->findAll(); - + $this->viewData['groups'] = $this->group_model->select('keyword, title')->findAll(); $this->viewData['boxTitle'] = lang('Basic.global.addNew') .lang('Users.user').' '.lang('Basic.global.addNewSuffix'); @@ -143,6 +134,7 @@ class Users extends \App\Controllers\GoBaseController { if ($requestedId == null) : return $this->redirect2listView(); endif; + $id = filter_var($requestedId, FILTER_SANITIZE_URL); $user = $this->model->find($id); @@ -150,37 +142,22 @@ class Users extends \App\Controllers\GoBaseController { $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Users.user')), $id]); return $this->redirect2listView('errorMessage', $message); endif; - if ($this->request->getPost()) : - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - $postData = $this->request->getPost(); + $currentGroups = $postData['group']; unset($postData['group']); + $sanitizedData = $this->sanitized($postData, true); - if(!empty($postData['password'])){ - $phpass = new PasswordHash(8, true); - $postData['password'] = $phpass->HashPassword($this->request->getPost('password')); - } - - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - if ($this->request->getPost('tfa') == null ) { - $sanitizedData['tfa'] = false; - } - if ($this->request->getPost('blocked') == null ) { - $sanitizedData['blocked'] = false; - } - if ($this->request->getPost('last_ip') == null ) { - $sanitizedData['last_ip'] = '::1'; + if ($this->request->getPost('status') == 0 ) { + $sanitizedData['status'] = null; } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - if ($this->canValidate()) : try { @@ -196,22 +173,21 @@ class Users extends \App\Controllers\GoBaseController { endif; $user->fill($sanitizedData); - $thenRedirect = false; + endif; if ($noException && $successfulResult) : - $postData = $this->request->getPost(); - - $this->group_user_model->where('token_user', $user->token)->delete(); + + $this->group_user_model->where('user_id', $user->id)->delete(); foreach($currentGroups as $group){ $group_user_data = [ - 'token_user' => $user->token, - 'token_group' => $group + 'user_id' => $user->id, + 'group' => $group ]; $this->group_user_model->insert($group_user_data); } - $id = $user->id_user ?? $id; + $id = $user->id ?? $id; $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('Users.user'))]) . 'Downloads'; $message .= anchor(route_to('editUser', $id), lang('Basic.global.continueEditing').'?'); $message = ucfirst(str_replace("'", "\'", $message)); @@ -230,18 +206,38 @@ class Users extends \App\Controllers\GoBaseController { endif; // ($requestMethod === 'post') $this->viewData['user'] = $user; - $this->viewData['paisList'] = $this->getPaisListItems(); - $this->viewData['formAction'] = route_to('updateUser', $id); - - $this->viewData['selectedGroups'] = $this->group_user_model->select('token_group')->where('token_user', $user->token)->findAll(); - $this->viewData['groups'] = $this->group_model->select('token,title')->findAll(); - + $this->viewData['selectedGroups'] = $this->group_model->getUsersRoles($requestedId); + $this->viewData['groups'] = $this->group_model->select('keyword, title')->findAll(); $this->viewData['boxTitle'] = lang('Basic.global.edit2') .lang('Users.user').' '.lang('Basic.global.edit3'); - - + return $this->displayForm(__METHOD__, $id); } // end function edit(...) + + + public function delete($requestedId = null, bool $deletePermanently = true) { + + if ($requestedId == null) : + return $this->redirect2listView(); + endif; + + $id = filter_var($requestedId, FILTER_SANITIZE_URL); + $user = $this->model->find($id); + + if ($user == false) : + $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Users.user')), $id]); + return $this->redirect2listView('errorMessage', $message); + endif; + + $users = auth()->getProvider(); + $users->delete($user->id, $deletePermanently); + + $message = "Usuario eliminado correctamente"; + return $this->redirect2listView('successMessage', $message); + + + + } // end function delete(...) diff --git a/ci4/app/Controllers/Envioslogistica/Logistica.php b/ci4/app/Controllers/Envioslogistica/Logistica.php deleted file mode 100755 index b6a7a9d5..00000000 --- a/ci4/app/Controllers/Envioslogistica/Logistica.php +++ /dev/null @@ -1,32 +0,0 @@ -to('profile'); } - public function notification() - { - $session = session(); - $data['title'] = [ - 'module' => lang("App.notification_title_my"), - 'page' => lang("App.notification_subtitle_my"), - 'icon' => 'fas fa-bell' - ]; - $data['breadcrumb'] = [ - ['title' => lang("App.menu_dashboard"), 'route' => "/home", 'active' => false], - ['title' => lang("App.notification_title_my"), 'route' => "", 'active' => true] - ]; - - $data['btn_add'] = [ - 'title' => lang("App.notification_btn_add"), - 'route' => '/notification/add', - 'class' => 'btn btn-lg btn-primary float-md-right', - 'icon' => 'fas fa-plus' - ]; - - echo view(getenv('theme.path').'main/header'); - echo view(getenv('theme.path').'form/my/notification',$data); - echo view(getenv('theme.path').'main/footer'); - } - - public function notification_view($id) - { - $session = session(); - $data['obj'] = $this->notification_model->where('token', $id)->first(); - if($data['obj']==null){ - return redirect()->to('/my/notification'); - }else{ - if(!$data['obj']['is_read']){ - $this->notification_model->save(['id_notification' => $data['obj']['id_notification'],'is_read' => true]); - $notification = $session->get('notification')??[]; - foreach ($notification as $key => $value){ - if($notification[$key]['token'] == $id){ - $notification[$key]['is_read'] = '1'; - } - } - $pulse = $this->notification_model->where('user_recipient',$session->get('token'))->where('is_read',false)->countAllResults() ?? 0; - $session->set('pulse', $pulse); - $session->set('notification',$notification); - } - } - - $data['title'] = [ - 'module' => lang("App.notification_title_my"), - 'page' => lang("App.notification_subtitle_view"), - 'icon' => 'far fa-envelope-open' - ]; - - $data['breadcrumb'] = [ - ['title' => lang("App.menu_dashboard"), 'route' => "/home", 'active' => false], - ['title' => lang("App.notification_title_my"), 'route' => "/my/notification", 'active' => false], - ['title' => lang("App.notification_subtitle_view"), 'route' => "", 'active' => true] - ]; - - $data['btn_return'] = [ - 'title' => lang("App.global_come_back"), - 'route' => '/my/notification', - 'class' => 'btn btn-dark mr-1', - 'icon' => 'fas fa-angle-left' - ]; - - echo view(getenv('theme.path').'main/header'); - echo view(getenv('theme.path').'form/my/view',$data); - echo view(getenv('theme.path').'main/footer'); - } } diff --git a/ci4/app/Controllers/Servicios/Compras.php b/ci4/app/Controllers/Servicios/Compras.php deleted file mode 100755 index 27536b8f..00000000 --- a/ci4/app/Controllers/Servicios/Compras.php +++ /dev/null @@ -1,26 +0,0 @@ -user()->can('plantilla-tarifa.menu')); + //$user = auth()->user(); + generate_php_permissions_constant(); //echo generate_php_permissions_matrix_constant(); diff --git a/ci4/app/Entities/Usuarios/GroupsUsersEntity.php b/ci4/app/Entities/Usuarios/GroupsUsersEntity.php new file mode 100644 index 00000000..499fb298 --- /dev/null +++ b/ci4/app/Entities/Usuarios/GroupsUsersEntity.php @@ -0,0 +1,17 @@ + null, + "user_id" => null, + "group" => null, + "created_at" => null + ]; + protected $casts = [ + + ]; +} diff --git a/ci4/app/Entities/Usuarios/UsersEntity.php b/ci4/app/Entities/Usuarios/UsersEntity.php new file mode 100644 index 00000000..7ff93bb7 --- /dev/null +++ b/ci4/app/Entities/Usuarios/UsersEntity.php @@ -0,0 +1,16 @@ + null, + "last_name" => null + ]; + protected $casts = [ + + ]; +} diff --git a/ci4/app/Models/UserModel.php b/ci4/app/Models/UserModel.php index bd001e74..96d2ca92 100644 --- a/ci4/app/Models/UserModel.php +++ b/ci4/app/Models/UserModel.php @@ -18,4 +18,12 @@ class UserModel extends ShieldUserModel 'last_name', // Añadido ]; } + + /*protected $validationRules = [ + "email" => [ + "label" => "RolesPermisos.email", + "rules" => "required|max_length[150]", + ] + + ];*/ } diff --git a/ci4/app/Models/Usuarios/GroupModel.php b/ci4/app/Models/Usuarios/GroupModel.php index b7c34473..704d0535 100644 --- a/ci4/app/Models/Usuarios/GroupModel.php +++ b/ci4/app/Models/Usuarios/GroupModel.php @@ -100,6 +100,18 @@ class GroupModel extends \App\Models\BaseModel ->countAllResults(); } + + public function getUsersRoles($userId) + { + + return $this->db + ->table('auth_groups_users') + ->select('group') + ->where('user_id', $userId) + ->get() + ->getResult(); + } + public function getRolPermissionList($rolId) { $rolRecord = $this->find($rolId); diff --git a/ci4/app/Models/Usuarios/GroupsUsersModel.php b/ci4/app/Models/Usuarios/GroupsUsersModel.php new file mode 100644 index 00000000..03a7ad99 --- /dev/null +++ b/ci4/app/Models/Usuarios/GroupsUsersModel.php @@ -0,0 +1,23 @@ + -"> - - -
-
-
-
-
-

- -
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-

- -
-
-
-
-
-
-
-
-
-

-
-
-
- - - - - - - - - - -
- - -
-
- -
-
-
-
-
-
-
-
-
-
-

-
-
-
- - - - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
-
- - - - - - - - - - - \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/dashboard/index.php b/ci4/app/Views/themes/backend/vuexy/form/dashboard/index.php deleted file mode 100755 index 7c466d84..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/dashboard/index.php +++ /dev/null @@ -1,12 +0,0 @@ - -
- - - - - - \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/dashboard/user.php b/ci4/app/Views/themes/backend/vuexy/form/dashboard/user.php deleted file mode 100755 index 00b35f2d..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/dashboard/user.php +++ /dev/null @@ -1,29 +0,0 @@ -
-
-
-
-
-

- -
-
-
- -
-
-
-
- - - - - - diff --git a/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php b/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php index 45bafee2..6d252995 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php @@ -68,7 +68,7 @@ rules as $key => $rules): ?> -    +    diff --git a/ci4/app/Views/themes/backend/vuexy/form/user/_userFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/user/_userFormItems.php index 26ce2915..976fecde 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/user/_userFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/user/_userFormItems.php @@ -1,172 +1,77 @@ -
-
+
+
-
- - -
+
+ + +
-
- - -
+
+ + +
-
- - -
- -
- - - -
- -
- - -
+
+
+ + +
+
-
- - -
+
+
-
- - -
+
+ + +
-
- - -
+
+ + status); ?> + +
-
-
- - -
-
+
+ + active); ?> + +
+
-
-
- -
- - -
- -
- - -
- -
- - -
- -
-
- - language);?> - -
-
- -
- - -
- -
- - blocked);?> - -
- -
- - email_confirmed);?> - - -
- - -
- - status);?> - - -
- -
- -
\ No newline at end of file +
\ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.old.php b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.old.php new file mode 100644 index 00000000..ef64132a --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.old.php @@ -0,0 +1,578 @@ + + + \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php index ef64132a..d3a694ea 100755 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php @@ -19,7 +19,7 @@ @@ -28,258 +28,277 @@ * MENU CLIENTES */ - ?> - - + if (auth()->user()->can('clientes.menu')) { + + ?> + + + - - + + - - + + if (auth()->user()->inGroup('beta')) { + + ?> + + + + - - + + if (auth()->user()->inGroup('beta')) { + ?> + + + + - - + if (auth()->user()->inGroup('beta')) { + ?> + + + + - - + if (auth()->user()->inGroup('beta')) { + ?> + + + - - + if (auth()->user()->inGroup('beta')) { + ?> + + + + "> @@ -516,56 +550,66 @@ /** * MENU MENSAJES */ - ?> - - + if (auth()->user()->inGroup('beta')) { + ?> + + + - + user()->can('ajustes.menu') || + auth()->user()->can('actividad.menu')) { + ?> + + - - + if (auth()->user()->can('ajustes.menu')) { + ?> + + + - - + if (auth()->user()->can('actividad.menu')) { + ?> + + +