loading state uses a white body skeleton
loading state uses a white body skeleton
createUserWithEmailAndPassword sendEmailVerification POST /app/api/auth/firebase/exchange getIdToken HttpOnly session cookie no localStorage token storage
sign up/sign in
yy3Sj
Ud2wT
sign up/sign in
Firebase createUserWithEmailAndPassword -> sendEmailVerification -> POST /app/api/auth/firebase/exchange
PATCH /users/me/profile
success establishes HttpOnly session cookie / CSRF token / current user context / state/nonce/PKCE server managed / no secret/token in browser localStorage / do not retain credentials on back navigation / pending OAuth credential stays in React memory only / simultaneous login security_warning is surfaced from backend/security-event layer
invalid_credentials / unverified / locked / rate_limited / network_error / email_exists / weak_password / terms_missing / oauth_cancelled / state_mismatch / email_conflict / provider_unavailable / provider_configuration_error / oauth_popup_blocked / provider_account_link_required / provider_credential_unavailable / provider_email_mismatch / provider_link_attempt_stale / security_warning
`users`の`email`が入る予定 / `users`の`firebase_uid`が入る予定 / `users.profile`の`terms_version`が入る予定 / `users.profile`の`profile_completion`が入る予定 / `users`の`display_name`が入る予定 / `users.profile`の`company`が入る予定 / `users.profile`の`department`が入る予定 / `users.profile`の`role`が入る予定 / `users.profile`の`phone`が入る予定 / `users.profile`の`phone_verified`が入る予定 / `temporary_profile_drafts`の`draft_json`は将来read model
?complete=1 href="/signup?complete=1" href="/login?error=locked" href="/"
empty state error state disabled state email_exists weak_password terms_missing rate_limited network_error verification_send_failed invalid_email provider_unavailable double-submit must not duplicate user emailVerified required before session exchange
利用規約に同意 マーケティングメールを受け取る プロフィールを設定
sign up/sign in yy3Sj
qxhVI clean white screen / centered narrow form / docudoor title / large Japanese heading / simple underlined text links / minimal gray inputs / no generic SaaS cards