Restricción de permisos para rol coordinador en asignaciones y navbar
This commit is contained in:
0
000-default.conf
Normal file → Executable file
0
000-default.conf
Normal file → Executable file
0
Dockerfile
Normal file → Executable file
0
Dockerfile
Normal file → Executable file
0
apache2.conf
Normal file → Executable file
0
apache2.conf
Normal file → Executable file
0
config.yaml
Normal file → Executable file
0
config.yaml
Normal file → Executable file
0
docker-compose.yml
Normal file → Executable file
0
docker-compose.yml
Normal file → Executable file
0
docker/contenedor-ibiza.conf
Normal file → Executable file
0
docker/contenedor-ibiza.conf
Normal file → Executable file
@@ -31,28 +31,57 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
} else {
|
||||
$action = $_POST['action'] ?? '';
|
||||
|
||||
if ($action === 'asignar') {
|
||||
$userId = $_POST['user_id'] ?? 0;
|
||||
$semana = $_POST['semana'] ?? '';
|
||||
if ($auth->isAdmin()) {
|
||||
if ($action === 'asignar') {
|
||||
$userId = $_POST['user_id'] ?? 0;
|
||||
$semana = $_POST['semana'] ?? '';
|
||||
|
||||
if ($userId && $semana) {
|
||||
$asignacionModel->asignar($userId, $semana);
|
||||
$message = 'Turno asignado correctamente';
|
||||
$messageType = 'success';
|
||||
}
|
||||
} elseif ($action === 'rotar') {
|
||||
$semana = $_POST['semana'] ?? '';
|
||||
$asignacionActual = $asignacionModel->getAsignacionPorSemana($semana);
|
||||
|
||||
if ($asignacionActual) {
|
||||
$proximaPersona = $asignacionModel->getProximaPersona($asignacionActual['user_id']);
|
||||
if ($proximaPersona) {
|
||||
$asignacionModel->asignar($proximaPersona['id'], $semana);
|
||||
$message = 'Turno rotado a: ' . htmlspecialchars($proximaPersona['nombre']);
|
||||
if ($userId && $semana) {
|
||||
$asignacionModel->asignar($userId, $semana);
|
||||
$message = 'Turno asignado correctamente';
|
||||
$messageType = 'success';
|
||||
}
|
||||
} elseif ($action === 'rotar') {
|
||||
$semana = $_POST['semana'] ?? '';
|
||||
$asignacionActual = $asignacionModel->getAsignacionPorSemana($semana);
|
||||
|
||||
if ($asignacionActual) {
|
||||
$proximaPersona = $asignacionModel->getProximaPersona($asignacionActual['user_id']);
|
||||
if ($proximaPersona) {
|
||||
$asignacionModel->asignar($proximaPersona['id'], $semana);
|
||||
$message = 'Turno rotado a: ' . htmlspecialchars($proximaPersona['nombre']);
|
||||
$messageType = 'success';
|
||||
}
|
||||
}
|
||||
} elseif ($action === 'asignar_masivo') {
|
||||
$userIds = $_POST['user_ids'] ?? [];
|
||||
$semanaInicio = $_POST['semana_inicio'] ?? '';
|
||||
$rotacionAutomatica = isset($_POST['rotacion_automatica']) ? true : false;
|
||||
|
||||
if (!empty($userIds) && $semanaInicio) {
|
||||
$resultado = $asignacionModel->asignarMasivo($userIds, $semanaInicio, $rotacionAutomatica);
|
||||
|
||||
if ($resultado['success'] > 0) {
|
||||
$message = "Se asignaron {$resultado['success']} turnos correctamente";
|
||||
if ($rotacionAutomatica) {
|
||||
$message .= " con rotación automática para la siguiente semana";
|
||||
}
|
||||
$messageType = 'success';
|
||||
}
|
||||
|
||||
if (!empty($resultado['errors'])) {
|
||||
$message .= "<br>Errores: " . implode('<br>', $resultado['errors']);
|
||||
$messageType = 'warning';
|
||||
}
|
||||
} else {
|
||||
$message = 'Debes seleccionar al menos un ayudante y una semana';
|
||||
$messageType = 'danger';
|
||||
}
|
||||
}
|
||||
} elseif ($action === 'rotacion_automatica') {
|
||||
}
|
||||
|
||||
// Acciones permitidas tanto para Admin como para Coordinador
|
||||
if ($action === 'rotacion_automatica') {
|
||||
$resultado = $asignacionModel->asignarSemanasFuturasAutomaticas(12);
|
||||
|
||||
if ($resultado['success'] > 0) {
|
||||
@@ -67,30 +96,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$message = 'No se pudieron generar asignaciones: ' . implode(', ', $resultado['errors']);
|
||||
$messageType = 'danger';
|
||||
}
|
||||
} elseif ($action === 'asignar_masivo') {
|
||||
$userIds = $_POST['user_ids'] ?? [];
|
||||
$semanaInicio = $_POST['semana_inicio'] ?? '';
|
||||
$rotacionAutomatica = isset($_POST['rotacion_automatica']) ? true : false;
|
||||
|
||||
if (!empty($userIds) && $semanaInicio) {
|
||||
$resultado = $asignacionModel->asignarMasivo($userIds, $semanaInicio, $rotacionAutomatica);
|
||||
|
||||
if ($resultado['success'] > 0) {
|
||||
$message = "Se asignaron {$resultado['success']} turnos correctamente";
|
||||
if ($rotacionAutomatica) {
|
||||
$message .= " con rotación automática para la siguiente semana";
|
||||
}
|
||||
$messageType = 'success';
|
||||
}
|
||||
|
||||
if (!empty($resultado['errors'])) {
|
||||
$message .= "<br>Errores: " . implode('<br>', $resultado['errors']);
|
||||
$messageType = 'warning';
|
||||
}
|
||||
} else {
|
||||
$message = 'Debes seleccionar al menos un ayudante y una semana';
|
||||
$messageType = 'danger';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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">
|
||||
|
||||
@@ -52,9 +52,11 @@ $dbName = getenv('DB_NAME') ?: 'No configurado';
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?= $currentPage === 'logs' ? 'active' : '' ?>" href="/admin/logs.php">Logs</a>
|
||||
</li>
|
||||
<?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>
|
||||
<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 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>
|
||||
|
||||
@@ -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
0
scripts/generate-env.php
Normal file → Executable file
Reference in New Issue
Block a user