Jump to content

Modifier la page authentication pour boutique privée


Recommended Posts

Bonjour,

J'utilise depuis peu prestashop. J'étais auparavant habitué à os commerce.

Mon projet actuel est de créer, à partir de prestashop, une boutique de vente privée.

ça fonctionne à présent sans problème hormis que pour l'authentification j'ai réutilisé le template authentication.tpl et je l'ai renommé en private_authentication.tpl. Hélas en la renommant la traduction en français disparait et je me retrouve avec la version anglaise.

Je supose donc que le fait de la renommer a un inpact sur la traduction mais je n'arrive pas à trouver d'ou celà provient. Je demande donc de l'aide aux expert prestashop. Auriez vous une idée ?

D'avance merci.

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

Je désire rendre ma boutique privée : seul les clients que j'ai entré via le back office doivent y avoir accès (pas de possibilité de nouvelles inscription sur le front office), l'idéal serait que l'on tombe directement sur la page authentication.php (pour ce qui est de la suppression de la partie "Créez votre compte" je saurai faire...)

Newcomer : "ça fonctionne à présent sans problème hormis que pour l’authentification j’ai réutilisé le template authentication.tpl et je l’ai renommé en private_authentication.tpl" un peu plus de précisions de ta part auraient été fortement appréciés !!!

Dans l'attente d'une piste...

Link to comment
Share on other sites

  • 3 weeks later...
  • 3 months later...
  • 2 months later...

j e rencontre aussi le meme probleme, la seul solution que j ai trouvé après recherche c est privateshop qui n est pas fonctionnel pour la v2.
denombreux sujet son ouvert a ce sujet mais aucune solution a vue le jour.
j ai installé le module maintenace & newsletter en home page, comment le modifier pour y faire apparaite les blocs d inscription ?

Link to comment
Share on other sites

Tout dépend de ce que l'on veut faire avec sa boutique?!
Soit cacher les prix et les montrer qu'aux membres inscrits
Soit avoir 2 prix différents par produits (ps 1.2.5.0 le prend en compte)
Sinon c'est empêcher l'inscription automatique des clients pour pas qu'ils voient les prix en suivant. Une autorisation de l'admin est nécessaire.
Je ne sais pas à qui répondre et quoi répondre, donc si vous avez toujours des problèmes d'affichage de prix, contactez-moi.
Bonne continuation.

Link to comment
Share on other sites

Salut sur les pages que tu veux rendre privées il faut rediriger vers la page d'authentification/connexion:

if (!$cookie->isLogged())
   Tools::redirect('authentication.php');



après l'include header.php:

include(dirname(__FILE__).'/header.php');



Normalement ça devrait t'aider ;)

Link to comment
Share on other sites

J'pense pas que utiliser le module maintenance soit une bonne solution parce que ça voudrait dire que ta boutique doit rester en maintenance pour la faire fonctionner (c'est qu'un avis).
avec les codes que je t'ai passé tu as juste à les mettre dans les fichier .tpl respectifs c'est à dire category.tpl pour pas avoir accès aux catégories de la boutique sans connexion etc... (j'avais effectivement oublié de préciser où mettre les lignes de codes ^^)

Link to comment
Share on other sites

"pour pas avoir accès aux catégories de la boutique sans connexion"
je sais pas si j ai tout compris mais ce que je cherche doit permettre d afficher le bloc identification avant d avoir acces à la boutique,
soit sur la forme d un bloc qui vien par dessus la boutique empechant l acces avant identification soit par une page d identification comme sur le lien mis plus haut.

Link to comment
Share on other sites

Dans ce cas voyez dans le fichier index.php à la limite.

Si vous remplacer ça :

<?php  
include(dirname(__FILE__).'/config/config.inc.php');  
if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1)     
   $rewrited_url = __PS_BASE_URI__;  
include(dirname(__FILE__).'/header.php');  
$smarty->assign('HOOK_HOME', Module::hookExec('home')); 
$smarty->display(_PS_THEME_DIR_.'index.tpl');  
include(dirname(__FILE__).'/footer.php');  
?>



Par ça:

<?php  
include(dirname(__FILE__).'/config/config.inc.php');  
if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1)     
   $rewrited_url = __PS_BASE_URI__;  
