231 lines
5.3 KiB
Markdown
231 lines
5.3 KiB
Markdown
|
|
# ✅ PDIMaker - Setup Completo
|
||
|
|
|
||
|
|
## 🎉 Status da Aplicação
|
||
|
|
|
||
|
|
**TODOS OS SERVIÇOS ESTÃO RODANDO!**
|
||
|
|
|
||
|
|
```
|
||
|
|
✅ PostgreSQL (pdimaker-db) - Porta 5432
|
||
|
|
✅ Redis (pdimaker-redis) - Porta 6379
|
||
|
|
✅ Backend API (pdimaker-api) - Porta 4000
|
||
|
|
✅ Frontend Web (pdimaker-web) - Porta 3300
|
||
|
|
✅ Nginx (pdimaker-nginx) - Portas 80 e 443
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📁 Arquivos Criados
|
||
|
|
|
||
|
|
### 1. **Middleware de Autenticação**
|
||
|
|
- `frontend/middleware.ts` - Proteção de rotas e autenticação
|
||
|
|
|
||
|
|
### 2. **Configuração de Autenticação**
|
||
|
|
- `frontend/lib/auth/config.ts` - NextAuth com Google OAuth
|
||
|
|
- `frontend/lib/prisma.ts` - Cliente Prisma
|
||
|
|
- `frontend/app/api/auth/[...nextauth]/route.ts` - Rotas de autenticação
|
||
|
|
|
||
|
|
### 3. **Páginas**
|
||
|
|
- `frontend/app/login/page.tsx` - Página de login com Google
|
||
|
|
- `frontend/app/unauthorized/page.tsx` - Página de acesso negado
|
||
|
|
- `frontend/components/SessionProvider.tsx` - Provider de sessão
|
||
|
|
|
||
|
|
### 4. **Dependências Instaladas**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"next-auth": "^4.24.5",
|
||
|
|
"@auth/prisma-adapter": "^1.4.0",
|
||
|
|
"@prisma/client": "^5.8.0"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔧 Configuração Necessária
|
||
|
|
|
||
|
|
### 1. Variáveis de Ambiente (.env)
|
||
|
|
|
||
|
|
Você precisa configurar o arquivo `.env` na raiz do projeto com:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Banco de Dados
|
||
|
|
DB_PASSWORD=sua_senha_aqui
|
||
|
|
DATABASE_URL=postgresql://postgres:sua_senha@postgres:5432/pdimaker_prod
|
||
|
|
|
||
|
|
# Redis
|
||
|
|
REDIS_PASSWORD=sua_senha_redis
|
||
|
|
|
||
|
|
# JWT e Autenticação
|
||
|
|
JWT_SECRET=seu_jwt_secret_seguro
|
||
|
|
NEXTAUTH_SECRET=seu_nextauth_secret_seguro
|
||
|
|
NEXTAUTH_URL=https://pdimaker.com.br
|
||
|
|
|
||
|
|
# Google OAuth (IMPORTANTE!)
|
||
|
|
GOOGLE_CLIENT_ID=seu_google_client_id_aqui
|
||
|
|
GOOGLE_CLIENT_SECRET=seu_google_client_secret_aqui
|
||
|
|
|
||
|
|
# URLs
|
||
|
|
FRONTEND_URL=https://pdimaker.com.br
|
||
|
|
NEXT_PUBLIC_API_URL=https://api.pdimaker.com.br
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Configurar Google OAuth
|
||
|
|
|
||
|
|
Para configurar o Google OAuth:
|
||
|
|
|
||
|
|
1. Acesse: https://console.cloud.google.com/
|
||
|
|
2. Crie um novo projeto ou selecione um existente
|
||
|
|
3. Vá em "APIs e Serviços" > "Credenciais"
|
||
|
|
4. Clique em "Criar Credenciais" > "ID do cliente OAuth"
|
||
|
|
5. Configure:
|
||
|
|
- Tipo: Aplicativo da Web
|
||
|
|
- URIs de redirecionamento autorizados:
|
||
|
|
- `https://pdimaker.com.br/api/auth/callback/google`
|
||
|
|
- `http://localhost:3300/api/auth/callback/google` (desenvolvimento)
|
||
|
|
6. Copie o Client ID e Client Secret para o `.env`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Como Usar
|
||
|
|
|
||
|
|
### Acessar a Aplicação
|
||
|
|
- **Frontend**: http://seu-dominio.com ou http://localhost:80
|
||
|
|
- **API**: http://api.seu-dominio.com ou http://localhost:4000
|
||
|
|
- **Frontend Direto**: http://localhost:3300
|
||
|
|
|
||
|
|
### Rotas Protegidas
|
||
|
|
O middleware protege automaticamente:
|
||
|
|
- ✅ Rotas públicas: `/`, `/login`, `/about`, `/api/auth`
|
||
|
|
- 🔒 Todas as outras rotas requerem autenticação
|
||
|
|
- 🔐 Rotas `/workspace/[slug]` verificam permissão do usuário
|
||
|
|
|
||
|
|
### Testar Autenticação
|
||
|
|
1. Acesse: http://localhost:80/login
|
||
|
|
2. Clique em "Entrar com Google"
|
||
|
|
3. Faça login com sua conta Google
|
||
|
|
4. Será redirecionado para a home page autenticado
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Banco de Dados
|
||
|
|
|
||
|
|
### Migrations do Prisma
|
||
|
|
|
||
|
|
Para aplicar as migrations do banco:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Frontend
|
||
|
|
cd /var/www/pdimaker/frontend
|
||
|
|
docker exec pdimaker-web npx prisma db push
|
||
|
|
|
||
|
|
# Backend
|
||
|
|
cd /var/www/pdimaker/backend
|
||
|
|
docker exec pdimaker-api npx prisma db push
|
||
|
|
```
|
||
|
|
|
||
|
|
### Acessar o Banco
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker exec -it pdimaker-db psql -U postgres -d pdimaker_prod
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔍 Verificar Logs
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /var/www/pdimaker
|
||
|
|
|
||
|
|
# Todos os serviços
|
||
|
|
docker-compose logs -f
|
||
|
|
|
||
|
|
# Serviço específico
|
||
|
|
docker-compose logs -f frontend
|
||
|
|
docker-compose logs -f backend
|
||
|
|
docker-compose logs -f nginx
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🛠️ Comandos Úteis
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Ver status dos containers
|
||
|
|
docker-compose ps
|
||
|
|
|
||
|
|
# Reiniciar um serviço
|
||
|
|
docker-compose restart frontend
|
||
|
|
docker-compose restart backend
|
||
|
|
docker-compose restart nginx
|
||
|
|
|
||
|
|
# Parar todos os serviços
|
||
|
|
docker-compose down
|
||
|
|
|
||
|
|
# Iniciar todos os serviços
|
||
|
|
docker-compose up -d
|
||
|
|
|
||
|
|
# Rebuild e restart completo
|
||
|
|
docker-compose down
|
||
|
|
docker-compose build
|
||
|
|
docker-compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 Próximos Passos
|
||
|
|
|
||
|
|
1. **Configurar Google OAuth** (obrigatório para login funcionar)
|
||
|
|
2. **Aplicar migrations** do Prisma no banco
|
||
|
|
3. **Configurar SSL** para HTTPS (certificados em `/var/www/pdimaker/ssl/`)
|
||
|
|
4. **Criar usuário admin** inicial no banco
|
||
|
|
5. **Implementar páginas do dashboard** em `frontend/app/(dashboard)/`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Estrutura do Middleware
|
||
|
|
|
||
|
|
O middleware implementado protege:
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// Rotas públicas (não requerem autenticação)
|
||
|
|
["/", "/login", "/about", "/api/auth"]
|
||
|
|
|
||
|
|
// Rotas protegidas (requerem autenticação)
|
||
|
|
Todas as outras rotas
|
||
|
|
|
||
|
|
// Rotas com verificação de permissão
|
||
|
|
/workspace/[slug] - Verifica se usuário tem acesso ao workspace
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ⚠️ Problemas Conhecidos
|
||
|
|
|
||
|
|
1. **Vulnerabilidades no npm**: Execute `npm audit fix` no container
|
||
|
|
2. **OpenSSL warning**: Não afeta o funcionamento, mas considere atualizar a imagem base
|
||
|
|
3. **Google OAuth não configurado**: O login não funcionará até configurar
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 💡 Dicas
|
||
|
|
|
||
|
|
- Use o Prisma Studio para visualizar dados: `npx prisma studio`
|
||
|
|
- Configure variáveis de ambiente de desenvolvimento no `.env.local`
|
||
|
|
- Logs em tempo real: `docker-compose logs -f --tail=100`
|
||
|
|
- O middleware roda no Edge Runtime do Next.js (mais rápido)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📞 Suporte
|
||
|
|
|
||
|
|
Se tiver problemas:
|
||
|
|
1. Verifique os logs dos containers
|
||
|
|
2. Confirme que todas as variáveis de ambiente estão configuradas
|
||
|
|
3. Teste a conexão com o banco de dados
|
||
|
|
4. Verifique se o Google OAuth está configurado corretamente
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Data de Setup**: 19 de Novembro de 2025
|
||
|
|
**Versão**: 1.0.0
|
||
|
|
|