shinkan-jinkendo/frontend/src/utils/accountState.js

39 lines
1.2 KiB
JavaScript
Raw Normal View History

/**
* 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}/`))
}