forgetCachedPermissions(); /*$data = $this->data(); foreach ($data as $value) { $permission = Permission::updateOrCreate([ 'name' => $value['name'], 'guard_name' => 'web' // or 'api ], [ 'permission_group_id' => $value['group'] ]); $roles = Role::all(); foreach ($roles as $role) { if ($role->name == 'administrator') { $role->givePermissionTo($permission); } else { if ($permission->name == 'user.read' || $permission->name == 'role.read' || $permission->name == 'permission.read') { $role->givePermissionTo($permission); } } } }*/ $roles = Role::all(); foreach ($roles as $role) { $data = $this->data($role->name); foreach ($data as $value) { $permission = Permission::updateOrCreate([ 'name' => $value['name'], 'guard_name' => 'web' // or 'api ], [ 'permission_group_id' => $value['group'] ]); if($role->name=='ad' && explode('.',$value['name'])[0]=='document'){ if($permission->name=='document.read'){ $role->givePermissionTo($permission); } } else{ $role->givePermissionTo($permission); } } } } public function data($role) { $data = []; $model = []; // list of model permission if ($role == 'administrator') { $model = [['id' => 1, 'name' => 'user'], ['id' => 2, 'name' => 'role'], ['id' => 3, 'name' => 'permission'], ['id' => 4, 'name' => 'system'], ['id' => 5, 'name' => 'master'], ['id' => 6, 'name' => 'document'], ['id' => 7, 'name' => 'setting'], ['id' => 8, 'name' => 'logs']]; } elseif($role == 'ad'){ $model = [['id' => 4, 'name' => 'system'], ['id' => 6, 'name' => 'document'], ['id' => 7, 'name' => 'setting'], ['id' => 8, 'name' => 'logs']]; } elseif($role == 'dd'){ $model = [['id' => 4, 'name' => 'system'], ['id' => 5, 'name' => 'master'], ['id' => 6, 'name' => 'document'], ['id' => 7, 'name' => 'setting']]; } elseif($role == 'eo'){ $model = [['id' => 6, 'name' => 'document']]; } foreach ($model as $value) { foreach ($this->crudActions($value['name']) as $action) { $data[] = ['name' => $action, 'group' => $value['id']]; } } return $data; } public function crudActions($name) { $actions = []; // list of permission actions $crud = ['create', 'read', 'update', 'delete','authorize','report']; foreach ($crud as $value) { $actions[] = $name . '.' . $value; } return $actions; } }