role = $role; } /** * @param array $data * @param Role $role * @return Role */ public function execute($data, $role = null) { if (!$role) { $role = $this->role->newInstance([]); } $attributes = [ 'name' => $data['name'], 'description' => $data['description'] ?? null, 'default' => $data['default'] ?? false, 'guests' => $data['guests'] ?? false, 'type' => $data['type'] ?? 'sitewide', ]; $role->fill($attributes)->save(); // always sync permissions, detach all if "null" is given as permissions $this->syncPermissions($role, Arr::get($data, 'permissions', [])); return $role; } }