# Configurar o Portal Vanessa

O portal usa o site estático no GitHub Pages para a interface e o Supabase para autenticação, usuários, cards e permissões. Não existe senha privada dentro do repositório.

## O que já está pronto

- Login individual por e-mail e senha.
- Acesso por link mágico.
- Recuperação de senha.
- Sessão persistente e logout.
- Aprovação manual de novos usuários.
- Papéis `owner`, `team`, `client` e `partner`.
- Cards filtrados por papel de acesso.
- Busca e filtros por categoria.
- Modo de demonstração sem links privados.

## 1. Criar o projeto

1. Crie um projeto em [Supabase](https://supabase.com/dashboard).
2. Abra `SQL Editor`.
3. Execute todo o arquivo `supabase/portal-schema.sql`.

Esse script cria as tabelas `portal_profiles` e `portal_apps`, além das políticas de Row Level Security.

## 2. Configurar as URLs de autenticação

Em `Authentication` → `URL Configuration`:

1. Defina `Site URL` como `https://www.vanessabertolucci.com`.
2. Adicione `https://www.vanessabertolucci.com/portal.html` em `Redirect URLs`.
3. Para testes locais, adicione também `http://127.0.0.1:4173/portal.html`.

Links oficiais:

- [Redirect URLs](https://supabase.com/docs/guides/auth/redirect-urls)
- [Login por link mágico](https://supabase.com/docs/guides/auth/auth-email-passwordless)

## 3. Conectar o site

No Supabase, abra `Project Settings` → `API Keys` e copie:

- Project URL.
- Publishable key. Em projetos antigos, ela pode aparecer como `anon` key.

Preencha `assets/js/config.js`:

```js
window.SITE_CONFIG = {
  portal: {
    supabaseUrl: 'https://SEU_PROJETO.supabase.co',
    supabasePublishableKey: 'SUA_CHAVE_PUBLICAVEL',
    allowSelfSignUp: false
  }
};
```

A publishable key pode ficar no frontend. Nunca use uma `service_role` ou secret key no site.

## 4. Criar e aprovar usuários

### Convite controlado, recomendado

1. Abra `Authentication` → `Users`.
2. Use `Invite user`.
3. Depois do cadastro, abra `Table Editor` → `portal_profiles`.
4. Defina:
   - `active`: `true`
   - `role`: `owner`, `team`, `client` ou `partner`

Para sua conta, use `owner`.

### Auto-registro

Altere `allowSelfSignUp` para `true`. Novas contas serão criadas como `client` e `active = false`, portanto ainda precisarão de aprovação no `portal_profiles`.

## 5. Cadastrar os cards

Abra `Table Editor` → `portal_apps` e crie uma linha para cada recurso:

| Campo | Exemplo |
|---|---|
| `name` | Manuscript Studio |
| `description` | Diagramação e organização de artigos |
| `url` | https://app.exemplo.com |
| `category` | Pesquisa |
| `icon` | MS |
| `color` | #6b4eff |
| `app_type` | Aplicativo |
| `access_level` | Equipe |
| `status` | Em produção |
| `allowed_roles` | `{owner,team}` |
| `is_active` | true |
| `sort_order` | 10 |

O campo `allowed_roles` determina quem pode receber aquele card. A filtragem acontece no banco, não apenas na interface.

## Segurança importante

- O HTML de `portal.html` é público, mas dados, cards e links privados só são retornados a usuários autenticados e autorizados.
- Cada aplicativo de destino também deve manter sua própria autenticação quando houver dados sensíveis. Um link não substitui a segurança do sistema acessado.
- Administre usuários e cards pelo painel do Supabase. Não coloque listas privadas no JavaScript.
- As políticas estão em `supabase/portal-schema.sql` e usam [Row Level Security](https://supabase.com/docs/guides/database/postgres/row-level-security).

## Publicação

Depois de configurar:

1. Publique todos os arquivos do site no GitHub Pages.
2. Acesse `https://www.vanessabertolucci.com/portal.html`.
3. Entre com a conta `owner`.
4. Confirme que cada papel enxerga somente os cards previstos.
