feat: Implementar rol Coordinador con permisos granulares
- Crear nuevo rol Coordinador con permisos específicos de gestión - Modificar Auth.php para soportar isCoordinador() y requireCoordinador() - Actualizar User.php con método getUsuariosGestion() para incluir coordinadores - Corregir Asignacion.php para que getAyudantesPorOrden() incluya coordinadores - Crear panel especial para coordinadores en coordinador.php - Implementar restricciones granulares en usuarios.php • Coordinadores no pueden ver/editar/desactivar administradores • No pueden crear otros administradores (se convierte a coordinador) • Solo pueden gestionar ayudantes y otros coordinadores - Actualizar navbar para mostrar rol específico con badges - Mejorar ayudante.php para que coordinadores puedan usar navbar completo - Añadir secciones especiales de gestión para coordinadores - Actualizar todos los PDFs y bot de Telegram para incluir coordinadores - Mantener retrocompatibilidad con usuarios y administradores existentes Permisos Coordinador: ✅ Ver/editar usuarios y ayudantes ✅ Gestionar turnos y orden de rotación ✅ Generar turnos automáticamente ✅ Exportar PDFs y usar bot de Telegram ❌ Acceder a configuración general, logs, webhook ❌ Administrar otros administradores
This commit is contained in:
@@ -15,24 +15,41 @@ $dbName = getenv('DB_NAME') ?: 'No configurado';
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'dashboard' ? 'active' : '' ?>" href="/admin/index.php">Dashboard</a>
|
||||
</li>
|
||||
<?php if ($auth->isAdmin()): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'dashboard' ? 'active' : '' ?>" href="/admin/index.php">Dashboard</a>
|
||||
</li>
|
||||
<?php else: ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'coordinador' ? 'active' : '' ?>" href="/admin/coordinador.php">🎯 Panel</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'usuarios' ? 'active' : '' ?>" href="/admin/usuarios.php">Usuarios</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'horarios' ? 'active' : '' ?>" href="/admin/horarios.php">Horarios</a>
|
||||
</li>
|
||||
|
||||
<?php if ($auth->isAdmin()): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'horarios' ? 'active' : '' ?>" href="/admin/horarios.php">Horarios</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'asignaciones' ? 'active' : '' ?>" href="/admin/asignaciones.php">Asignaciones</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'vista-ayudante' ? 'active' : '' ?>" href="/ayudante.php">👥 Vista Ayudante</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'webhook' ? 'active' : '' ?>" href="/admin/webhook.php">🤖 Bot</a>
|
||||
</li>
|
||||
|
||||
<?php if ($auth->isAdmin()): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'webhook' ? 'active' : '' ?>" href="/admin/webhook.php">🤖 Bot</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'logs' ? 'active' : '' ?>" href="/admin/logs.php">Logs</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
@@ -44,7 +61,18 @@ $dbName = getenv('DB_NAME') ?: 'No configurado';
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><span class="dropdown-item-text d-block"><strong>Usuario:</strong> <?= htmlspecialchars($user['nombre'] ?? 'Usuario') ?></span></li>
|
||||
<li><span class="dropdown-item-text d-block"><strong>Rol:</strong> <?= htmlspecialchars(ucfirst($user['rol'] ?? '')) ?></span></li>
|
||||
<li><span class="dropdown-item-text d-block"><strong>Rol:</strong>
|
||||
<?php
|
||||
$rol = $user['rol'] ?? '';
|
||||
if ($rol === 'admin') {
|
||||
echo 'Administrador';
|
||||
} elseif ($rol === 'coordinador') {
|
||||
echo '🎯 Coordinador';
|
||||
} else {
|
||||
echo htmlspecialchars(ucfirst($rol));
|
||||
}
|
||||
?>
|
||||
</span></li>
|
||||
<li><span class="dropdown-item-text d-block small text-muted"><strong>DB Host:</strong> <?= htmlspecialchars($dbHost) ?></span></li>
|
||||
<li><span class="dropdown-item-text d-block small text-muted"><strong>DB Name:</strong> <?= htmlspecialchars($dbName) ?></span></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
|
||||
Reference in New Issue
Block a user