Restricción de permisos para rol coordinador en asignaciones y navbar

This commit is contained in:
nickpons666
2026-01-31 02:08:38 -06:00
parent 67c4d8173f
commit 9b219c7856
10 changed files with 62 additions and 48 deletions

0
000-default.conf Normal file → Executable file
View File

0
Dockerfile Normal file → Executable file
View File

0
apache2.conf Normal file → Executable file
View File

0
config.yaml Normal file → Executable file
View File

0
docker-compose.yml Normal file → Executable file
View File

0
docker/contenedor-ibiza.conf Normal file → Executable file
View File

View File

@@ -31,6 +31,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
} else {
$action = $_POST['action'] ?? '';
if ($auth->isAdmin()) {
if ($action === 'asignar') {
$userId = $_POST['user_id'] ?? 0;
$semana = $_POST['semana'] ?? '';
@@ -52,21 +53,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$messageType = 'success';
}
}
} elseif ($action === 'rotacion_automatica') {
$resultado = $asignacionModel->asignarSemanasFuturasAutomaticas(12);
if ($resultado['success'] > 0) {
$message = "Se generaron {$resultado['success']} semanas futuras correctamente";
if (!empty($resultado['errors'])) {
$message .= ". Errores: " . implode(', ', $resultado['errors']);
$messageType = 'warning';
} else {
$messageType = 'success';
}
} else {
$message = 'No se pudieron generar asignaciones: ' . implode(', ', $resultado['errors']);
$messageType = 'danger';
}
} elseif ($action === 'asignar_masivo') {
$userIds = $_POST['user_ids'] ?? [];
$semanaInicio = $_POST['semana_inicio'] ?? '';
@@ -93,6 +79,25 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
}
}
// Acciones permitidas tanto para Admin como para Coordinador
if ($action === 'rotacion_automatica') {
$resultado = $asignacionModel->asignarSemanasFuturasAutomaticas(12);
if ($resultado['success'] > 0) {
$message = "Se generaron {$resultado['success']} semanas futuras correctamente";
if (!empty($resultado['errors'])) {
$message .= ". Errores: " . implode(', ', $resultado['errors']);
$messageType = 'warning';
} else {
$messageType = 'success';
}
} else {
$message = 'No se pudieron generar asignaciones: ' . implode(', ', $resultado['errors']);
$messageType = 'danger';
}
}
}
}
// Para asignaciones masiva, mostrar todos los ayudantes y coordinadores
@@ -177,6 +182,7 @@ $pageTitle = 'Asignación de Turnos';
<div class="alert alert-<?= $messageType ?>"><?= htmlspecialchars($message) ?></div>
<?php endif; ?>
<?php if ($auth->isAdmin()): ?>
<div class="row mb-4">
<div class="col-md-6">
<div class="card shadow-sm">
@@ -297,8 +303,11 @@ No hay asignación para la semana <?= $posicionSinAsignar ?> de 4 (<?= date('d/m
</div>
</div>
</div>
</div>
<?php endif; ?>
<!-- Sección de Asignación Masiva -->
<?php if ($auth->isAdmin()): ?>
<div class="card shadow-sm mt-4">
<div class="card-header bg-success text-white">
<h5 class="mb-0">Asignación Masiva</h5>
@@ -370,6 +379,7 @@ No hay asignación para la semana <?= $posicionSinAsignar ?> de 4 (<?= date('d/m
</form>
</div>
</div>
<?php endif; ?>
<!-- Sección de Rotación Automática -->
<div class="card shadow-sm mt-4">

View File

@@ -52,9 +52,11 @@ $dbName = getenv('DB_NAME') ?: 'No configurado';
<?php endif; ?>
</ul>
<ul class="navbar-nav">
<?php if ($auth->isAdmin()): ?>
<li class="nav-item">
<a class="nav-link <?= $currentPage === 'logs' ? 'active' : '' ?>" href="/admin/logs.php">Logs</a>
</li>
<?php endif; ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
<?= htmlspecialchars($user['nombre'] ?? 'Usuario') ?>
@@ -73,8 +75,10 @@ $dbName = getenv('DB_NAME') ?: 'No configurado';
}
?>
</span></li>
<?php if ($auth->isAdmin()): ?>
<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>
<?php endif; ?>
<li><hr class="dropdown-divider"></li>
<?php if ($user['rol'] ?? '' === 'ayudante'): ?>
<li><a class="dropdown-item" href="/cambiar-password.php">Cambiar Contraseña</a></li>

View File

@@ -42,7 +42,7 @@ fi
echo ""
echo -e "${GREEN}Building image...${NC}"
docker build -t "$FULL_IMAGE" .
docker build --no-cache -t "$FULL_IMAGE" .
echo ""
read -p "¿Subir imagen al registry? (s/n): " push_confirm

0
scripts/generate-env.php Normal file → Executable file
View File