guardManage($request)) { return $redirect; } $owner = (string) $this->accountUser($request)->public_id; $validated = $request->validate([ 'email' => ['required', 'email', 'max:255'], 'woo_store_id' => [ 'required', 'integer', Rule::exists('woo_stores', 'id')->where(fn ($q) => $q ->where('user_id', $this->accountUser($request)->id) ->where('status', WooStore::STATUS_ACTIVE)), ], ]); $email = strtolower(trim($validated['email'])); $actor = $this->actor($request); if ($email === strtolower((string) $actor->email)) { return back()->withErrors(['email' => 'You cannot invite yourself.']); } try { $identity->inviteAppMember( $owner, $email, ['woo'], [ 'woo' => [ 'role' => WooStoreMember::ROLE_MANAGER, 'store_id' => (int) $validated['woo_store_id'], ], ], ); } catch (\Throwable $e) { return back()->withInput()->with('error', $e->getMessage()); } WooStoreMember::updateOrCreate( [ 'owner_ref' => $owner, 'user_ref' => $email, 'woo_store_id' => (int) $validated['woo_store_id'], ], [ 'role' => WooStoreMember::ROLE_MANAGER, ], ); return redirect() ->route('woo.settings') ->withFragment('store-team') ->with('success', 'Invitation sent to '.$email.'.'); } public function destroy(Request $request, WooStoreMember $member): RedirectResponse { if ($redirect = $this->guardManage($request)) { return $redirect; } abort_unless($member->owner_ref === (string) $this->accountUser($request)->public_id, 404); $actor = $this->actor($request); if ($member->user_ref === $actor->public_id || $member->user_ref === strtolower((string) $actor->email)) { return redirect()->route('woo.settings')->withFragment('store-team')->with('error', 'You cannot remove yourself.'); } $member->delete(); return redirect() ->route('woo.settings') ->withFragment('store-team') ->with('success', 'Store manager removed.'); } private function guardManage(Request $request): ?RedirectResponse { if (! $this->members->canManageStoreTeam($this->wooMember($request), (string) $this->accountUser($request)->public_id, $this->actor($request))) { abort(403); } $account = $this->accountUser($request); if (! $this->subscriptions->canManageStoreTeam($account)) { return redirect()->route('woo.pro.index') ->with('upsell', 'Per-store managers require Ladill Woo Manager Business.'); } return null; } }