# 🔧 Correção: Erro 403 Forbidden

## 🐛 Problema

Ao acessar a página `/subscription`, o sistema retornava erro 403 Forbidden quando tentava carregar o histórico de pagamentos.

## 🔍 Causa Raiz

O middleware `CheckApiRequestLimit` (que verifica limites de uso da API) estava bloqueando a rota `/payments` porque ela **não estava na whitelist** de rotas do frontend.

### Como Funcionava:

1. **Usuário acessa** `/subscription`
2. **Frontend faz request** para `/api/v1/payments`
3. **Middleware intercepta** e verifica se é rota de frontend ou API externa
4. **`/payments` não está na lista** de rotas de frontend
5. **Middleware verifica limite** de API do plano do usuário
6. **Se o usuário atingiu o limite** (ou não tem plano) → **403 Forbidden**

### Código do Problema:

```php
// backend/app/Http/Middleware/CheckApiRequestLimit.php (linha 27-45)
$frontendRoutes = [
    'auth/me',
    'whatsapp/queue',
    'whatsapp/sync-statuses',
    'whatsapp/my-connections',
    'system-notifications',
    'announcements',
    'reports/overview',
    'clients',
    'servers',
    'subscriptions/current',
    'message-templates',
    'dashboard',
    'affiliate',
    'plans',
    'settings',
    'admin/dashboard',
    'admin/updates',
];
// ← '/payments' FALTANDO!
```

## ✅ Solução Implementada

Adicionei `/payments` e `/subscriptions` à whitelist de rotas do frontend:

```php
$frontendRoutes = [
    'auth/me',
    'whatsapp/queue',
    'whatsapp/sync-statuses',
    'whatsapp/my-connections',
    'system-notifications',
    'announcements',
    'reports/overview',
    'clients',
    'servers',
    'subscriptions/current',
    'subscriptions',        // ← ADICIONADO
    'message-templates',
    'dashboard',
    'affiliate',
    'plans',
    'payments',             // ← ADICIONADO
    'settings',
    'admin/dashboard',
    'admin/updates',
];
```

## 🚀 Como Aplicar no Servidor

```bash
cd /var/www/gestorstream

# Atualizar código
git pull origin main

# Limpar cache
cd backend
php artisan config:clear
php artisan cache:clear
php artisan route:clear

# Testar
curl -H "Authorization: Bearer SEU_TOKEN" \
     -H "Accept: application/json" \
     https://gestor.jf.eng.br/api/v1/payments
```

**Resultado esperado**: Status 200 (não mais 403)

## 📊 Impacto da Correção

### Antes:
- ❌ `/api/v1/payments` → 403 Forbidden
- ❌ Página `/subscription` não carregava histórico
- ❌ Usuários achavam que não tinham pagamentos

### Depois:
- ✅ `/api/v1/payments` → 200 OK
- ✅ Página `/subscription` carrega normalmente
- ✅ Histórico de pagamentos é exibido

## 🔐 Segurança

Esta correção **não compromete a segurança**:

- ✅ A rota `/payments` ainda exige autenticação (`auth:sanctum`)
- ✅ O `PaymentController::index()` só retorna pagamentos do usuário logado
- ✅ Apenas removemos a verificação de limite de API (que não se aplica a rotas do frontend)

```php
// PaymentController.php (linha 228)
public function index(Request $request)
{
    $payments = Payment::where('user_id', $request->user()->id)
        ->with('subscription.plan')
        ->orderBy('created_at', 'desc')
        ->limit(50)
        ->get();

    return response()->json(['data' => $payments]);
}
```

O usuário **só pode ver seus próprios pagamentos**.

## 🧪 Teste

### Teste 1: Verificar se /payments funciona

```bash
# Com token válido
curl -H "Authorization: Bearer TOKEN" \
     -H "Accept: application/json" \
     https://gestor.jf.eng.br/api/v1/payments
```

**Esperado**: `{"data": [...]}` com status 200

### Teste 2: Acessar página /subscription

1. Acesse: `https://gestor.jf.eng.br/subscription`
2. Abra DevTools (F12) > Console
3. Verifique logs: `[API] Response success: /payments Status: 200`
4. Página deve carregar sem erros

### Teste 3: Verificar segurança

```bash
# Sem token
curl -H "Accept: application/json" \
     https://gestor.jf.eng.br/api/v1/payments
```

**Esperado**: Status 401 Unauthorized (rota ainda protegida)

## 📝 Arquivos Alterados

1. **`backend/app/Http/Middleware/CheckApiRequestLimit.php`**
   - Adicionado `'payments'` e `'subscriptions'` à whitelist

## ✅ Checklist

- [x] Código corrigido
- [ ] Git pull no servidor
- [ ] Cache limpo
- [ ] Teste de API com curl
- [ ] Teste de acesso à página /subscription
- [ ] Verificação de logs

---

**Data**: 2026-01-12  
**Tipo**: Correção de Middleware (403 Forbidden)  
**Impacto**: Página /subscription agora funciona corretamente
