Skip to content

Commit 1f9261d

Browse files
authored
Merge pull request #7407 from ProcessMaker/feature/FOUR-19316
feature/FOUR-19316: The permission “View My Request” needs to enable per default when a user was create
2 parents 47882f7 + 9d559a5 commit 1f9261d

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

ProcessMaker/Observers/UserObserver.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function created(User $user): void
3737
{
3838
$perList = [
3939
'view-process-catalog',
40+
'view-my_requests',
4041
];
4142
$permissionIds = Permission::whereIn('name', $perList)->pluck('id')->toArray();
4243
$user->permissions()->attach($permissionIds);

database/seeders/PermissionSeeder.php

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
namespace Database\Seeders;
44

55
use Illuminate\Database\Seeder;
6+
use ProcessMaker\Models\Group;
67
use ProcessMaker\Models\Permission;
8+
use ProcessMaker\Models\User;
79

810
class PermissionSeeder extends Seeder
911
{
@@ -116,16 +118,24 @@ class PermissionSeeder extends Seeder
116118
],
117119
];
118120

121+
private $defaultPermissions = [
122+
'view-my_requests',
123+
];
124+
119125
public function run($seedUser = null)
120126
{
121127
foreach ($this->permissionGroups as $groupName => $permissions) {
122128
foreach ($permissions as $permissionString) {
123-
Permission::updateOrCreate([
129+
$permission = Permission::updateOrCreate([
124130
'name' => $permissionString,
125131
], [
126132
'title' => ucwords(preg_replace('/(\-|_)/', ' ', $permissionString)),
127133
'group' => $groupName,
128134
]);
135+
136+
if (in_array($permissionString, $this->defaultPermissions)) {
137+
$this->assignDefaultPermission($permission);
138+
}
129139
}
130140
}
131141

@@ -136,4 +146,26 @@ public function run($seedUser = null)
136146
$seedUser->save();
137147
}
138148
}
149+
150+
/**
151+
* Assign default permission to users and groups.
152+
*/
153+
private function assignDefaultPermission(Permission $permission): void
154+
{
155+
$userIds = User::nonSystem()->pluck('id');
156+
$groupIds = Group::pluck('id');
157+
158+
// Define the chunk size for the permission assignment
159+
$chunkSize = 500;
160+
161+
// Attach user IDs in chunks
162+
$userIds->chunk($chunkSize)->each(function ($chunk) use ($permission) {
163+
$permission->users()->attach($chunk);
164+
});
165+
166+
// Attach group IDs in chunks
167+
$groupIds->chunk($chunkSize)->each(function ($chunk) use ($permission) {
168+
$permission->groups()->attach($chunk);
169+
});
170+
}
139171
}

0 commit comments

Comments
 (0)