Skip to main content

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

Endpointfarmerverifieradmindeveloper
GET /api/farmers/profileSim (próprio)SimSimSim
POST /api/practicesSimNãoSimSim
POST /api/verificationsNãoSimSimSim
GET /api/admin/*NãoNãoSimNã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