diff --git a/ci4/app/Config/AuthGroups.php b/ci4/app/Config/AuthGroups.php index 81bdcb8b..cf14df7e 100644 --- a/ci4/app/Config/AuthGroups.php +++ b/ci4/app/Config/AuthGroups.php @@ -13,6 +13,8 @@ declare(strict_types=1); namespace Config; +require "RBAC/roles.php"; + use CodeIgniter\Shield\Config\AuthGroups as ShieldAuthGroups; class AuthGroups extends ShieldAuthGroups @@ -40,28 +42,7 @@ class AuthGroups extends ShieldAuthGroups * * @see https://codeigniter4.github.io/shield/quick_start_guide/using_authorization/#change-available-groups for more info */ - public array $groups = [ - 'superadmin' => [ - 'title' => 'Super Admin', - 'description' => 'Complete control of the site.', - ], - 'admin' => [ - 'title' => 'Admin', - 'description' => 'Day to day administrators of the site.', - ], - 'developer' => [ - 'title' => 'Developer', - 'description' => 'Site programmers.', - ], - 'user' => [ - 'title' => 'User', - 'description' => 'General users of the site. Often customers.', - ], - 'beta' => [ - 'title' => 'Beta User', - 'description' => 'Has access to beta-level features.', - ], - ]; + public array $groups = SK_ROLES; /** * -------------------------------------------------------------------- diff --git a/ci4/app/Config/RBAC/roles.php b/ci4/app/Config/RBAC/roles.php new file mode 100644 index 00000000..36ecb564 --- /dev/null +++ b/ci4/app/Config/RBAC/roles.php @@ -0,0 +1,24 @@ + [ + 'title' => 'Super Admin', + 'description' => 'Complete control of the site.', + ], + 'admin' => [ + 'title' => 'Admin', + 'description' => 'Day to day administrators of the site.', + ], + 'developer' => [ + 'title' => 'Developer', + 'description' => 'Site programmers.', + ], + 'user' => [ + 'title' => 'User', + 'description' => 'General users of the site. Often customers.', + ], + 'beta' => [ + 'title' => 'Beta User', + 'description' => 'Has access to beta-level features.', + ], +]; \ No newline at end of file diff --git a/ci4/app/Controllers/Ajax.php b/ci4/app/Controllers/Ajax.php index 95250477..5750dc5b 100755 --- a/ci4/app/Controllers/Ajax.php +++ b/ci4/app/Controllers/Ajax.php @@ -5,8 +5,8 @@ namespace App\Controllers; use App\Models\CronTabModel; use App\Models\NotificationModel; use App\Models\Usuarios\UserModel; -use App\Models\Usuarios\UserGroupModel; -use App\Models\Usuarios\GroupUserModel; +use App\Models\Usuarios\GroupModel; +use App\Models\Usuarios\GroupsUsersModel; use App\Models\ActivityModel; use CodeIgniter\RESTful\ResourceController; @@ -24,8 +24,8 @@ class Ajax extends ResourceController function __construct() { $this->user_model = new UserModel(); - $this->group_model = new UserGroupModel(); - $this->group_user_model = new GroupUserModel(); + $this->group_model = new GroupModel(); + $this->group_user_model = new GroupsUsersModel(); $this->activity_model = new ActivityModel(); $this->crontab_model = new CronTabModel(); $this->notification_model = new NotificationModel(); @@ -56,20 +56,20 @@ class Ajax extends ResourceController //Total number of records without filtering $totalRecords = $this->user_model->select('id_user') - //->join('auth_user_group','auth_user_group.token = auth_user.group') + //->join('auth_groups','auth_groups.token = auth_user.group') ->countAllResults(); //Total number of records with filtering $totalRecordwithFilter = $this->user_model->select('id_user') - //->join('auth_user_group','auth_user_group.token = auth_user.group') + //->join('auth_groups','auth_groups.token = auth_user.group') ->orLike('first_name', $searchValue) ->orLike('email', $searchValue) ->countAllResults(); //Fetch records - //$records = $this->user_model->select('auth_user.*,auth_user_group.title') + //$records = $this->user_model->select('auth_user.*,auth_groups.title') $records = $this->user_model->select('auth_user.*') - //->join('auth_user_group','auth_user_group.token = auth_user.group') + //->join('auth_groups','auth_groups.token = auth_user.group') ->orLike('first_name', $searchValue) ->orLike('email', $searchValue) ->orderBy($columnName,$columnSortOrder) diff --git a/ci4/app/Controllers/Configuracion/Group.php b/ci4/app/Controllers/Configuracion/Group.php index 0a46750e..b0935226 100755 --- a/ci4/app/Controllers/Configuracion/Group.php +++ b/ci4/app/Controllers/Configuracion/Group.php @@ -1,15 +1,15 @@ viewData['usingClientSideDataTable'] = true; $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Groups.group')]); // IMN - $this->group_user_model = new GroupUserModel(); - $this->viewData['model'] = $this->group_user_model; + $this->group_user_model = new GroupsUsersModel(); + $this->viewData['model'] = $this->model; parent::index(); } @@ -52,11 +52,9 @@ class Group extends \App\Controllers\GoBaseController $postData = $this->request->getPost(); - $title = $postData['title']; - $dashboard = $postData['dashboard']; - unset($postData['title']); - unset($postData['dashboard']); - unset($postData['id_group']); + $name = $postData['name']; + unset($postData['name']); + unset($postData['id']); unset($postData['save']); $controller = null; @@ -82,9 +80,7 @@ class Group extends \App\Controllers\GoBaseController $temp_data['rules'] = json_encode($rules_access ?? '{}'); - $temp_data['token'] = md5(uniqid(rand(), true));; - $temp_data['title'] = $title; - $temp_data['dashboard'] = $dashboard; + $temp_data['name'] = $name; $sanitizedData = $this->sanitized($temp_data, $nullIfEmpty); @@ -126,10 +122,8 @@ class Group extends \App\Controllers\GoBaseController endif; // ($requestMethod === 'post') - $this->viewData['group'] = isset($sanitizedData) ? new UserGroupModel($sanitizedData) : new UserGroupModel(); - + $this->viewData['group'] = isset($sanitizedData) ? new GroupModel($sanitizedData) : new GroupModel(); $this->viewData['formAction'] = route_to('createGroup'); - $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('Group.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix'); @@ -162,14 +156,10 @@ class Group extends \App\Controllers\GoBaseController $postData = $this->request->getPost(); - $id_group = $groupEntity->id_group; - $token = $groupEntity->token; - $title = $postData['title']; - $dashboard = $postData['dashboard']; - - unset($postData['id_group']); - unset($postData['title']); - unset($postData['dashboard']); + $id_group = $groupEntity->id; + $name = $postData['name']; + unset($postData['id']); + unset($postData['name']); $controller = null; $rules_access = null; @@ -192,15 +182,12 @@ class Group extends \App\Controllers\GoBaseController } } - $temp_data['id_group'] = $id_group; + $temp_data['id'] = $id_group; $temp_data['rules'] = json_encode($rules_access ?? '{}'); - $temp_data['token'] = $token; - $temp_data['title'] = $title; - $temp_data['dashboard'] = $dashboard; + $temp_data['name'] = $name; $sanitizedData = $this->sanitized($temp_data, $nullIfEmpty); - $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -243,9 +230,7 @@ class Group extends \App\Controllers\GoBaseController endif; // ($requestMethod === 'post') $this->viewData['group'] = $groupEntity; - $this->viewData['formAction'] = route_to('updateGroup', $id); - $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Group.userGroup') . ' ' . lang('Basic.global.edit3'); diff --git a/ci4/app/Controllers/Configuracion/Users.php b/ci4/app/Controllers/Configuracion/Users.php index 1358a5f0..36564178 100755 --- a/ci4/app/Controllers/Configuracion/Users.php +++ b/ci4/app/Controllers/Configuracion/Users.php @@ -3,8 +3,8 @@ use App\Entities\Usuarios\UserEntity; -use App\Models\Usuarios\UserGroupModel; -use App\Models\Usuarios\GroupUserModel; +use App\Models\Usuarios\GroupModel; +use App\Models\Usuarios\GroupsUsersModel; use App\Models\UserModel; class Users extends \App\Controllers\GoBaseController { @@ -31,8 +31,8 @@ class Users extends \App\Controllers\GoBaseController { public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) { - $this->group_model = new UserGroupModel(); - $this->group_user_model = new GroupUserModel(); + $this->group_model = new GroupModel(); + $this->group_user_model = new GroupsUsersModel(); $this->user_model = new UserModel(); $this->viewData['pageTitle'] = lang('Users.moduleTitle'); diff --git a/ci4/app/Entities/Usuarios/UserGroupEntity.php b/ci4/app/Entities/Usuarios/UserGroupEntity.php index 866535d2..7227916a 100755 --- a/ci4/app/Entities/Usuarios/UserGroupEntity.php +++ b/ci4/app/Entities/Usuarios/UserGroupEntity.php @@ -6,11 +6,10 @@ use CodeIgniter\Entity; class UserGroupEntity extends \CodeIgniter\Entity\Entity { protected $attributes = [ - "id_group" => null, - "title" => null, - "dashboard" => null, + "id" => null, + "name" => null, + "description" => null, "rules" => null, - "token" => null, "created_at" => null, "updated_at" => null, ]; diff --git a/ci4/app/Models/Usuarios/GroupModel.php b/ci4/app/Models/Usuarios/GroupModel.php new file mode 100644 index 00000000..fea14738 --- /dev/null +++ b/ci4/app/Models/Usuarios/GroupModel.php @@ -0,0 +1,103 @@ + "t1.id", + 2 => "t1.keyword", + 3 => "t1.name", + 4 => "t1.description", + 5 => "t1.rules", + 6 => "t1.created_at", + 7 => "t1.updated_at", + ]; + + protected $allowedFields = ["id", "name", "description", "rules"]; + protected $returnType = "App\Entities\Usuarios\UserGroupEntity"; + + public static $labelField = "name"; + + protected $validationRules = [ + "description" => [ + "label" => "UserGroups.description", + "rules" => "required|max_length[150]", + ], + "name" => [ + "label" => "UserGroups.name", + "rules" => "required|max_length[50]", + ], + + ]; + + protected $validationMessages = [ + "description" => [ + "max_length" => "UserGroups.validation.description.max_length", + "required" => "UserGroups.validation.description.required", + ], + "name" => [ + "max_length" => "UserGroups.validation.name.max_length", + "required" => "UserGroups.validation.name.required", + ], + + ]; + + /** + * Get resource data. + * + * @param string $search + * + * @return \CodeIgniter\Database\BaseBuilder + */ + public function getResource(string $search = "") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id AS id, t1.keyword AS keyword, t1.name AS name, t1.description AS description, t1.rules AS rules, + t1.token AS token, t1.created_at AS created_at, t1.updated_at AS updated_at" + ); + + return empty($search) + ? $builder + : $builder + ->groupStart() + ->like("t1.id", $search) + ->orLike("t1.keyword", $search) + ->orLike("t1.name", $search) + ->orLike("t1.description", $search) + ->orLike("t1.rules", $search) + ->orLike("t1.created_at", $search) + ->orLike("t1.updated_at", $search) + ->groupEnd(); + } + + + public function getUsersWithRol($groupKeyWord) + { + + return $this->db + ->table('auth_groups_users') + ->select('user_id') + ->where('group', $groupKeyWord) + ->countAllResults(); + } + +} diff --git a/ci4/app/Models/Usuarios/GroupUserModel.php b/ci4/app/Models/Usuarios/GroupsUsersModel.php old mode 100755 new mode 100644 similarity index 61% rename from ci4/app/Models/Usuarios/GroupUserModel.php rename to ci4/app/Models/Usuarios/GroupsUsersModel.php index b93cf80e..8b40e4d6 --- a/ci4/app/Models/Usuarios/GroupUserModel.php +++ b/ci4/app/Models/Usuarios/GroupsUsersModel.php @@ -3,13 +3,10 @@ namespace App\Models\Usuarios; use App\Models\BaseModel; -class GroupUserModel extends BaseModel +class GroupsUsersModel extends BaseModel { - protected $table = 'group_user'; - protected $allowedFields = [ - 'token_user', - 'token_group' - ]; + protected $table = 'auth_groups_users'; + protected $allowedFields = [ ]; public function getUsersWithRol($token_group){ diff --git a/ci4/app/Models/Usuarios/UserGroupModel.php b/ci4/app/Models/Usuarios/UserGroupModel.php deleted file mode 100755 index 4c9f7e5b..00000000 --- a/ci4/app/Models/Usuarios/UserGroupModel.php +++ /dev/null @@ -1,90 +0,0 @@ - "t1.id_group", - 2 => "t1.title", - 3 => "t1.dashboard", - 4 => "t1.rules", - 5 => "t1.token", - 6 => "t1.created_at", - 7 => "t1.updated_at", - ]; - - protected $allowedFields = ["id_group", "title", "dashboard", "rules", "token"]; - protected $returnType = "App\Entities\Usuarios\UserGroupEntity"; - - public static $labelField = "title"; - - protected $validationRules = [ - "dashboard" => [ - "label" => "UserGroups.dashboard", - "rules" => "required|max_length[50]", - ], - "title" => [ - "label" => "UserGroups.title", - "rules" => "required|max_length[150]", - ], - - ]; - - protected $validationMessages = [ - "dashboard" => [ - "max_length" => "UserGroups.validation.dashboard.max_length", - "required" => "UserGroups.validation.dashboard.required", - ], - "title" => [ - "max_length" => "UserGroups.validation.title.max_length", - "required" => "UserGroups.validation.title.required", - ], - - ]; - - /** - * Get resource data. - * - * @param string $search - * - * @return \CodeIgniter\Database\BaseBuilder - */ - public function getResource(string $search = "") - { - $builder = $this->db - ->table($this->table . " t1") - ->select( - "t1.id_group AS id_group, t1.title AS title, t1.dashboard AS dashboard, t1.rules AS rules, - t1.token AS token, t1.created_at AS created_at, t1.updated_at AS updated_at" - ); - - return empty($search) - ? $builder - : $builder - ->groupStart() - ->like("t1.id_group", $search) - ->orLike("t1.title", $search) - ->orLike("t1.dashboard", $search) - ->orLike("t1.rules", $search) - ->orLike("t1.token", $search) - ->orLike("t1.created_at", $search) - ->orLike("t1.updated_at", $search) - ->groupEnd(); - } -} diff --git a/ci4/app/Models/Usuarios/UserModel.php b/ci4/app/Models/Usuarios/UserModel.php index 1fe185f6..0de24e85 100755 --- a/ci4/app/Models/Usuarios/UserModel.php +++ b/ci4/app/Models/Usuarios/UserModel.php @@ -187,8 +187,8 @@ class UserModel extends \App\Models\BaseModel public function getGroupsTitles($user_token){ - $sql = 'SELECT `auth_user_group`.`title` FROM `auth_user_group` - JOIN `group_user` ON `auth_user_group`.`token` = `group_user`.`token_group` + $sql = 'SELECT `auth_groups`.`title` FROM `auth_groups` + JOIN `group_user` ON `auth_groups`.`token` = `group_user`.`token_group` JOIN `auth_user` ON `auth_user`.`token` = `group_user`.`token_user` WHERE `auth_user`.`token` = \''. $user_token . '\''; 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 50c3d8f1..f05e66a6 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/group/viewUserGroupForm.php @@ -11,32 +11,21 @@
- - +
+
- -
-
- - dashboard : set_value('dashboard'); ?> - +
+
+