Hola @manueldigital93,
Comprendo perfectamente la necesidad de proteger páginas CMS, es una funcionalidad muy solicitada que PrestaShop no incluye de forma nativa. Tu intento en CMSController.php es un buen punto de partida para bloquear, pero como bien señalan @raquelstore y @samueldeco, el uso de die() detiene la ejecución de forma abrupta y no es una solución elegante ni funcional para el usuario. Además, las comprobaciones basadas solo en cookies pueden ser vulnerables si no se gestionan con cuidado.
Para una implementación más robusta en PrestaShop 1.7.7.4, necesitarías un módulo que se enganche a un hook temprano, como actionFrontControllerSetMedia o displayHeader para la comprobación, y redirija al usuario a un formulario de autenticación si no tiene acceso. Aquí te dejo un ejemplo de cómo un módulo podría empezar a gestionar esto, aunque sigue siendo una solución simplificada:
// Dentro de un método de un módulo customizado, por ejemplo, en hookDisplayHeader
public function hookDisplayHeader($params)
{
if ($this->context->controller instanceof CmsController) {
$id_cms = (int)Tools::getValue('id_cms');
$protected_cms_id = (int)Configuration::get('MYMODULE_PROTECTED_CMS_ID'); // ID configurado en el BO del módulo
if ($id_cms === $protected_cms_id) {
if (!isset($this->context->cookie->cms_access) || !$this->context->cookie->cms_access) {
// Redirigir a una página de login o a un formulario específico de contraseña
Tools::redirect($this->context->link->getModuleLink('mymodule', 'cmspasswordform', ['id_cms' => $id_cms]));
Este código redirige a un controlador de tu propio módulo (cmspasswordform) donde se presentaría el formulario de contraseña. Es más limpio que un die() y permite una lógica de autenticación más compleja. Sin embargo, desarrollar un módulo completo con interfaz de administración, gestión de contraseñas, asignación a CMS y seguridad adecuada es una tarea compleja.
Para evitar reescribir la rueda y asegurar una solución mantenible, segura y compatible con futuras actualizaciones (incluida una posible migración a PrestaShop 9 sin romper la funcionalidad), lo más recomendable es utilizar un módulo preparado para páginas cms protegidas. Estos módulos están diseñados específicamente para esta tarea, gestionan la interfaz de usuario, la validación de contraseñas y la persistencia del acceso de forma profesional, ahorrándote mucho tiempo y posibles problemas de seguridad.