/** * Account-Lifecycle-Helfer (CAPABILITY_CATALOG §3, Phase A Onboarding). */ export function resolveAccountState(user) { if (!user) return 'anonymous' if (user.account_state) return user.account_state const clubs = user.clubs || [] const hasActive = clubs.some( (c) => String(c.membership_status || 'active').toLowerCase() === 'active' ) if (hasActive) return 'active_member' const verified = user.email_verified === true || user.email_verified === 't' || user.email_verified === 1 || user.email_verified === 'true' if (!verified) return 'unverified' return 'verified_pending_club' } export function isPlatformAccountState(state) { return state === 'platform_admin' } /** Eingeschränkter Modus: noch kein aktiver Vereinszugang bzw. E-Mail offen. */ export function isOnboardingRestricted(user) { const state = resolveAccountState(user) if (isPlatformAccountState(state)) return false return state === 'verified_pending_club' || state === 'unverified' } const ONBOARDING_PATHS = ['/onboarding', '/settings', '/settings/legal', '/settings/system'] export function isOnboardingAllowedPath(pathname) { const p = pathname || '' return ONBOARDING_PATHS.some((base) => p === base || p.startsWith(`${base}/`)) }