Jump to content

[Solucionado] Utilizar archivo tpl para comprobar si el usuario esta logueado


flash2022

Recommended Posts

Hola a todos,

He estado mirando como poner una comprobación para saber si el usuario que entre en la tienda esta o no logueado y si es que no lo mande a la página de login, he encontrado esta funcion para insertar en un archivo tpl pero no se en que archivo debo ponerlo.

{if $logged}
    Logueado
{else}
    No Logueado
{/if}

Muchas gracias,

Xavi

 

Link to comment
Share on other sites

Hola Flash,

con respecto a tu pregunta, dos detalles:

1) Si tu versión de Prestashop es la 1.7 o superior, esa variable global no te sirve. Debes utilizar $customer.is_logged

2) Posicionar el código depende de lo que quieras hacer con la comprobación. Si se trata de redirigir al usuario automáticamente si no está loggeado debe situarse antes de que se carguen las cabeceras (headers) en la respuesta http, o bien en cualquier sitio siempre que uses un javascript para realizar la redirección.

De modo que tu mejor opción podría ser insertarlo en la parte superior de head.tpl (Directorio /templates/_partials/ de su theme) en caso de que lo tengas. Del mismo modo te digo que si lo haces por template, lo más sencillo va a ser que crees un pequeño javascript que haga una redirección, utilizando la variable javascript 'prestashop.urls.authentication' para conseguir la URL de la página de login.

 

Link to comment
Share on other sites

Hola Luis C,

Gracias por tu respuesta, si estoy utilizando una version superior, en concreto 1.7.8.2 , tomo nota de lo que me indicas.

Lo que quiero es poder reenviar a la pagina de login si alguien va directamente a ver algun producto o porque entre con una dirección que le haya quedado en el historial del navegador, sino está logueado le envie a la pagina de login para poder controlar quien accede a la tienda.

Miraré lo del head.tpl a ver si me funciona.

 

Gracias y saludos,

Xavi

 

 

Link to comment
Share on other sites

Hola de nuevo:

Si elaboras un poquito más quizás podamos llegar a un punto más concreto. ¿Quieres que CUALQUIER usuario que llegue a la web sea redireccionado al login si no tiene cuenta? o en realidad quieres que sean redireccionados aquellos que lleguen a una página o controlador específico? (por ejemplo, a la página de detalle de producto)

Link to comment
Share on other sites

Hola Luis C,

¿Quieres que CUALQUIER usuario que llegue a la web sea redireccionado al login si no tiene cuenta?

Actualmente ya tengo en la pagina que si entran en www.mitienda.com , no vean los productos sino que van directamente a la pagina de login, lo que me faltaría es que si alguien te manda a ti un articulo de la pagina ( la url me refiero) , que compruebe si está logueado y sino le mande a la pagina de login.

No se si me he explicado bien...

Gracias de nuevo,

Xavi

 

 

Link to comment
Share on other sites

hace 1 minuto, flash2022 dijo:

Hola Luis C,

¿Quieres que CUALQUIER usuario que llegue a la web sea redireccionado al login si no tiene cuenta?

Actualmente ya tengo en la pagina que si entran en www.mitienda.com , no vean los productos sino que van directamente a la pagina de login, lo que me faltaría es que si alguien te manda a ti un articulo de la pagina ( la url me refiero) , que compruebe si está logueado y sino le mande a la pagina de login.

No se si me he explicado bien...

Gracias de nuevo,

Xavi

 

 

Un ejemplo que he encontrado, si alguien te envia este link

https://www.xxxxxx.es/aceites-vegetales/2356-aceite-de-abisinia.html

lo mande sino está logueado a login

 

Link to comment
Share on other sites

hace 14 horas, luishuaymana dijo:

Cree una consulta en su frontcontroller.php. o edite un override.
classes/controllers/frontController.php

Gracias por tu respuesta, sería en la parte del init??

 

 public function init()
    {
        Hook::exec(
            'actionFrontControllerInitBefore',
            [
                'controller' => $this,
            ]
        );

        /*
         * Globals are DEPRECATED as of version 1.5.0.1
         * Use the Context object to access objects instead.
         * Example: $this->context->cart

 Aqui??

Saludos

Link to comment
Share on other sites

Hola de nuevo,

Buscando encontré esta solucion:

Buscar la function:

        public function init()

Agregar el siguiente código después de:

           parent::init(); 

           if (!$this->context->customer->isLogged() && $this->php_self != 'authentication' && $this->php_self != 'password')

           Tools::redirect('index.php?controller=authentication?back=my-account');

 

Esto funciona perfecto, lo unico que al loguearse se queda en el menu del usuario y no vuelve al producto que el usuario buscaba, es decir si el usuario encontraba este link:

http://localhost/sercot/men/1-1-hummingbird-printed-t-shirt.html#/1-tamano-s/8-color-blanco

despues de loguearse lo envia al my-account y me gustaria saber si es posible que despues del login vuelva a ese producto.

Muchas gracias,

Xavi

Link to comment
Share on other sites

Hola Flash.  el enlace de autenticación tiene una variable GET que se llama "back". Esa es la que redirige en este caso a my-account. En el controlador necesitas cambiar "my-account" por la URL actual, por ejemplo:

 

Tools::redirect('index.php?controller=authentication&back='.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]);

 

 

Link to comment
Share on other sites

  • flash2022 changed the title to [Solucionado] Utilizar archivo tpl para comprobar si el usuario esta logueado

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...