requireAuth(); if ($auth->isAdmin()) { header('Location: /admin/index.php'); exit; } $user = $auth->getCurrentUser(); $message = ''; $messageType = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!CSRF::isValidRequest()) { $message = 'Error de validación del formulario'; $messageType = 'danger'; } else { $passwordActual = $_POST['password_actual'] ?? ''; $passwordNueva = $_POST['password_nueva'] ?? ''; $passwordConfirmar = $_POST['password_confirmar'] ?? ''; if (empty($passwordActual) || empty($passwordNueva) || empty($passwordConfirmar)) { $message = 'Todos los campos son obligatorios'; $messageType = 'danger'; } elseif ($passwordNueva !== $passwordConfirmar) { $message = 'Las contraseñas nuevas no coinciden'; $messageType = 'danger'; } elseif (strlen($passwordNueva) < 6) { $message = 'La contraseña debe tener al menos 6 caracteres'; $messageType = 'danger'; } else { $userModel = new User(); $userData = $userModel->getById($user['id']); if ($userData && password_verify($passwordActual, $userData['password'])) { if ($userModel->updatePassword($user['id'], $passwordNueva)) { $message = 'Contraseña actualizada correctamente'; $messageType = 'success'; } else { $message = 'Error al actualizar la contraseña'; $messageType = 'danger'; } } else { $message = 'La contraseña actual es incorrecta'; $messageType = 'danger'; } } } } ?>