SmythSys IT Consulting

Error de Acceso Denegado en Prestashop 1.7. Solución.

Si has actualizado tu Prestashop desde la versión 1.6 a la 1.7, uno de los errores más comunes (mucho) es que, al entrar en alguno (muchos o pocos) de los menús del backend te de un error de “Acceso Denegado”. Hemos hecho varias actualizaciones entre dichas versiones y este error ha ocurrido casi siempre. No está bien conseguida la migración de permisos.

Las primeras veces que nos ocurrió nos volvimos locos. Pero hoy os dejamos las soluciones. Una vez lo comprendes, es sencillo.
Estamos suponiendo que estás intentando acceder con SuperAdministrador, y no con un usuario con menos privilegios (que puede que no tenga permisos porque se los haya quitado el admin).

Nota: vas a necesitar acceso gestionar la base de datos o por el panel, o instalando un PhpMyAdmin o similar.

Cómo solucionar el problema de Acceso Denegado en un Prestashop 1.7

Lo primero es entender que las tablas en Prestashop que gestionan los permisos son (los prefijos pueden cambiar en tu instalación, pongo los de por defecto):

  • pss_access. Este es una tabla con dos campos numéricos. El id_profile y el id_authorization_role. El primero es el id del rol de usuario. El segundo el id del permiso que se está considerando.



    Puedes comprobar el id_profile de tu usuario en la tabla pss_employee pero el del SuperAdmin (el que normalmente tienes para la gestión de la tienda) es 1.
  • pss_authorization_role: Esta tiene también dos campos, id_authorization_role y slug. El id_authorization_role es el id del permiso, como en la tabla anterior, y es numérico. El slug es el nombre de dicho permiso (así nos enteramos).

Básicamente vamos a tener dos casos:

a) Que nos fallen muchas páginas del backend.

Entonces lo primero que debemos hacer es conseguir exportar, desde PhpMyAdmin las tablas anteriores, pss_access y pss_authorization_role de una instalación nueva de Prestashop 1.7. Esto es lo más difícil de conseguir. Nosotros lo que solemos hacer es usar una máquina virtual (siempre tenemos de prueba en nuestros equipos) o un WAMPP, y hacer una instalación rápida. Desde ahí exportamos las tablas.

Después, también desde el PhpMyAdmin, vamos a:

– Exportar toda la base de datos para hacer una copia de seguridad (nunca está de más).
– Borrar las tablas pss_access y pss_authorization_role que nos estaban dando error.
– Importar las que hemos conseguido de la instalación limpia de 1.7

Si haces esto, verás que ya tendrás acceso a la mayoría de las páginas a las que antes no tenías.
Puede que ya lo tengas. Si te falla alguna más en concreto (puede pasar), sigue los pasos del apartado b).

b) Que nos fallen sólo algunas páginas del backend.

Entonces merece cambiar los permisos a mano. Para eso lo primero que tenemos que saber es qué permiso es el que nos falla. Después tenemos que mirar su id, y luego añadir el id de administrador junto a su id a la tabla de pss_access.
Es decir:

  • Vamos a mirar la url de la página que nos da error. será algo como :
    https://tudominio.es/directorioadmin/index.php?controller=AdminPsThemeCustoConfiguration&token=xxxxxxxxxxxxxxxxxxxxxx
    En negrita te he puesto dónde aparece el nombre del controlador (permiso) que tenemos que buscar.
  • Nos vamos a la tabla pss_authorization_role y en el apartado slug buscamos cuál contiene ese nombre que hemos puesto en negrita. Te recomiendo que busques con la opción LIKE %….%. Verás que hay varios (leer, editar, guardar). Puede que sólo te de error uno o varios. Es seguir el mismo proceso.
  • Miramos el id_authorization_role que corresponde a este slug. Lo apuntamos (para nuestro ejemplo 618 que corresponde a ROLE_MOD_TAB_ADMINPSTHEMECUSTOADVANCED_READ) .
  • Vamos a la tabla pss_access y añadimos un nuevo valor. En id_profile el 1 (admin) y en id_authorization_role el id del slug que hemos conseguido antes.
    Por ejemplo:
    INSERT INTO pss_access (id_profile, id_authorization_role) VALUES ('1', '618');
  • Puede que de un error de valor duplicado, no hagas caso, si buscas sólo habrá 1.
  • Ahora comprueba la página que te daba error, deberías poder acceder bien.
  • Haz esto con todas las que fallen.

Con esto ya deberías tener este error tan molesto solucionado.

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).