load('workspace'); return Inertia::render('auth/AcceptInvite', [ 'invite' => [ 'id' => $invite->id, 'email' => $invite->email, 'role' => [ 'value' => $invite->role->value, 'label' => $invite->role->label(), ], 'workspace' => [ 'id' => $invite->workspace->id, 'name' => $invite->workspace->name, ], ], ]); } /** * Accept the invite. */ public function accept(Request $request, WorkspaceInvite $invite): RedirectResponse { $user = $request->user(); // Verify the invite is for this user if ($invite->email !== $user->email) { session()->flash('flash.banner', __('settings.members.flash.wrong_email')); session()->flash('flash.bannerStyle', 'danger'); return redirect()->route('app.calendar'); } // Check if already a member if ($invite->workspace->hasMember($user)) { $invite->delete(); session()->flash('flash.banner', __('settings.members.flash.already_member')); session()->flash('flash.bannerStyle', 'info'); return redirect()->route('app.calendar'); } // Accept the invite $workspaceId = $invite->workspace_id; $invite->accept($user); $user->update(['current_workspace_id' => $workspaceId]); session()->flash('flash.banner', __('settings.members.flash.invite_accepted')); session()->flash('flash.bannerStyle', 'success'); return redirect()->route('app.calendar'); } /** * Decline the invite. */ public function decline(Request $request, WorkspaceInvite $invite): RedirectResponse { $user = $request->user(); // Verify the invite is for this user if ($invite->email !== $user->email) { session()->flash('flash.banner', __('settings.members.flash.wrong_email')); session()->flash('flash.bannerStyle', 'danger'); return redirect()->route('app.calendar'); } $invite->delete(); session()->flash('flash.banner', __('settings.members.flash.invite_declined')); session()->flash('flash.bannerStyle', 'info'); return redirect()->route('app.calendar'); } }