Jump to content

Permitir Acceso A Prestashop Solo Desde Una Web


xabikip

Recommended Posts

Buenas,

 

Os planteo una situación que me gustaría poder resolverlo pero no se cual seria la mejor manera.

 

Tengo una web donde he integrado PrestaShop. El PrestaShop solo la uso para ciertas cosas y siempre el acceso sera desde mi web. La web esta en un servidor y PrestaShop en otro, cada uno con su dominio. 

 

La situación es esta: El usuario esta en la web logeado, hace ciertas cosas y una de las opciones es que pueda ver su historial de compra. Entonces le mando a PrestaShop para que pueda ver. Tengo echo que se logee automáticamente en PrestaShop y todo va bien, entra y ve sus pedidos. Pero puede ver el nombre de dominio y en otra pestaña entrar directamente a PrestaShop. Esto ultimo es lo que quiero evitar. De alguna manera quiero que solo pueda entrar si viene desde mi web.

 

He pensado que nada mas arrancar PrestaShop compruebe el $_SERVER["HTTP_REFERER"], y si no es mi web que no le deje entrar. Si es la web, que guarde una cookie y mientras que tenga la cookie pueda navegar por PrestaShop.

 

¿Donde haríais esta comprobación sin tocar el core? Creo que no existe ningún hook al arrancar PrestaShop. Podría ser un override de la clase Dispatcher. ¿Como lo harían ustedes?

 

Se agradecerían opiniones o posibles soluciones.

 

Muchas gracias,

 

 

 

Link to comment
Share on other sites

Buenas,

 

Os planteo una situación que me gustaría poder resolverlo pero no se cual seria la mejor manera.

 

Tengo una web donde he integrado PrestaShop. El PrestaShop solo la uso para ciertas cosas y siempre el acceso sera desde mi web. La web esta en un servidor y PrestaShop en otro, cada uno con su dominio. 

 

La situación es esta: El usuario esta en la web logeado, hace ciertas cosas y una de las opciones es que pueda ver su historial de compra. Entonces le mando a PrestaShop para que pueda ver. Tengo echo que se logee automáticamente en PrestaShop y todo va bien, entra y ve sus pedidos. Pero puede ver el nombre de dominio y en otra pestaña entrar directamente a PrestaShop. Esto ultimo es lo que quiero evitar. De alguna manera quiero que solo pueda entrar si viene desde mi web.

 

He pensado que nada mas arrancar PrestaShop compruebe el $_SERVER["HTTP_REFERER"], y si no es mi web que no le deje entrar. Si es la web, que guarde una cookie y mientras que tenga la cookie pueda navegar por PrestaShop.

 

¿Donde haríais esta comprobación sin tocar el core? Creo que no existe ningún hook al arrancar PrestaShop. Podría ser un override de la clase Dispatcher. ¿Como lo harían ustedes?

 

Se agradecerían opiniones o posibles soluciones.

 

Muchas gracias,

 

Si no quieres hacer override puedes utilizar el hook actionDispatcher o incluso el displayHeader, según la acción que quieras hacer.

  • Like 1
Link to comment
Share on other sites

Gracias Josean,

 

He probado a hacer un override del Dispatcher y hacer la comprobación en la función dispatch, pero claro entonces tampoco me deja entrar al back-office si no es desde mi web. ¿Se te ocurre como podría hacer la validación solo para el front?

Link to comment
Share on other sites

Gracias Josean,

 

He probado a hacer un override del Dispatcher y hacer la comprobación en la función dispatch, pero claro entonces tampoco me deja entrar al back-office si no es desde mi web. ¿Se te ocurre como podría hacer la validación solo para el front?

 

Revisa si puedes comprobar si el controller es de FRONT, de ADMIN o de MODULE. En la clase Dispatcher tienes unas constantes:

const FC_FRONT = 1;
const FC_ADMIN = 2;
const FC_MODULE = 3;

que se le asignan en el constructor:

if (defined('_PS_ADMIN_DIR_')) {
    $this->front_controller = self::FC_ADMIN;
    $this->controller_not_found = 'adminnotfound';
} elseif (Tools::getValue('fc') == 'module') {
    $this->front_controller = self::FC_MODULE;
    $this->controller_not_found = 'pagenotfound';
} else {
    $this->front_controller = self::FC_FRONT;
    $this->controller_not_found = 'pagenotfound';
}
Link to comment
Share on other sites

Yo lo haría mas sencillo, colocaría la web en mantenimiento y solo habilitada para la IP que quieras (la de tu servidor), con esto, podrías acceder al panel de administración y en la web pública solo desde tu servidor sin necesidad de hacer ningún override.

 

Pues no se me había ocurrido esta opción, es buena idea. La única pega que le veo es que si un usuario entra directamente a PrestaShop veria la pantalla de mantenimiento y esto no me agrada mucho. De todos probare y le dare mas vueltas a ver si se me ocurre algo mas. Gracias por la idea.

Link to comment
Share on other sites

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...