# Mejoras del Panel SmartTube - Sistema de Gestión de Créditos y Roles

## Resumen de Cambios

Se ha implementado un sistema completo de gestión de roles y créditos en el panel SmartTube, permitiendo la creación de revendedores y el control de activaciones de clientes finales mediante un sistema de créditos.

## Nuevas Funcionalidades

### 1. Sistema de Roles

El panel ahora soporta dos roles principales:

**Admin**: Acceso total al panel con capacidades ilimitadas
- Crear, editar y eliminar revendedores
- Asignar créditos a revendedores
- Ver todos los clientes finales
- Gestionar DNS y configuraciones

**Reseller**: Revendedor con créditos limitados
- Crear clientes finales (consume 1 crédito por cliente)
- Ver solo sus propios clientes
- Consultar su historial de créditos
- Actualizar sus credenciales

### 2. Sistema de Créditos

Cada revendedor tiene un saldo de créditos que se consume al crear clientes finales:

- **1 Cliente Final = 1 Crédito**
- El admin puede asignar créditos a los revendedores
- Se mantiene un historial completo de movimientos de créditos
- Los revendedores pueden ver su balance en tiempo real

### 3. Nuevas Páginas

#### `resellers.php`
- Gestión de revendedores (solo para admin)
- Crear, editar y eliminar revendedores
- Asignar créditos a revendedores
- Ver balance de créditos de cada revendedor

#### `clients.php`
- Gestión de clientes finales
- Admin ve todos los clientes
- Revendedores ven solo sus clientes
- Crear cliente consume 1 crédito (para revendedores)
- Editar y eliminar clientes

#### `credits.php`
- Panel de control de créditos
- Mostrar balance disponible
- Historial de movimientos (agregados/utilizados)
- Estadísticas de uso

### 4. Cambios en la Base de Datos

Se han añadido nuevas columnas a las tablas existentes:

**Tabla `user`**:
- `role`: Rol del usuario (admin/reseller)
- `credits`: Saldo de créditos disponibles
- `owner_id`: ID del usuario que creó este registro

**Tabla `menualuser`**:
- `owner_id`: ID del revendedor/admin que creó el cliente
- `user_type`: Tipo de usuario (client)

**Nueva tabla `credit_logs`**:
- Registro de todos los movimientos de créditos
- Permite auditoría completa de transacciones

### 5. Cambios en la Interfaz

**Header mejorado**:
- Menú dinámico según el rol del usuario
- Muestra el balance de créditos para revendedores
- Opciones de navegación contextuales

**Mensajes informativos**:
- Alertas cuando no hay créditos suficientes
- Confirmación de acciones críticas
- Notificaciones de éxito/error

## Flujo de Trabajo

### Para el Admin

1. Acceder al panel con credenciales de admin
2. Ir a "Revendedores"
3. Crear nuevo revendedor con usuario y contraseña
4. Asignar créditos iniciales
5. El revendedor puede iniciar sesión y crear clientes

### Para el Revendedor

1. Acceder con sus credenciales
2. Ver balance de créditos en la barra superior
3. Ir a "Clientes"
4. Crear nuevo cliente (consume 1 crédito)
5. Consultar historial en "Créditos"

## Funciones de Utilidad

Se han añadido funciones en `functions.php`:

- `getCurrentUser()`: Obtiene el usuario actual
- `isAdmin()`: Verifica si es admin
- `isReseller()`: Verifica si es revendedor
- `getAvailableCredits()`: Obtiene créditos disponibles
- `deductCredits()`: Resta créditos y registra en log
- `addCredits()`: Suma créditos y registra en log
- `getUserClients()`: Obtiene clientes según rol

## Credenciales Predeterminadas

**Admin**:
- Usuario: `admin`
- Contraseña: `admin`

## Consideraciones Técnicas

- Todos los datos se almacenan en SQLite3
- Las transacciones de créditos se registran con timestamp
- El sistema es escalable para añadir más roles en el futuro
- La validación de créditos se realiza antes de crear clientes
- Se mantiene historial completo para auditoría

## Mejoras Futuras Posibles

- Planes de créditos automáticos
- Notificaciones cuando los créditos son bajos
- Exportar historial de créditos en PDF
- Límite de conexiones simultáneas por cliente
- Sistema de comisiones automáticas
- Renovación automática de clientes

## Seguridad

- Validación de roles en cada página
- Prevención de acceso no autorizado
- Sanitización de datos de entrada
- Registro de todas las transacciones