include(dirname(__FILE__).'/header.php');  
$smarty->assign('HOOK_HOME', Module::hookExec('home')); 
////////////// 
global $cookie; 
if($cookie->isLogged()){     
   $smarty->display(_PS_THEME_DIR_.'index.tpl'); 
} 
else{     
   $smarty->display(_PS_THEME_DIR_.'authentication.tpl'); 
} 
////////////// 
include(dirname(__FILE__).'/footer.php');  ?>



Le client sera alors redirigé vers l'inscription tant qu'il n'est pas connecté sur la boutique!

;-)

Link to comment
Share on other sites

Et bien cela dépend en faite. Chez moi il me semble que l'accès est bloqué sur toute les pages vu que tant que le client n'est pas loggé il sera redirigé vers la page de connexion.
Sinon après si chez toi le client voit toujours les catégories, il faut rajouter une condition au niveau du menu et/ou des blocs pour empêcher l'affichage si client non enregistré.
Voilà, j'espère t'avoir aidé.
Bon courage.

Link to comment
Share on other sites

Et bien cela dépend en faite. Chez moi il me semble que l'accès est bloqué sur toute les pages vu que tant que le client n'est pas loggé il sera redirigé vers la page de connexion.
Sinon après si chez toi le client voit toujours les catégories, il faut rajouter une condition au niveau du menu et/ou des blocs pour empêcher l'affichage si client non enregistré.
Voilà, j'espère t'avoir aidé.
Bon courage.

en fait il à toujours acces au top menu
par contre une foie connecté comment le redirigé vers la home page au lieu du recapitulatif du compte?
Link to comment
Share on other sites

Bon ....
Le plus simple à faire pour ne pas avoir a modifier azmilles pages :

dans init.php ajouter çà à la fin

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php');
}



Voilà. Si vous voulez atterir sur une page en particulier après l'authentification, l'index par exemple :

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=index.php');
}



Pierre.

Link to comment
Share on other sites

Bon ....
Le plus simple à faire pour ne pas avoir a modifier azmilles pages :

dans init.php ajouter çà à la fin

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php');
}



Voilà. Si vous voulez atterir sur une page en particulier après l'authentification, l'index par exemple :

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=index.php');
}



Pierre.


yoya peut tu me donner l script total de ton fichier ini.php car dés que je rentre ton bout de code j ai le site qui ne remarche plus même en rechargeant les fichiers de base
dc j ai peut être merdé dans l intégration du bout de code
merci ;)
Link to comment
Share on other sites

  • 4 weeks later...

Très bon srcipt, parcontre j'ai pas bien compris la fin là!

J'aimerai savoir quelque chose. Une fois que la personne a appuyé sur le bouton s'inscrire ( à la fin du formulaire), comment faire pour qu'elle n'arrive pas sur la page mon compte ou sur la page avec marqué accéder à mon compte, mais plutot sur l'index justement?

merci d'avance!

Link to comment
Share on other sites

Bonjour Arnaud,

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=index.php');
}



Tu peu noter le

back=index.php

où index.php est la page de retour. Si tu veux par exemple revenir sur "ta_page.php" :

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=ta_page.php');
}



A bientot.

Pierre.

Link to comment
Share on other sites

Je suis embétant, mais je sais pas si ça le fait chez vous, quand je clique sur "Mot de passe oublié?" il veut pas me renvoyer sur la page password.php.

Même en rentrant l'adresse manuellement, il me fait ce renvoie.

EDIT: Dailleurs je m'aperçois que les 3 petits liens que j'ai mis sur la page d'autentification me renvoient tous au même endroit. Serai-t'il possible d'intégrer des exceptions?

Link to comment
Share on other sites

Tout dépend de ce que l'on veut faire avec sa boutique?!
Soit cacher les prix et les montrer qu'aux membres inscrits
Soit avoir 2 prix différents par produits (ps 1.2.5.0 le prend en compte)
Sinon c'est empêcher l'inscription automatique des clients pour pas qu'ils voient les prix en suivant. Une autorisation de l'admin est nécessaire.
Je ne sais pas à qui répondre et quoi répondre, donc si vous avez toujours des problèmes d'affichage de prix, contactez-moi.
Bonne continuation.


