planForEmail($user->email); if ($plan === null) { return; } $seedUser = $this->resolveSeedUser($user); if (! $seedUser) { return; } $lockKey = 'demo-reseed:woo:'.$seedUser->public_id; if (! Cache::add($lockKey, 1, 120)) { return; } $identity = (string) ($seedUser->email ?: $seedUser->public_id); dispatch(function () use ($identity, $plan, $lockKey) { try { Artisan::call('demo:seed', [ 'identity' => $identity, '--plan' => $plan, '--reset' => true, ]); } catch (\Throwable $e) { Log::warning('demo_woo_login_reseed_failed', [ 'identity' => $identity, 'plan' => $plan, 'error' => $e->getMessage(), ]); } finally { Cache::forget($lockKey); } })->afterResponse(); } private function planForEmail(?string $email): ?string { $email = strtolower(trim((string) $email)); if ($email === '') { return null; } $accounts = (array) config('demo_accounts.accounts', []); if (isset($accounts[$email])) { return $accounts[$email]; } $members = (array) config('demo_accounts.member_emails', []); $ownerEmail = $members[$email] ?? null; return $ownerEmail ? ($accounts[$ownerEmail] ?? null) : null; } private function resolveSeedUser(User $user): ?User { $email = strtolower((string) $user->email); $ownerEmail = ((array) config('demo_accounts.member_emails', []))[$email] ?? null; if (! $ownerEmail) { return $user; } return User::query()->where('email', $ownerEmail)->first() ?? $user; } }