3
3
namespace Database \Seeders ;
4
4
5
5
use Illuminate \Database \Seeder ;
6
+ use ProcessMaker \Models \Group ;
6
7
use ProcessMaker \Models \Permission ;
8
+ use ProcessMaker \Models \User ;
7
9
8
10
class PermissionSeeder extends Seeder
9
11
{
@@ -116,16 +118,24 @@ class PermissionSeeder extends Seeder
116
118
],
117
119
];
118
120
121
+ private $ defaultPermissions = [
122
+ 'view-my_requests ' ,
123
+ ];
124
+
119
125
public function run ($ seedUser = null )
120
126
{
121
127
foreach ($ this ->permissionGroups as $ groupName => $ permissions ) {
122
128
foreach ($ permissions as $ permissionString ) {
123
- Permission::updateOrCreate ([
129
+ $ permission = Permission::updateOrCreate ([
124
130
'name ' => $ permissionString ,
125
131
], [
126
132
'title ' => ucwords (preg_replace ('/(\-|_)/ ' , ' ' , $ permissionString )),
127
133
'group ' => $ groupName ,
128
134
]);
135
+
136
+ if (in_array ($ permissionString , $ this ->defaultPermissions )) {
137
+ $ this ->assignDefaultPermission ($ permission );
138
+ }
129
139
}
130
140
}
131
141
@@ -136,4 +146,26 @@ public function run($seedUser = null)
136
146
$ seedUser ->save ();
137
147
}
138
148
}
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
+ }
139
171
}
0 commit comments