101 lines
2.8 KiB
Plaintext
101 lines
2.8 KiB
Plaintext
O que foi feito (até agora)
|
|
Usuários de teste criados
|
|
|
|
admin@agenciapsi.com.br
|
|
— senha: 123Mudar@
|
|
|
|
patient@agenciapsi.com.br
|
|
— senha: 123Mudar@
|
|
|
|
therapist@agenciapsi.com.br
|
|
— senha: 123Mudar@
|
|
|
|
Base funcionando
|
|
|
|
✅ Auth (Supabase) está funcionando
|
|
✅ Tabela profiles criada e ok
|
|
✅ Trigger automático cria profile após signup
|
|
✅ Campo role definido (admin | therapist | patient)
|
|
✅ RLS básico ativo
|
|
✅ Login funcionando
|
|
✅ Logout funcionando
|
|
✅ Guard de rota implementado e ativo
|
|
✅ RBAC básico operando via meta.role + redirect para painel correto
|
|
✅ Home pública / com 3 cards (Admin | Therapist | Patient) levando ao login
|
|
✅ Pós-login: busca profiles.role e redireciona para:
|
|
|
|
/admin
|
|
|
|
/therapist
|
|
|
|
/patient
|
|
|
|
Estrutura implementada agora (menus e sessão para o Sakai)
|
|
Sessão central (evita menu errado e if(role) espalhado)
|
|
|
|
✅ Criado src/app/session.js com:
|
|
|
|
sessionUser, sessionRole, sessionReady (refs globais)
|
|
|
|
initSession() (carrega user + role antes de renderizar o layout)
|
|
|
|
listenAuthChanges() (atualiza sessão ao logar/deslogar)
|
|
|
|
✅ Ajustado src/main.js para usar bootstrap async:
|
|
|
|
chama await initSession() antes de app.mount()
|
|
|
|
liga listenAuthChanges()
|
|
|
|
mantém PrimeVue, tema Aura, ToastService e ConfirmationService
|
|
|
|
mantém imports de CSS existentes
|
|
|
|
Menu dinâmico por role no Sakai
|
|
|
|
✅ Menus foram estruturados no formato do Sakai (sections com label + items) e separados por role:
|
|
|
|
src/navigation/menus/admin.menu.js
|
|
|
|
src/navigation/menus/therapist.menu.js
|
|
|
|
src/navigation/menus/patient.menu.js
|
|
|
|
✅ Criado src/navigation/index.js com getMenuByRole(role) para centralizar a escolha do menu (sem if(role) em componentes).
|
|
|
|
✅ Ajustado o AppMenu.vue (menu do Sakai) para:
|
|
|
|
usar computed() com sessionRole/sessionReady
|
|
|
|
carregar dinamicamente getMenuByRole(sessionRole.value)
|
|
|
|
evitar “piscar” menu errado antes de carregar (sessionReady)
|
|
|
|
Menu demo do Sakai mantido sem quebrar o produto
|
|
|
|
✅ Mantivemos o menu demo (UIKit/Blocks/Start etc.) em arquivo separado para não perder as páginas do template:
|
|
|
|
src/navigation/menus/sakai.demo.menu.js (conteúdo original do template)
|
|
|
|
✅ Estratégia adotada:
|
|
|
|
Admin pode ver o menu demo (idealmente só em DEV)
|
|
|
|
Therapist/Patient ficam com menu limpo (clínico)
|
|
|
|
Rotas demo do Sakai corrigidas (arquivos com sufixo Doc)
|
|
|
|
✅ Problema resolvido: itens do menu demo davam 404 porque as rotas/imports não existiam com os nomes esperados (Input.vue etc.).
|
|
✅ Ajuste aplicado: rotas demo apontam para arquivos *Doc.vue (ex.: ButtonDoc.vue, InputDoc.vue).
|
|
|
|
📌 Criado/ajustado src/router/routes.demo.js para mapear:
|
|
|
|
/uikit/* → @/views/uikit/*Doc.vue
|
|
|
|
e demais demos conforme existirem
|
|
|
|
✅ Incluído demoRoutes no router principal para o menu demo funcionar.
|
|
|
|
Testes
|
|
|
|
✅ Confirmado que localStorage.clear() limpa sessão para testar outros usuários/roles rapidamente. |