diff --git a/src/locales/ar/main.json b/src/locales/ar/main.json index e8ac48e24..906148ee5 100644 --- a/src/locales/ar/main.json +++ b/src/locales/ar/main.json @@ -1958,7 +1958,6 @@ "cloudClaimInvite_processingTitle": "معالجة رمز الدعوة...", "cloudClaimInvite_claimButton": "استلام الدعوة", "cloudSorryContactSupport_title": "عذراً، اتصل بالدعم", - "cloudVerifyEmail_title": "التحقق من البريد الإلكتروني", "cloudPrivateBeta_title": "Cloud حالياً في مرحلة البيتا الخاصة", "cloudPrivateBeta_desc": "سجل الدخول للانضمام إلى قائمة الانتظار. سنخطرك عندما يصبح الوصول للبيتا متاحاً. تم إخطارك بالفعل؟ سجل الدخول لبدء استخدام Comfy Cloud.", "cloudForgotPassword_title": "نسيت كلمة المرور", diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 5c56e2390..35e98b7ae 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -2152,18 +2152,6 @@ "cloudSurvey_steps_purpose": "What will you primarily use ComfyUI for?", "cloudSurvey_steps_industry": "What's your primary industry?", "cloudSurvey_steps_making": "What do you plan on making?", - "cloudVerifyEmail_toast_message": "We've sent a verification email to {email}. Please check your inbox and click the link to verify your email address.", - "cloudVerifyEmail_failed_toast_message": "Failed to send verification email. Please contact support.", - "cloudVerifyEmail_title": "Check your email", - "cloudVerifyEmail_back": "Back", - "cloudVerifyEmail_sent": "A verification link was sent to:", - "cloudVerifyEmail_clickToContinue": "Click the link in that email to automatically\ncontinue onto the next steps.", - "cloudVerifyEmail_tip": "Tip: Don’t forget to check your spam folder\nif you don’t see it.", - "cloudVerifyEmail_didntReceive": "Didn't receive the email?", - "cloudVerifyEmail_resend": "Resend email", - "cloudVerifyEmail_toast_title": "Email sent", - "cloudVerifyEmail_toast_summary": "Check your inbox for a new verification email.", - "cloudVerifyEmail_toast_failed": "Failed to send verification email. Please try again.", "cloudInvite_title": "YOU'RE INVITED", "cloudInvite_subtitle": "This invite can only be used once. Double check you’re signed into the account you want to use.", "cloudInvite_switchAccounts": "Switch accounts", diff --git a/src/locales/es/main.json b/src/locales/es/main.json index ddf4ef032..2eb9201b7 100644 --- a/src/locales/es/main.json +++ b/src/locales/es/main.json @@ -1955,7 +1955,6 @@ "cloudClaimInvite_processingTitle": "Procesando código de invitación...", "cloudClaimInvite_claimButton": "Reclamar Invitación", "cloudSorryContactSupport_title": "Lo sentimos, contacta al soporte", - "cloudVerifyEmail_title": "Verificación de Correo", "cloudPrivateBeta_title": "Cloud está actualmente en beta privada", "cloudPrivateBeta_desc": "Inicia sesión para unirte a la lista de espera. Te notificaremos cuando tengas acceso al beta. ¿Ya recibiste la notificación? Inicia sesión para empezar a usar Comfy Cloud.", "cloudForgotPassword_title": "Olvidé mi Contraseña", diff --git a/src/locales/fr/main.json b/src/locales/fr/main.json index 9e56423c0..463b51de6 100644 --- a/src/locales/fr/main.json +++ b/src/locales/fr/main.json @@ -1949,7 +1949,6 @@ "cloudClaimInvite_processingTitle": "Traitement du code d'invitation...", "cloudClaimInvite_claimButton": "Réclamer l'Invitation", "cloudSorryContactSupport_title": "Désolé, contactez le support", - "cloudVerifyEmail_title": "Vérification d'Email", "cloudPrivateBeta_title": "Cloud est actuellement en bêta privée", "cloudPrivateBeta_desc": "Connectez-vous pour rejoindre la liste d'attente. Nous vous préviendrons quand vous aurez accès à la bêta. Déjà notifié ? Connectez-vous pour commencer à utiliser Comfy Cloud.", "cloudForgotPassword_title": "Mot de passe oublié", diff --git a/src/locales/ja/main.json b/src/locales/ja/main.json index dc8ea3516..fd4721d68 100644 --- a/src/locales/ja/main.json +++ b/src/locales/ja/main.json @@ -1955,7 +1955,6 @@ "cloudClaimInvite_processingTitle": "招待コードを処理中...", "cloudClaimInvite_claimButton": "招待を申請", "cloudSorryContactSupport_title": "申し訳ございません、サポートにお問い合わせください", - "cloudVerifyEmail_title": "メール確認", "cloudPrivateBeta_title": "Cloudは現在プライベートベータ版です", "cloudPrivateBeta_desc": "サインインしてウェイトリストに登録してください。ベータアクセスが可能になりましたらお知らせします。すでに通知を受け取りましたか?サインインしてComfy Cloudを始めてください。", "cloudForgotPassword_title": "パスワードを忘れた", diff --git a/src/locales/ko/main.json b/src/locales/ko/main.json index 79c8ef5c4..b1e5168a3 100644 --- a/src/locales/ko/main.json +++ b/src/locales/ko/main.json @@ -1955,7 +1955,6 @@ "cloudClaimInvite_processingTitle": "초대 코드 확인중...", "cloudClaimInvite_claimButton": "초대 요청하기", "cloudSorryContactSupport_title": "죄송합니다, 지원팀에 문의해주세요", - "cloudVerifyEmail_title": "이메일 확인", "cloudPrivateBeta_title": "Cloud는 현재 비공개 베타 버전입니다", "cloudPrivateBeta_desc": "로그인하여 대기자 명단에 등록하세요. 베타 버전이 오픈될 때 알려드릴게요. 이미 알림을 받으셨다면? 로그인하여 Comfy Cloud를 시작해보세요.", "cloudForgotPassword_title": "비밀번호 찾기", diff --git a/src/locales/ru/main.json b/src/locales/ru/main.json index 8f5211253..203157be0 100644 --- a/src/locales/ru/main.json +++ b/src/locales/ru/main.json @@ -1955,7 +1955,6 @@ "cloudClaimInvite_processingTitle": "Обработка кода приглашения...", "cloudClaimInvite_claimButton": "Получить приглашение", "cloudSorryContactSupport_title": "Извините, свяжитесь с поддержкой", - "cloudVerifyEmail_title": "Подтверждение email", "cloudPrivateBeta_title": "Cloud сейчас в приватной бете", "cloudPrivateBeta_desc": "Войдите, чтобы присоединиться к списку ожидания. Мы уведомим вас, когда будет доступен бета-доступ. Уже получили уведомление? Войдите и начните работать с Comfy Cloud.", "cloudForgotPassword_title": "Забыли пароль", diff --git a/src/locales/zh-TW/main.json b/src/locales/zh-TW/main.json index ba459d103..c8fa472a3 100644 --- a/src/locales/zh-TW/main.json +++ b/src/locales/zh-TW/main.json @@ -1955,7 +1955,6 @@ "cloudClaimInvite_processingTitle": "處理邀請碼中...", "cloudClaimInvite_claimButton": "領取邀請", "cloudSorryContactSupport_title": "抱歉,請聯繫用戶支援", - "cloudVerifyEmail_title": "郵箱驗證", "cloudPrivateBeta_title": "Cloud 目前處於內測階段", "cloudPrivateBeta_desc": "登入即可加入等候名單,當您有內測資格時我們將及時通知。已收到通知?登入即可開始使用 Comfy Cloud。", "cloudForgotPassword_title": "忘記密碼", diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index ee3fcbca3..f240519a9 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -1958,7 +1958,6 @@ "cloudClaimInvite_processingTitle": "处理邀请码中...", "cloudClaimInvite_claimButton": "领取邀请", "cloudSorryContactSupport_title": "抱歉,请联系用户支持", - "cloudVerifyEmail_title": "邮箱验证", "cloudPrivateBeta_title": "Cloud 目前处于内测阶段", "cloudPrivateBeta_desc": "登录即可加入等候名单,当您有内测资格时我们将及时通知。已收到通知?登录即可开始使用 Comfy Cloud。", "cloudForgotPassword_title": "忘记密码", diff --git a/src/onboardingCloudRoutes.ts b/src/onboardingCloudRoutes.ts index cc427e4f2..4585ab8c9 100644 --- a/src/onboardingCloudRoutes.ts +++ b/src/onboardingCloudRoutes.ts @@ -68,8 +68,10 @@ export const cloudOnboardingRoutes: RouteRecordRaw[] = [ { path: 'verify-email', name: 'cloud-verify-email', - component: () => - import('@/platform/onboarding/cloud/CloudVerifyEmailView.vue') + redirect: (to) => ({ + name: 'cloud-user-check', + query: to.query + }) }, { path: 'sorry-contact-support', diff --git a/src/platform/onboarding/cloud/CloudInviteEntryView.vue b/src/platform/onboarding/cloud/CloudInviteEntryView.vue index ca25248a3..5a16fded9 100644 --- a/src/platform/onboarding/cloud/CloudInviteEntryView.vue +++ b/src/platform/onboarding/cloud/CloudInviteEntryView.vue @@ -17,23 +17,16 @@ onMounted(async () => { const inviteCode = route.params.code as string | undefined if (firebaseAuthStore.isAuthenticated) { - const { isEmailVerified } = firebaseAuthStore - - if (!isEmailVerified) { - // User is logged in but email not verified - await router.push({ name: 'cloud-verify-email', query: { inviteCode } }) + // User is logged in - no email verification check needed + if (inviteCode) { + // Handle invite code flow - go to invite check + await router.push({ + name: 'cloud-invite-check', + query: { inviteCode } + }) } else { - // User is logged in and verified - if (inviteCode) { - // Handle invite code flow - go to invite check - await router.push({ - name: 'cloud-invite-check', - query: { inviteCode } - }) - } else { - // Normal login flow - go to user check - await router.push({ name: 'cloud-user-check' }) - } + // Normal login flow - go to user check + await router.push({ name: 'cloud-user-check' }) } } else { // User is not logged in - proceed to login page diff --git a/src/platform/onboarding/cloud/CloudLoginView.vue b/src/platform/onboarding/cloud/CloudLoginView.vue index d8eb3542d..b7e4e6ca2 100644 --- a/src/platform/onboarding/cloud/CloudLoginView.vue +++ b/src/platform/onboarding/cloud/CloudLoginView.vue @@ -115,7 +115,6 @@ import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthAction import CloudSignInForm from '@/platform/onboarding/cloud/components/CloudSignInForm.vue' import { useToastStore } from '@/platform/updates/common/toastStore' import type { SignInData } from '@/schemas/signInSchema' -import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' import { translateAuthError } from '@/utils/authErrorTranslation' const { t } = useI18n() @@ -140,20 +139,15 @@ const onSuccess = async () => { }) // Check if there's an invite code const inviteCode = route.query.inviteCode as string | undefined - const { isEmailVerified } = useFirebaseAuthStore() - if (!isEmailVerified) { - await router.push({ name: 'cloud-verify-email', query: { inviteCode } }) + if (inviteCode) { + // Handle invite code flow - go to invite check + await router.push({ + name: 'cloud-invite-check', + query: { inviteCode } + }) } else { - if (inviteCode) { - // Handle invite code flow - go to invite check - await router.push({ - name: 'cloud-invite-check', - query: { inviteCode } - }) - } else { - // Normal login flow - go to user check - await router.push({ name: 'cloud-user-check' }) - } + // Normal login flow - go to user check + await router.push({ name: 'cloud-user-check' }) } } diff --git a/src/platform/onboarding/cloud/CloudSignupView.vue b/src/platform/onboarding/cloud/CloudSignupView.vue index f2a000ec4..0f140da77 100644 --- a/src/platform/onboarding/cloud/CloudSignupView.vue +++ b/src/platform/onboarding/cloud/CloudSignupView.vue @@ -104,7 +104,6 @@ import { isCloud } from '@/platform/distribution/types' import { useTelemetry } from '@/platform/telemetry' import { useToastStore } from '@/platform/updates/common/toastStore' import type { SignUpData } from '@/schemas/signInSchema' -import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' import { translateAuthError } from '@/utils/authErrorTranslation' import { isInChina } from '@/utils/networkUtil' @@ -127,20 +126,8 @@ const onSuccess = async () => { summary: 'Sign up Completed', life: 2000 }) - // Check if email verification is needed - const { isEmailVerified } = useFirebaseAuthStore() - const inviteCode = route.query.inviteCode as string | undefined - - if (!isEmailVerified) { - // Redirect to email verification with fromAuth flag - await router.push({ - name: 'cloud-verify-email', - query: { inviteCode, fromAuth: 'true' } - }) - } else { - // The invite code will be handled after the user is logged in - await router.push({ path: '/', query: route.query }) - } + // Direct redirect to main app - email verification removed + await router.push({ path: '/', query: route.query }) } // Custom error handler for inline display diff --git a/src/platform/onboarding/cloud/CloudVerifyEmailView.vue b/src/platform/onboarding/cloud/CloudVerifyEmailView.vue deleted file mode 100644 index 26b39de0d..000000000 --- a/src/platform/onboarding/cloud/CloudVerifyEmailView.vue +++ /dev/null @@ -1,191 +0,0 @@ - - - diff --git a/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts b/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts index 70c864ad9..296264757 100644 --- a/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts +++ b/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts @@ -347,24 +347,6 @@ export class MixpanelTelemetryProvider implements TelemetryProvider { } } - trackEmailVerification(stage: 'opened' | 'requested' | 'completed'): void { - let eventName: TelemetryEventName - - switch (stage) { - case 'opened': - eventName = TelemetryEvents.USER_EMAIL_VERIFY_OPENED - break - case 'requested': - eventName = TelemetryEvents.USER_EMAIL_VERIFY_REQUESTED - break - case 'completed': - eventName = TelemetryEvents.USER_EMAIL_VERIFY_COMPLETED - break - } - - this.trackEvent(eventName) - } - trackTemplate(metadata: TemplateMetadata): void { this.trackEvent(TelemetryEvents.TEMPLATE_WORKFLOW_OPENED, metadata) } diff --git a/src/platform/telemetry/types.ts b/src/platform/telemetry/types.ts index 06e3c6946..f19c0751a 100644 --- a/src/platform/telemetry/types.ts +++ b/src/platform/telemetry/types.ts @@ -104,9 +104,6 @@ export interface TelemetryProvider { // Survey flow events trackSurvey(stage: 'opened' | 'submitted', responses?: SurveyResponses): void - // Email verification events - trackEmailVerification(stage: 'opened' | 'requested' | 'completed'): void - // Template workflow events trackTemplate(metadata: TemplateMetadata): void @@ -141,11 +138,6 @@ export const TelemetryEvents = { USER_SURVEY_OPENED: 'app:user_survey_opened', USER_SURVEY_SUBMITTED: 'app:user_survey_submitted', - // Email Verification - USER_EMAIL_VERIFY_OPENED: 'app:user_email_verify_opened', - USER_EMAIL_VERIFY_REQUESTED: 'app:user_email_verify_requested', - USER_EMAIL_VERIFY_COMPLETED: 'app:user_email_verify_completed', - // Template Tracking TEMPLATE_WORKFLOW_OPENED: 'app:template_workflow_opened', diff --git a/src/router.ts b/src/router.ts index dac8395d9..e39d7cd00 100644 --- a/src/router.ts +++ b/src/router.ts @@ -179,13 +179,6 @@ router.beforeEach(async (to, _from, next) => { // For root path, check actual user status to handle waitlisted users if (!isElectron() && isLoggedIn && to.path === '/') { try { - // Check email verification first - const authStore = useFirebaseAuthStore() - if (!authStore.isEmailVerified) { - // Don't pass fromAuth here since this is from root navigation, not auth flow - return next({ name: 'cloud-verify-email' }) - } - // Import auth functions dynamically to avoid circular dependency const { getUserCloudStatus, getSurveyCompletedStatus } = await import( '@/api/auth' diff --git a/src/stores/firebaseAuthStore.ts b/src/stores/firebaseAuthStore.ts index e244aca5d..599ef80cb 100644 --- a/src/stores/firebaseAuthStore.ts +++ b/src/stores/firebaseAuthStore.ts @@ -9,7 +9,6 @@ import { getAdditionalUserInfo, onAuthStateChanged, onIdTokenChanged, - sendEmailVerification, sendPasswordResetEmail, setPersistence, signInWithEmailAndPassword, @@ -82,9 +81,6 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => { const isAuthenticated = computed(() => !!currentUser.value) const userEmail = computed(() => currentUser.value?.email) const userId = computed(() => currentUser.value?.uid) - const isEmailVerified = computed( - () => currentUser.value?.emailVerified ?? false - ) // Get auth from VueFire and listen for auth state changes // From useFirebaseAuth docs: @@ -349,14 +345,6 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => { await updatePassword(currentUser.value, newPassword) } - /** Send email verification to current user */ - const verifyEmail = async (): Promise => { - if (!currentUser.value) { - throw new FirebaseAuthStoreError(t('toastMessages.userNotAuthenticated')) - } - await sendEmailVerification(currentUser.value) - } - /** Delete the current user account */ const _deleteAccount = async (): Promise => { if (!currentUser.value) { @@ -440,7 +428,6 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => { // State loading, currentUser, - isEmailVerified, isInitialized, balance, lastBalanceUpdateTime, @@ -466,7 +453,6 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => { sendPasswordReset, updatePassword: _updatePassword, getAuthHeader, - verifyEmail, deleteAccount: _deleteAccount } })