forgetCachedPermissions(); $rolesWithPermissions = '[{"name":"super_admin","guard_name":"web","permissions":[]}]'; $directPermissions = '[]'; static::makeRolesWithPermissions($rolesWithPermissions); static::makeDirectPermissions($directPermissions); $this->command->info('Shield Seeding Completed.'); } protected static function makeRolesWithPermissions(string $rolesWithPermissions): void { if (! blank($rolePlusPermissions = json_decode($rolesWithPermissions, true))) { /** @var Model $roleModel */ $roleModel = Utils::getRoleModel(); /** @var Model $permissionModel */ $permissionModel = Utils::getPermissionModel(); foreach ($rolePlusPermissions as $rolePlusPermission) { $role = $roleModel::firstOrCreate([ 'name' => $rolePlusPermission['name'], 'guard_name' => $rolePlusPermission['guard_name'], ]); if (! blank($rolePlusPermission['permissions'])) { $permissionModels = collect($rolePlusPermission['permissions']) ->map(fn ($permission) => $permissionModel::firstOrCreate([ 'name' => $permission, 'guard_name' => $rolePlusPermission['guard_name'], ])) ->all(); $role->syncPermissions($permissionModels); } } } } public static function makeDirectPermissions(string $directPermissions): void { if (! blank($permissions = json_decode($directPermissions, true))) { /** @var Model $permissionModel */ $permissionModel = Utils::getPermissionModel(); foreach ($permissions as $permission) { if ($permissionModel::whereName($permission)->doesntExist()) { $permissionModel::create([ 'name' => $permission['name'], 'guard_name' => $permission['guard_name'], ]); } } } } }