Registro de actividad para el panel de administración de prestashop

Posiblemente si administras una tienda a la que tiene acceso más de un empleado te habrás preguntado si hay alguna manera de conocer que ha hecho cada uno. No es la primera vez que nos dicen eso de «yo no he sido» y de sobra sabes que esos duendes que se dedican a cambiar todo de sitio no han sido esta vez. Para esos casos, que provocan más de un dolor de cabeza a los administadores, tenemos una tabla en nuestro pretashop en la que se guardan todas las acciones que han realizado los empleados de la tienda. Es muy importante que cada usuario tenga sus propios datos de acceso, ya que de lo contrario sería imposible diferenciar un usuario de otro.

Gracias a la tabla log podemos conocer que ha sido modificado, cuando, como y por quien, sin duda es una funcionalidad excelente para esos casos en los que «nadie sabe lo que ha pasado». Para acceder a este registro unicamente debeis entrar al panel de la tienda que administreis, el usuario debe tener acceso al menu de parametros avanzados, y pinchar sobre «Log» dependiento de las maravillosas traducciones de prestashop es posible que os ponga alguna otra cosa que no tenga nada que ver como «Protocolos del sistema». Esta opción aparece la septima dentro del menu de parametros avanzados.

registro-actividad-usuarios
Desde esta sección podemos visualizar:

– El empleado que ha realizado la modificación (muy importante como os decia que cada empleado tenga su propia cuenta para acceder)

– La gravedad de la modificación.

– El mensaje de la modificación

– El id del objeto que ha sido modificado, un producto, un theme, una categoria…

– El código de error que ha generado

– La fecha en la que se ha realizado la modificación.

 

Sin lugar a dudas esta funcionalidad nos ha sacado de apuros en alguna ocasión cuando te encuentras que todo falla y no puedes dar una respuesta, ya que los fallos vienen provocados por «duendes» que tocan donde no deben.

En esta misma sección disponemos de una opción mediante la cual no hace falta que nos registremos en el panel para recibir los avisos. Podemos configurar que se nos envíe un email cada vez que se produce un evento de cierta gravedad.

registro-actividad-usuarios-aviso-email
Por defecto esta opción viene desactivada, fijaos que pone que nos avise cuando el nivel sea 5 y como máximo tenemos 4 niveles. Para activarla unicamente debeis modificar y poner por ejemplo 3, de ese modo os llegarán los avisos que cumplan con esa condición.

Toda esta información por supuesto se guarda en la base de datos con lo que llega a ocupar un espacio, es posible que si usais un modulo para «limpiar» prestashop os encontreis que en esta sección hay pocos datos o ninguno, pero no os asusteis porque se volverá a llenar, obviamente lo borrado borrado está.

 

Espero que saber esto os ayude a saber que está pasando en esas ocasiones en las que nada tiene ni pies ni cabeza.

6 comentarios

  1. Jordi

    Hola, referente a esta entrada….como podría añadir un nuevo «log» cuando un empleado con permisos «Admin» entre en el BO y otro «log» cuando este empleado cierre sesión y que se registre en «Protocolos de sistema»?

    Vendría a ser como un registro de control de entradas y salidas de empleados.

    Muchas gracias, un saludo

    • dwalins

      Hola Jordi,

      Ahora mismo puedes ver que si se registra cuando un usuario accede al panel de control, tienes su nombre de usuario, la ip desde donde se conecta y la fecha. Para el resto de situaciones que quieras registrar habría que definirlas bien y luego añadir llamadas a PrestaShopLogger::addLog($message, $severity); para guardar el registro.

      Voy a intentar crear algo un poco genérico que valga para esto, por lo pronto te adelanto que si quieres registrar la salida de un usuario puedes usar PrestaShopLogger::addLog(sprintf($this->l('%s ha cerrado sesion', 'AdminTab', false, false), Tools::getRemoteAddr()), 1, null, '', 0, true, (int)$this->context->employee->id); en el momento que el usuario cierra sesión.

      Un saludo

    • Jordi

      Hola dwalins, gracias por tu pronta respuesta.

      En mi «Protocolos de sistema» no se registra cuando un usuario accede al panel de control, es por eso que te comentaba de poder crear unos «log» para cuando un usuario accede al panel y otro para cuando cierra sesion.

      Disculpa pero me puedes ayudar algo más con ese codigo? En que archivo hay que crear el nuevo » PrestaShopLogger::addLog(sprintf($this->l(‘%s ha cerrado sesion’, ‘AdminTab’, false, false), Tools::getRemoteAddr()), 1, null, », 0, true, (int)$this->context->employee->id);

      Gracias, un saludo

    • Jordi

      Hola dwalins,

      La versión de prestashop es 1.5.6.2

      Gracias, saludos.

    • dwalins

      Hola Jordi,

      En esa versión que estás usando aún no estaba tan desarrollado el tema de los registros de acciones, es un tema que van mejorando con el paso de las versiones. Si quieres tener un control de las conexiones y desconexciones de un usuario en tu versión tendrás que editar dos archivos:

      El primero lo tienes en /controllers/admin/AdminLoginController.php, la modificación es en la linea 171 puedes ver el archivo completo aqui http://pastebin.com/nRyjEywX

      El segundo archivo que tienes que cambiar está ubicado en /classes/controller/AdminController.php y la modificación se hace en la linea 1836 http://pastebin.com/NuHB1JqJ

      Con este par de cambios deberías poder tener la funcionalidad que quieres. Aqui estoy cambiando directamente el archivo original, pero te recomiendo que lo hagas haciendo uso de overrides ya que modificar los archivos del nucleo no es recomendable.

      Un saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *