user()->currentHousehold; $this->authorize('manageMembers', $household); $this->validate([ 'inviteEmail' => ['required', 'email', 'max:255'], 'inviteRole' => ['required', 'in:owner,member'], ]); $invite = HouseholdInvite::create([ 'household_id' => $household->id, 'invited_by' => auth()->id(), 'email' => $this->inviteEmail, 'token' => Str::random(48), 'role' => $this->inviteRole, 'expires_at' => now()->addDays(7), ]); Mail::to($this->inviteEmail)->send(new HouseholdInviteMail($invite)); $this->reset('inviteEmail'); $this->dispatch('invite-sent'); } public function revokeInvite(int $inviteId): void { $household = auth()->user()->currentHousehold; $this->authorize('manageMembers', $household); $household->invites()->whereKey($inviteId)->whereNull('accepted_at')->delete(); } public function removeMember(int $userId): void { $household = auth()->user()->currentHousehold; $this->authorize('manageMembers', $household); if ($userId === $household->owner_id) { return; } $household->members()->detach($userId); } public function render() { $household = auth()->user()->currentHousehold()->with(['members', 'invites' => fn ($q) => $q->whereNull('accepted_at')])->first(); return view('livewire.household.settings', [ 'household' => $household, ]); } }