|
|
@@ -18,25 +18,48 @@ public function run(): void
|
|
|
foreach (UserTypeEnum::cases() as $userType) {
|
|
|
switch ($userType) {
|
|
|
case UserTypeEnum::ADMIN:
|
|
|
- $permissions = Permission::get();
|
|
|
- foreach ($permissions as $permission) {
|
|
|
- $userTypePermission = UserTypePermission::firstOrNew(attributes: [
|
|
|
- 'user_type' => UserTypeEnum::ADMIN->value,
|
|
|
- 'permission_id' => $permission->id,
|
|
|
+ $permissions = Permission::get()->map(function ($permission) {
|
|
|
+ return [
|
|
|
+ 'scope' => $permission->scope,
|
|
|
'bits' => $permission->bits,
|
|
|
- ]);
|
|
|
- $userTypePermission->save();
|
|
|
- }
|
|
|
+ ];
|
|
|
+ })->toArray();
|
|
|
+ $this->seedUserTypePermissions($permissions, UserTypeEnum::ADMIN->value);
|
|
|
break;
|
|
|
+
|
|
|
+ case UserTypeEnum::USER:
|
|
|
+ $userPermissions = [
|
|
|
+ ['scope' => 'dashboard', 'bits' => 1],
|
|
|
+ ['scope' => 'config.user', 'bits' => 5],
|
|
|
+ ['scope' => 'config.city', 'bits' => 1],
|
|
|
+ ['scope' => 'config.country', 'bits' => 1],
|
|
|
+ ['scope' => 'config.state', 'bits' => 1],
|
|
|
+ ];
|
|
|
+ $this->seedUserTypePermissions($userPermissions, UserTypeEnum::USER->value);
|
|
|
+ break;
|
|
|
+
|
|
|
case UserTypeEnum::GUEST:
|
|
|
- $userTypePermission = UserTypePermission::firstOrNew([
|
|
|
- 'user_type' => UserTypeEnum::GUEST->value,
|
|
|
- 'permission_id' => Permission::where('scope', 'config.user')->first()->id,
|
|
|
- 'bits' => 5,
|
|
|
- ]);
|
|
|
- $userTypePermission->save();
|
|
|
+ $guestPermissions = [
|
|
|
+ ['scope' => 'config.user', 'bits' => 1],
|
|
|
+ ];
|
|
|
+ $this->seedUserTypePermissions($guestPermissions, UserTypeEnum::GUEST->value);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private function seedUserTypePermissions(array $permissions, string $userType): void
|
|
|
+ {
|
|
|
+ foreach ($permissions as $permissionData) {
|
|
|
+ $permission = Permission::where('scope', $permissionData['scope'])->first();
|
|
|
+ if ($permission) {
|
|
|
+ $userTypePermission = UserTypePermission::firstOrNew([
|
|
|
+ 'user_type' => $userType,
|
|
|
+ 'permission_id' => $permission->id,
|
|
|
+ 'bits' => $permissionData['bits'],
|
|
|
+ ]);
|
|
|
+ $userTypePermission->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|