a2f3b9fae4
- Signup.vue reescrito: coleta tipo de conta + nome + nome do negocio + slug (disponibilidade ao vivo via slug_disponivel) + email/senha; grava tudo no raw_user_meta_data do signUp; PEGADINHA #2: signOut scope:local se nao veio sessao + tela "confirme seu e-mail". Removido provisionamento/intent inline. - OnboardingPage.vue (PEGADINHA #3): 1o login chama auto_provision_free_tenant + processar_pos_signup; resolve estados provisionando/slug-colidiu/erro; redireciona pro painel conforme kind. - guard: logado-sem-tenant (nao saas_admin) -> /onboarding em vez de /login - rota /onboarding (meta.public; a pagina exige sessao) NOTA: supabase/config.toml e gitignored — enable_confirmations=true foi setado local (ativa no proximo restart do stack). No hosted, ligar em Auth>Email>Confirm. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
/*
|
|
|--------------------------------------------------------------------------
|
|
| Agência PSI
|
|
|--------------------------------------------------------------------------
|
|
| Criado e desenvolvido por Leonardo Nohama
|
|
|
|
|
| Tecnologia aplicada à escuta.
|
|
| Estrutura para o cuidado.
|
|
|
|
|
| Arquivo: src/router/routes.public.js
|
|
| Data: 2026
|
|
| Local: São Carlos/SP — Brasil
|
|
|--------------------------------------------------------------------------
|
|
| © 2026 — Todos os direitos reservados
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
export default {
|
|
path: '/',
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'home',
|
|
component: () => import('@/views/pages/HomeCards.vue')
|
|
},
|
|
|
|
// ✅ LP (página separada da landing do template)
|
|
{
|
|
path: 'lp',
|
|
name: 'lp',
|
|
component: () => import('@/views/pages/public/Landingpage-v1.vue'),
|
|
meta: { public: true }
|
|
},
|
|
|
|
// ✅ cadastro externo
|
|
{
|
|
path: 'cadastro/paciente',
|
|
name: 'public.patient.intake',
|
|
component: () => import('@/views/pages/public/CadastroPacienteExterno.vue'),
|
|
meta: { public: true }
|
|
},
|
|
// ✅ convite de clinicas
|
|
{
|
|
path: '/accept-invite',
|
|
name: 'accept-invite',
|
|
component: () => import('@/views/pages/public/AcceptInvitePage.vue'),
|
|
meta: { public: true }
|
|
},
|
|
// ✅ agendador online público
|
|
{
|
|
path: '/agendar/:slug',
|
|
name: 'agendador.publico',
|
|
component: () => import('@/views/pages/public/AgendadorPublicoPage.vue'),
|
|
meta: { public: true }
|
|
},
|
|
// ✅ documento compartilhado via link temporário
|
|
{
|
|
path: '/shared/document/:token',
|
|
name: 'shared.document',
|
|
component: () => import('@/views/pages/public/SharedDocumentPage.vue'),
|
|
meta: { public: true }
|
|
},
|
|
// ✅ Freemium F2: onboarding pós-confirmação (provisiona o tenant gratuito).
|
|
// meta.public p/ não passar pela lógica de tenant do guard; a própria
|
|
// página exige sessão (redireciona pra /auth/login se não houver).
|
|
{
|
|
path: '/onboarding',
|
|
name: 'onboarding',
|
|
component: () => import('@/views/pages/auth/OnboardingPage.vue'),
|
|
meta: { public: true }
|
|
}
|
|
]
|
|
};
|