Bonjour Monsieur Checaman,

Tu indique dans ta réponse "Soit cacher les prix et les montrer qu'aux membres inscrits" ... Et voila ce que je voudrais faire, j'ai fouillé un peu le product.tpl avec cette idée {if $logged} le prix {/if} mais à part un gros fouilli je n'obtiens rien

Si tu as une solution, je suis acheteur <= Normal !

Merci
Link to comment
Share on other sites

bonjour,

j'ai installé le code pour inscription obligatoire du clent sur le init.php et merci, ça marche !

ma question est comment le rendre visible qu'aprés paiement du droit d'inscription, la boutique étant réservée aux grossistes.

merci d'avance

Link to comment
Share on other sites

Bonjour,

En suivant les étapes, j'ai réussi à vérouillé mes catégories en ajouté le script dans catégorie.php. Jusqu'ici tout marche.
Mon problème est quand l'inscription est fait, le client a directement accès aux sites sans le validation du admin de son inscription.
Dans ce cas, est ce qu'il y aurais un moyen de le redirigé sur une autre page. Et qu'il attend l'activation de son compte?

Merci
Erik

Link to comment
Share on other sites

  • 2 weeks later...

Juste une remarque sur cette redirection :

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=ta_page.php');
}



Ca ne fonctionne que sur les pages qui se trouvent à la racine de l'installation.
Pour des pages qui se trouvent dans un module, ca ne fonctionne pas

Un accès, par exemple à
www.monsite.fr/modules/monmodule/information.php,
renvoie vers la page
www.monsite.fr/modules/monmodule/authentication.php?back=lapage.php
Page qui n'existe pas.

Pourquoi ne pas utiliser

Tools::redirect ('authentication.php?back=lapage.php'); 


(Pas sur que ca marche mieux d'ailleurs ;)

Link to comment
Share on other sites

if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=ta_page.php');
} 



Le test redirige toutes les pages vers la page d'authentification.
Pas possible de voir la page "contact", ni "qui sommes nous", ni "password oubliée".....

Il faudrait faire un truc du genre, en listant toutes les pages à laisser passer :

if(!$cookie->logged AND $page_name!='authentication' AND $page_name!='contact' AND $page_name!='password'))
{
   header('Location:./authentication.php?back=ta_page.php');
} 



Pour "Qui sommes nous", je ne sais pas si on peut laisser passer certaisn ID de CMS et pas d'autres

Link to comment
Share on other sites

Pour qui sommes nous, moi j'ai créé une page html. Elle prend le dessus et s'affiche correctement. Il suffit juste de lui attribuer le style css de vos page d'authentification.

Mais sinon c'est vrai que c'est assez embétant de ne pas pouvoir accéder à cette page password car c'est quand même important :)

Link to comment
Share on other sites

le truc marche! J'ai ajouté de cette manière, en inversant l'ordre des pages à afficher.

if(!$cookie->logged AND $page_name!='authentication' AND $page_name!='password')
{
   header('Location:./authentication2.php?back=password.php');
header('Location:./authentication2.php?back=index.php');

}




Merci!

Link to comment
Share on other sites

OH YEAH rRock'N'roll petit patapon!!!!! en effet, il faut donc remplacer dans le fichier init.php (pour ceux qui n'aurait pas suivi depuis le début):


if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php');
}
if(!$cookie->logged AND $page_name!='authentication')
{
   header('Location:./authentication.php?back=index.php');
}




par

if(!$cookie->logged AND $page_name!='authentication' AND $page_name!='password')
{
   header('Location:./authentication.php?back=password.php');
header('Location:./authentication.php?back=index.php');

}

Link to comment
Share on other sites

Bonjour,

Après avoir ajouté dans init.php, effectivement il marche. Mais mon problème est quand le client valide l'inscription, il est directement redirectionné dans la partie connecté. Or ce que je veux c'est pouvoir gérer les inscriptions, c'est à dire je valide à partir du back office ceux que je veux laisser accéder ou ne pas valider ceux que je ne veux pas.

