Workflow n8n que autentica usuários via tela de login customizada, varre recursivamente um Dropbox Business e exibe os top 50 arquivos ranqueados por tamanho e antiguidade, tudo em uma interface web gerada diretamente pelo n8n.
- Tela de login customizada servida diretamente pelo webhook n8n
- Autenticação via DataTable (usuário + senha armazenados no n8n)
- Varredura recursiva do Dropbox com paginação automática (
list_folder/continue) - Namespace Dropbox Business — suporte a team folders via
root_namespace_id - Score inteligente — arquivos ranqueados por
60% tamanho + 40% antiguidade - Filtro mínimo de 100 MB para focar no que realmente ocupa espaço
- Pastas excluídas configuráveis para ignorar áreas específicas
- Dashboard com uso de espaço (total, usado, livre, % do time)
- Cópia de link Dropbox direto da tabela com um clique
- Filtro e ordenação em tempo real sem recarregar a página
[GET /dropbox-lista]
│
▼
Respond to Webhook ──► Tela de Login (HTML)
│
POST /dropbox-auth
│
▼
Get Login (DataTable)
│
Check Login (Code)
│
┌──────────┴──────────┐
│ válido │ inválido
▼ ▼
GRANT ACCESS (200) DENY ACCESS (401)
Dashboard HTML Tela login c/ erro
│
POST /dropbox-processar
│
▼
Get Name Space (API)
│
Edit Fields
│
List Folders (API) ◄──────────────┐
│ │
Aggregator (Code) Pages (API)
│ │
More Pages? ──── has_more=true ──┘
│ has_more=false
Get Space (API)
│
Space Used (Code)
│
Output (Code) ──► HTML Final
│
Respond to Webhook1 (200)
| Requisito | Versão mínima |
|---|---|
| n8n | 2.14+ |
| Node Dropbox OAuth2 API | nativo no n8n |
| DataTable (n8n feature) | nativo no n8n |
- Acesse dropbox.com/developers/apps
- Create app → API: Scoped Access → Acesso: Full Dropbox
- Dê um nome (ex:
n8n-file-manager) → Create app
Na aba Settings → OAuth 2 → Redirect URIs, adicione:
https://<seu-dominio-n8n>/rest/oauth2-credential/callback
Na aba Permissions, marque:
account_info.readfiles.metadata.readfiles.content.readsharing.read
Clique em Submit após marcar.
- Credentials → New → busque
Dropbox OAuth2 API - Cole App key (Client ID) e App secret (Client Secret) da aba Settings do app
- Clique em Connect my account → autorize no popup
- Salve como
Dropbox account
No n8n, crie uma DataTable chamada dropbox com as colunas:
| Coluna | Tipo |
|---|---|
id |
number |
user |
string |
pwd |
string |
Adicione os usuários autorizados diretamente na tabela.
⚠️ Segurança: O campopwdarmazena a senha em texto plano. Para ambientes mais sensíveis, considere implementar hash (ex: bcrypt via Code node).
- No n8n, vá em Workflows → Import from file
- Selecione o arquivo
Listar_Arquivos_Dropbox.json - Após importar, configure os campos substituíveis abaixo
| Placeholder | Onde | O que colocar |
|---|---|---|
YOUR_CREDENTIAL_ID |
Nós com Dropbox | Selecione sua credencial Dropbox account na UI |
YOUR_DATATABLE_ID |
Nó Get Login |
Selecione sua DataTable dropbox na UI |
YOUR_FOLDER_PATH |
Nó List Folders |
Caminho raiz a varrer, ex: "" (tudo) ou "/Clientes" |
YOUR_FOLDER_PATH/SubFolder1 |
Nó Aggregator |
Pastas a excluir da varredura (pode deixar vazio) |
YOUR_COMPANY |
HTML das telas | Nome da sua empresa para exibir nas telas |
💡 Os campos de credencial e DataTable podem ser selecionados graficamente na UI do n8n após importar — não é necessário editar o JSON manualmente.
| Método | Path | Descrição |
|---|---|---|
GET |
/webhook/dropbox-lista |
Serve a tela de login |
POST |
/webhook/dropbox-auth |
Valida usuário e senha |
POST |
/webhook/dropbox-processar |
Executa a varredura e retorna o dashboard |
- Senhas em plaintext — a DataTable armazena senhas sem hash. Adequado para uso interno; para acesso externo, implemente hash.
allowedOrigins: "*"— os webhooks aceitam qualquer origem. Restrinja ao seu domínio em produção se necessário.- Sem rate limiting — o endpoint de auth não possui proteção contra brute force. Considere adicionar um nó de rate limit ou IP allowlist.
- Sessão stateless — não há token de sessão; o acesso ao dashboard é via chamada direta ao webhook. Ideal para redes internas.
.
├── Listar_Arquivos_Dropbox.json # Workflow n8n (sanitizado)
├── README.md # Esta documentação
└── LICENSE # MIT License
Pull requests são bem-vindos! Para mudanças maiores, abra uma issue primeiro para discutir o que você gostaria de mudar.
MIT © Veja [LICENSE] para detalhes.
