Añadido helper para crear los archivos de costantes de RBAC

This commit is contained in:
imnavajas
2024-05-06 13:34:16 +02:00
parent 122e194b16
commit 7492616dc6
15 changed files with 363 additions and 118 deletions

View File

@ -23,25 +23,25 @@ class GroupModel extends \App\Models\BaseModel
const SORTABLE = [
1 => "t1.id",
2 => "t1.keyword",
3 => "t1.name",
3 => "t1.title",
4 => "t1.description",
5 => "t1.rules",
6 => "t1.created_at",
7 => "t1.updated_at",
];
protected $allowedFields = ["id", "keyword", "name", "description", "rules"];
protected $allowedFields = ["id", "keyword", "title", "description", "rules"];
protected $returnType = "App\Entities\Usuarios\GroupEntity";
public static $labelField = "name";
public static $labelField = "title";
protected $validationRules = [
"description" => [
"label" => "UserGroups.description",
"label" => "RolesPermisos.description",
"rules" => "max_length[150]",
],
"name" => [
"label" => "UserGroups.name",
"title" => [
"label" => "RolesPermisos.title",
"rules" => "required|max_length[50]",
],
@ -49,12 +49,12 @@ class GroupModel extends \App\Models\BaseModel
protected $validationMessages = [
"description" => [
"max_length" => "UserGroups.validation.description.max_length",
"required" => "UserGroups.validation.description.required",
"max_length" => "RolesPermisos.validation.description.max_length",
"required" => "RolesPermisos.validation.description.required",
],
"name" => [
"max_length" => "UserGroups.validation.name.max_length",
"required" => "UserGroups.validation.name.required",
"title" => [
"max_length" => "RolesPermisos.validation.title.max_length",
"required" => "RolesPermisos.validation.title.required",
],
];
@ -71,7 +71,7 @@ class GroupModel extends \App\Models\BaseModel
$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.id AS id, t1.keyword AS keyword, t1.title AS title, t1.description AS description, t1.rules AS rules,
t1.token AS token, t1.created_at AS created_at, t1.updated_at AS updated_at"
);
@ -81,7 +81,7 @@ class GroupModel extends \App\Models\BaseModel
->groupStart()
->like("t1.id", $search)
->orLike("t1.keyword", $search)
->orLike("t1.name", $search)
->orLike("t1.title", $search)
->orLike("t1.description", $search)
->orLike("t1.rules", $search)
->orLike("t1.created_at", $search)
@ -100,4 +100,56 @@ class GroupModel extends \App\Models\BaseModel
->countAllResults();
}
public function getRolPermissionList($rolId)
{
$rolRecord = $this->find($rolId);
$result = [];
foreach ($rolRecord->rules as $section => $permissions) {
if (!is_null($permissions)) {
foreach ($permissions as $permission) {
$result[$section . "." . $permission] = "Can " . $permission;
}
// Add menu visibility permission (automatic management)
$result[$section . ".menu"] = "Menu shall be visualize";
}
}
return $result;
}
public function getRolesPermissionMatrix()
{
$rolesRecord = $this->findAll();
$result = [];
foreach ($rolesRecord as $rolRecord) {
$rolePermissions = [];
foreach ($rolRecord->rules as $section => $permissions) {
foreach ($permissions as $permission) {
$rolePermissions[] = $section . "." . $permission;
}
// Add menu visibility permission (automatic management)
$rolePermissions[] = $section . ".menu";
}
$result[$rolRecord->keyword] = $rolePermissions;
}
return $result;
}
public function getRolesList()
{
$rolesRecord = $this->findAll();
$result = [];
foreach ($rolesRecord as $rolRecord) {
$result[$rolRecord->keyword] = array(
'title' => $rolRecord->title,
'description' => $rolRecord->description
);
}
return $result;
}
}