# Panel de Administración RRB — Instrucciones

## Estructura real del servidor

```
/ (raíz del servidor FTP = raíz del dominio api.sistemarrb.com)
├── config.php              ← BASE DE DATOS: getDB() está aquí
├── admin/                  ← Panel de administración
│   ├── index.html          ← Página principal (login + dashboard)
│   ├── calcular_regalias.php
│   ├── avisos.php
│   ├── verify-token.php
│   ├── login.php
│   └── api/                ← Endpoints del panel admin
│       ├── login.php
│       ├── logout.php
│       ├── verify-token.php
│       ├── ganancias-regs.php
│       ├── crear-voucher.php
│       └── voucher-grupal.php
└── app-api/                ← API principal de la app móvil
    └── ...
```

## ⚠️ REGLA CRÍTICA: Ruta del config.php

El `config.php` está en la **raíz del servidor** (`/`).

| Directorio del archivo PHP | Ruta correcta para config.php |
|---|---|
| `/admin/` (un nivel) | `require_once __DIR__ . '/../config.php';` |
| `/admin/api/` (dos niveles) | `require_once __DIR__ . '/../../config.php';` |
| `/app-api/` (un nivel) | `require_once __DIR__ . '/../config.php';` |

**Ejemplo correcto para archivos en `/admin/api/`:**
```php
require_once __DIR__ . '/../../config.php';
$db = getDB();
```

**Ejemplo correcto para archivos en `/admin/`:**
```php
require_once __DIR__ . '/../config.php';
$db = getDB();
```

## Autenticación en endpoints del panel admin

Los archivos en `/admin/api/` deben validar el token así:

```php
require_once __DIR__ . '/../../config.php';
$db = getDB();

$headers    = getallheaders();
$authHeader = $headers['Authorization'] ?? $headers['authorization'] ?? '';
if (!preg_match('/Bearer\s+(.+)/i', $authHeader, $m)) {
    http_response_code(401);
    echo json_encode(['error' => 'Token requerido']);
    exit;
}
$token = trim($m[1]);
$stmtTok = $db->prepare("SELECT idusuarios_sist FROM admin_sessions WHERE token = ? AND expira > NOW()");
$stmtTok->execute([$token]);
if (!$stmtTok->fetch()) {
    http_response_code(401);
    echo json_encode(['error' => 'Sesión expirada o inválida']);
    exit;
}
```

## URL de acceso

```
https://api.sistemarrb.com/admin/
```

## Tablas de la base de datos usadas por el panel

| Tabla | Uso |
|---|---|
| `usuarios_sist` | Usuarios administradores (login) |
| `admin_sessions` | Sesiones activas (token + expiración) |
| `inversionista` | Distribuidores del sistema |
| `regs2` | Regalías calculadas por período |
| `voucher` | Vouchers generados |
| `voucher_grupal` | Grupos de cobro (cobrador → distribuidores) |
| `avisos` | Avisos para la app móvil |

## Subir archivos al servidor

```bash
# Desde /admin/ (un nivel)
curl -T archivo.php "ftp://162.240.229.226/admin/archivo.php" --user "usuario:pass"

# Desde /admin/api/ (dos niveles)
curl -T archivo.php "ftp://162.240.229.226/admin/api/archivo.php" --user "usuario:pass"
```
