92 lines
No EOL
3.3 KiB
Markdown
92 lines
No EOL
3.3 KiB
Markdown
> Nota de atualização
|
||
>
|
||
> Este documento contém referências históricas a BFF, Appwrite ou papéis legados. No fluxo ativo do frontend, a referência correta é API direta e os papéis válidos são `admin`, `owner`, `employee` e `delivery`.
|
||
# Melhorias na Autenticação - Auth do Appwrite
|
||
|
||
## 📋 Resumo das Alterações
|
||
|
||
Este documento descreve as melhorias implementadas na autenticação para usar corretamente o ID do Auth do Appwrite.
|
||
|
||
## 🔧 Alterações Implementadas
|
||
|
||
### 1. **Uso Correto do ID do Auth**
|
||
- ✅ **Página de Login**: Já estava usando `account.get()` para obter o usuário autenticado
|
||
- ✅ **Hook useAuth**: Já estava usando `authUser.$id` corretamente
|
||
- ✅ **Consistência**: Ambos os locais usam o mesmo ID do Auth do Appwrite
|
||
|
||
### 2. **Simplificação da Lógica de Login**
|
||
- ⌠**Removido**: Criação automática de documento na collection `usuarios`
|
||
- ✅ **Mantido**: Redirecionamento para `/completar-registro` quando usuário não existe na collection
|
||
- ✅ **Melhorado**: Logs mais claros indicando uso do "ID do Auth"
|
||
|
||
### 3. **Fluxo de Autenticação Otimizado**
|
||
|
||
```typescript
|
||
// Fluxo atual:
|
||
1. Login com email/senha → account.createEmailPasswordSession()
|
||
2. Obter usuário autenticado → account.get()
|
||
3. Usar currentUser.$id como ID do documento
|
||
4. Buscar na collection usuarios usando esse ID
|
||
5. Se encontrado → Dashboard
|
||
6. Se não encontrado → Completar Registro
|
||
```
|
||
|
||
## 🎯 BenefÃcios das Melhorias
|
||
|
||
### **Consistência de IDs**
|
||
- O ID do documento na collection `usuarios` é sempre igual ao ID do Auth
|
||
- Elimina problemas de sincronização entre Auth e Database
|
||
|
||
### **Simplicidade**
|
||
- Removida lógica complexa de criação automática de documentos
|
||
- Fluxo mais limpo e previsÃvel
|
||
|
||
### **Segurança**
|
||
- Usa apenas IDs gerados pelo Appwrite Auth
|
||
- Evita conflitos de IDs personalizados
|
||
|
||
## 📠Configuração Necessária
|
||
|
||
### **Permissões da Collection `usuarios`**
|
||
Certifique-se de que as permissões estão configuradas corretamente:
|
||
|
||
```
|
||
Role: users
|
||
Permissions: read, create, update
|
||
```
|
||
|
||
### **Estrutura do Documento**
|
||
O documento na collection `usuarios` deve ter o mesmo `$id` do usuário no Auth:
|
||
|
||
```json
|
||
{
|
||
"$id": "auth_user_id_here",
|
||
"nome-civil": "Nome do Usuário",
|
||
"email": "email@exemplo.com",
|
||
"nivel": "cliente",
|
||
"ativo": true,
|
||
// outros campos...
|
||
}
|
||
```
|
||
|
||
## 🔠Como Verificar se Está Funcionando
|
||
|
||
1. **Login bem-sucedido**: Usuário é redirecionado para `/dashboard`
|
||
2. **Primeiro acesso**: Usuário é redirecionado para `/completar-registro`
|
||
3. **Logs no console**: Mostram "Auth User ID" sendo usado
|
||
4. **Sem erros 401**: Não há mais erros de autorização
|
||
|
||
## 📚 Arquivos Modificados
|
||
|
||
- `src/app/login/page.tsx` - Simplificação da lógica de login
|
||
- `PERMISSOES_COLLECTION_USUARIOS.md` - Documentação de permissões
|
||
|
||
## ✅ Status
|
||
|
||
- [x] Verificação do uso do ID do Auth
|
||
- [x] Simplificação da lógica de login
|
||
- [x] Remoção de criação automática de documentos
|
||
- [x] Teste da aplicação
|
||
- [x] Documentação das melhorias
|
||
|
||
**Resultado**: A autenticação agora usa corretamente o ID do Auth do Appwrite de forma consistente e simplificada. |