En gros après l'inscription, le client attend un mail de confirmation de l'activation de leur compte avant de pouvoir accéder dans la partie catalogue du site. Sans cela, le client ne peut voir que les infos nous concernant sur le site.

Merci

Link to comment
Share on other sites

Bonjour,

Peut on faire la même chose pour la partie nouveautés, meilleurs vente, promotions?
C'est à dire tant que le client n'est pas connecté, quand il click sur le block nouveautés, il est redirigé vers la page de création de compte et connection?

Merci

Link to comment
Share on other sites

  • 3 weeks later...

Bonsoir,

Je rejoins ce post pour une question qui rejoint celle de la boutique privée.
Si j'ai bien suivi tout le poste, c'est donc dans le fichier init.php qu'il faut insérer la redirection pour un client non loggué.

Dans mon cas, je souhaiterais le renvoyer vers une page où il saisierait son code postal.
Je souhaiterais ensuite conserver cette information pour la rapprocher d'une liste d'états (Zone---> Etats du menu Transporteurs de l'Admin), afin de pouvoir lui proposer des tarifs de livraison adaptée à sa localisation FR...

Est-ce que selon vous, je suis sur la bonne route (j'entend sur l'utilisation de votre code) sauf que j'enverrais vers une page type CMS?id_xx ou geolocalisation.php...

Selon ce que j'ai compris des variables :( pour conserver une info, il est préférable d'opter pour la page php.... Mais ceci est le sujet d'un autre post...

Si qqn pouvait déjà me confirmer pour la première partie (ou m'indiquer une autre marche à suivre).

D'avance, merci.

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous ..
Avec mes peu de connaissances, j'arrive à faire fonctionner l'authentification obligatoire (2 lignes de code dans le init.php).
Seulement je me sens limité pour le "conjuguer" avec le module customerregistration qui, seul, fonctionne bien aussi. En fait, avec les 2 principes activés, on me renvoit à

modules/customerregistration/authentication.php was not found on this server

- Je sais pas qui prend la main sur quoi, j'imagine gentiment qu'il suffirait de renseigner correctement la Location, mais je crains que ce ne soit plus délicat. Une idée ?

Link to comment
Share on other sites

  • 1 year later...
  • 6 months later...
  • 2 months later...
  • 1 month later...

Pour version 1.4 :

Class FrontController.php (dossier classes)

 

Et copier/coller de la modif de code à la Ligne 321 (juste avant le } de fermeture de la fonction init() )

 

if(!$cookie->logged AND $page_name!='authentication' AND $page_name!='password')

{

header('Location:./authentication.php?back=password.php');

header('Location:./authentication.php?back=index.php');

 

}

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

En cherchant sur le forum je suis tombé sur ce sujet qui correspond exactement à ce que je cherche à faire!!!

Je suis sous prestashop 1.4.2.5 et lorsque j'ouvre le fichier "Frontcontroller.php"

voici ce que je trouve à la ligne 321 (j'ai rajouté le n° de la ligne dans le code)

 

 

/* Display a maintenance page if shop is closed */

protected function displayMaintenancePage()

{

321 if (!in_array(Tools::getRemoteAddr(), explode(',',

 

Configuration::get('PS_MAINTENANCE_IP')))) {

header('HTTP/1.1 503 temporarily overloaded');

self::$smarty->display(_PS_THEME_DIR_.'maintenance.tpl');

exit;

}

}

 

 

Pas de fonction "init()" ?

Du coup je n'ose pas coller le code à cet endroit. Est ce que quelqu'un sait pourquoi je n'ai pas le même code ?

 

Merci

Rom1

Link to comment
Share on other sites

  • 1 year later...

Bonjour :D

 

je suis tombé sur ce topic en faisant des recherches pour rendre une boutique en ligne private, je vais devoir le faire car j'aurais besoin de créer une multiboutique, la première sera la principale et celle par défaut, par contre il y aura un lien vers la deuxième mais pour la voir on devra se logger dpour qu'elle soit visible. En d'autres termes, elle doit être private mais sachant que je n'ai qu'une seule installation prestashop pour les deux boutiques, comment lui dire qu'il ne sagira que de la deuxième boutique et non la première???

 

Merci :D

Link to comment
Share on other sites

  • 1 year later...

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