portfolio) { $this->permissions = [ auth()->user()->id => [ 'owner' => true, 'full_access' => false ] ]; } else { $this->permissions = collect($this->portfolio->users)->mapWithKeys(function ($user) { return [ $user->id => [ 'owner' => $user->pivot->owner ?? 0, 'full_access' => $user->pivot->full_access ?? 0 ] ]; })->toArray(); } } public function updatedPermissions() { $this->authorize('fullAccess', $this->portfolio); $this->portfolio->users()->sync($this->permissions); $this->portfolio->refresh(); $this->success(__('Updated user\'s access permission to portfolio')); } public function deleteUser(string $userId) { $this->authorize('fullAccess', $this->portfolio); unset($this->permissions[$userId]); $this->portfolio->users()->sync($this->permissions); $this->portfolio->refresh(); $this->success(__('Removed user\'s access to portfolio')); } public function addUser() { $this->authorize('fullAccess', $this->portfolio); $this->validate(); $user = User::firstOrCreate([ 'email' => $this->emailAddress ], [ 'name' => Str::title(Str::before($this->emailAddress, '@')) ]); $this->permissions[$user->id] = [ 'full_access' => $this->fullAccess ]; $this->portfolio->users()->sync($this->permissions); $this->success(__('Shared portfolio with user')); $this->portfolio->refresh(); $this->dispatch('toggle-add-user-modal'); $this->emailAddress = ''; $this->fullAccess = false; } }; ?>