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 @@
+
- ">
-
-
-
-
-
-
-
-
= $title['module']??'' ?>
- = $title['page']??'' ?>
-
-
-
-
-
-
- = $item['title'] ?>
-
- = $item['title'] ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=strtoupper(lang("App.dashboard_user_total"))?>
-
=$total_user??'0'?>
-
-
-
-
-
-
-
-
-
-
-
-
=strtoupper(lang("App.dashboard_user_new"))?>
-
=$total_new??'0'?>
-
-
-
-
-
-
-
-
-
-
-
-
=strtoupper(lang("App.dashboard_user_enabled"))?>
-
=$total_enabled??'0'?>
-
-
-
-
-
-
-
-
-
-
-
-
=strtoupper(lang("App.dashboard_user_disabled"))?>
-
=$total_disabled??'0'?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $item['first_name']??''?> = $item['last_name']??''?>
- = $item['email']??''?>
- = $item['created_at']??'' ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- =lang("App.dashboard_user")?>
- =lang("App.dashboard_email")?>
- =lang("App.dashboard_created_at")?>
-
-
-
-
-
-
- = $item['first_name']??''?>
- = $item['email']??''?>
- = $item['created_at']??'' ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-= sweetAlert() ?>
\ 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 @@
-
-
-
-
-
-
= $title['module']??'' ?>
- = $title['page']??'' ?>
-
-
-
-
-
-
- = $item['title'] ?>
-
- = $item['title'] ?>
-
-
-
-
-
-
-
-
-
-
-
-
-= sweetAlert() ?>
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): ?>
- = lang("RolesPermisos." . $key . "Section") ?>
+ = lang("RolesPermisos." . convertToCamelCase($key) . "Section") ?>
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 @@
-
-
+
+
-
-
- =lang('Users.firstName') ?>
-
-
-
+
+
+ = lang('Users.firstName') ?>
+
+
+
-
-
- =lang('Users.address') ?>
-
-
-
+
+
+ = lang('Users.email') ?>*
+
+
+
-
-
- =lang('Users.state') ?>
-
-
-
-
-
-
- =lang('Users.country') ?>
-
-
-
- =lang('Basic.global.pleaseSelectA', [lang('Users.country')]) ?>
-
-
- code==$user->country ? ' selected':'' ?> >
- =$item->nombre ?>
-
-
-
-
-
-
-
- =lang('Users.dateBirth') ?>
-
-
-
+
+
+ = lang('Users.group') ?>
+
+ = lang('Basic.global.pleaseSelectA', [lang('Users.group')]) ?>
+ $group->group, $selectedGroups);
+ foreach ($groups as $item) :
+ $isSelected = in_array($item->keyword, $selectedKeywords) ? 'selected' : '';
+ ?>
+ keyword ?> = $isSelected ?>>
+ = $item->title ?>
+
+
+
+
+
-
-
- =lang('Users.mobile') ?>
-
-
-
+
+
-
-
- =lang('Users.email') ?>*
-
-
-
+
+
+ = lang('Users.lastName') ?>
+
+
+
-
-
- =lang('Users.password') ?>*
-
-
-
+
+
+ = lang('Users.blocked') ?>
+
+ status); ?>
+
+ >= lang("Users.non_blocked") ?>
+ >= lang("Users.blocked") ?>
+
+
-
-
- =lang('Users.group') ?>
-
- =lang('Basic.global.pleaseSelectA', [lang('Users.group')]) ?>
-
- =1): ?>
-
- token ?> =$item->token==$selItem['token_group']?'selected':'' ?>> = $item->title ?>
-
-
-
- token ?> > = $item->title ?>
-
-
-
-
-
-
+
+
+ = lang('Users.status') ?>
+
+ active); ?>
+
+ >= lang("Users.global_active") ?>
+ >= lang("Users.global_inactive") ?>
+
+
+
-
-
-
-
-
- =lang('Users.lastName') ?>
-
-
-
-
-
-
- =lang('Users.city') ?>
-
-
-
-
-
-
- =lang('Users.zipCode') ?>
-
-
-
-
-
-
- =lang("Users.language")?>
- language);?>
-
- =lang("App.global_select")?>
- >=lang("App.lang_en")?>
- >=lang("App.lang_es")?>
-
-
-
-
-
-
- =lang('Users.picture') ?>
-
-
-
-
-
-
- =lang('Users.blocked') ?>
-
- blocked);?>
-
- >=lang("Users.non_blocked")?>
- >=lang("Users.blocked")?>
-
-
-
-
-
- =lang('Users.emailConfirmed') ?>*
-
- email_confirmed);?>
-
- >=lang("Users.email_not_confirmed")?>
- >=lang("Users.email_confirmed")?>
-
-
-
-
-
-
-
- =lang('Users.status') ?>
-
- status);?>
-
- >=lang("Users.global_active")?>
- >=lang("Users.global_inactive")?>
-
-
-
-
-
-
-
\ 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')) {
+ ?>
+
+
+
+
">= lang("App.menu_tarifas") ?>
@@ -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')) {
+ ?>
+
+
+