Autenticação API
A API da Ekonavi suporta múltiplos métodos de autenticação para diferentes tipos de usuários e casos de uso.
Métodos de Autenticação
1. Email e Senha
Método tradicional para usuários registrados:
POST /api/auth/login-email-password
Content-Type: application/json
{
"email": "usuario@exemplo.com",
"password": "senha123",
"redirect": "https://app.exemplo.com/dashboard" // opcional
}
2. Autenticação Google OAuth
Para login social com Google:
POST /api/auth/google-login
Content-Type: application/json
{
"redirect": "https://app.exemplo.com/dashboard" // opcional
}
3. Carteira Ethereum
Para usuários com carteiras Web3:
POST /api/auth/wallet-connect
Content-Type: application/json
{
"address": "0x742d35Cc6634C0532925a3b8D7e6c0",
"signature": "0x1234567890abcdef...",
"message": "Login na Ekonavi"
}
JWT Token
Após autenticação bem-sucedida, você receberá um JWT token:
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600,
"user": {
"id": "user_123",
"email": "usuario@exemplo.com",
"role": "farmer",
"verified": true
}
}
Usando o Token
Inclua o token em todas as requisições autenticadas:
GET /api/farmers/profile
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Refresh Tokens
Para renovar tokens expirados:
POST /api/auth/refresh
Content-Type: application/json
{
"refresh_token": "refresh_token_aqui"
}
Logout
Para invalidar o token atual:
POST /api/auth/logout
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Níveis de Acesso
Roles de Usuário
- farmer: Agricultor registrado
- verifier: Verificador certificado
- admin: Administrador da plataforma
- developer: Desenvolvedor com acesso à API
Permissões por Role
| Endpoint | farmer | verifier | admin | developer |
|---|---|---|---|---|
| GET /api/farmers/profile | Sim (próprio) | Sim | Sim | Sim |
| POST /api/practices | Sim | Não | Sim | Sim |
| POST /api/verifications | Não | Sim | Sim | Sim |
| GET /api/admin/* | Não | Não | Sim | Não |
Tratamento de Erros
401 - Não Autorizado
{
"error": "unauthorized",
"message": "Token inválido ou expirado",
"code": "INVALID_TOKEN"
}
403 - Acesso Negado
{
"error": "forbidden",
"message": "Permissão insuficiente para este recurso",
"code": "INSUFFICIENT_PERMISSIONS"
}
Segurança
- Tokens JWT são assinados com chave secreta
- Tokens têm expiração de 1 hora por padrão
- HTTPS obrigatório em produção
- Rate limiting aplicado por usuário
- Logs de auditoria para ações sensíveis