Files
ComfyUI_frontend/src/onboardingCloudRoutes.ts
Jin Yi 2702ac64fe [bugfix] Fix cloud invite code route authentication issue (#5730)
## Summary
- Remove `requiresAuth: true` from cloud-invite-code route to fix
redirect issues in production

## Problem
The `/cloud/code/:code` route had conflicting configurations:
- Route was marked as `requiresAuth: true` in route definition
- But was treated as a public route in the router guard logic
- This caused authentication redirect issues when unauthenticated users
tried to access invite links

## Solution
Removed the `requiresAuth: true` meta property from the
cloud-invite-code route, allowing it to properly function as a public
route that redirects to login with the invite code.

## Test plan
- [x] Access `/cloud/code/TESTCODE` while logged out - should redirect
to login with `inviteCode` query param
- [x] Verify no authentication errors in console
- [x] Confirm invite code is preserved through the redirect flow

Fixes authentication redirect issue for cloud invite links

🤖 Generated with [Claude Code](https://claude.ai/code)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5730-bugfix-Fix-cloud-invite-code-route-authentication-issue-2776d73d36508149b512d7f735b1a231)
by [Unito](https://www.unito.io)
2025-09-22 20:08:30 -07:00

89 lines
2.5 KiB
TypeScript

import type { RouteRecordRaw } from 'vue-router'
export const cloudOnboardingRoutes: RouteRecordRaw[] = [
{
path: '/cloud',
component: () =>
import('@/platform/onboarding/cloud/components/CloudLayoutView.vue'),
children: [
{
path: 'code/:code',
name: 'cloud-invite-code',
component: () =>
import('@/platform/onboarding/cloud/CloudInviteEntryView.vue')
},
{
path: 'login',
name: 'cloud-login',
component: () =>
import('@/platform/onboarding/cloud/CloudLoginView.vue')
},
{
path: 'signup',
name: 'cloud-signup',
component: () =>
import('@/platform/onboarding/cloud/CloudSignupView.vue')
},
{
path: 'forgot-password',
name: 'cloud-forgot-password',
component: () =>
import('@/platform/onboarding/cloud/CloudForgotPasswordView.vue')
},
{
path: 'survey',
name: 'cloud-survey',
component: () =>
import('@/platform/onboarding/cloud/CloudSurveyView.vue'),
meta: { requiresAuth: true }
},
{
path: 'waitlist',
name: 'cloud-waitlist',
component: () =>
import('@/platform/onboarding/cloud/CloudWaitlistView.vue'),
meta: { requiresAuth: true }
},
{
path: 'user-check',
name: 'cloud-user-check',
component: () =>
import('@/platform/onboarding/cloud/UserCheckView.vue'),
meta: { requiresAuth: true }
},
{
path: 'invite-check',
name: 'cloud-invite-check',
component: () =>
import('@/platform/onboarding/cloud/InviteCheckView.vue'),
meta: { requiresAuth: true }
},
{
path: 'claim-invite',
name: 'cloud-claim-invite',
component: () =>
import('@/platform/onboarding/cloud/CloudClaimInviteView.vue'),
meta: { requiresAuth: true }
},
{
path: 'verify-email',
name: 'cloud-verify-email',
component: () =>
import('@/platform/onboarding/cloud/CloudVerifyEmailView.vue')
},
{
path: 'sorry-contact-support',
name: 'cloud-sorry-contact-support',
component: () =>
import('@/platform/onboarding/cloud/CloudSorryContactSupportView.vue')
},
{
path: 'auth-timeout',
name: 'cloud-auth-timeout',
component: () =>
import('@/platform/onboarding/cloud/CloudAuthTimeoutView.vue')
}
]
}
]