Jump to content

Comment rendre sa boutique privée


Recommended Posts

bonjour,

Je souhaiterais savoir comment je peux mettre ma boutique en privé et donner l'accés qu'à ceux qui ont les codes.

Type:

<?php

/* SSL Management */
$useSSL = true;

include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');

if (!$cookie->isLogged())
   Tools::redirect('authentication.php?back=my-account.php');

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

$smarty->assign(array(
   'voucherAllowed' => intval(Configuration::get('PS_VOUCHERS')),
   'returnAllowed' => intval(Configuration::get('PS_ORDER_RETURN')),
   'HOOK_CUSTOMER_ACCOUNT' => Module::hookExec('customerAccount')));

$smarty->display(_PS_THEME_DIR_.'my-account.tpl');

include(dirname(__FILE__).'/footer.php');
?>



Est ce suffisant ??

Merci

Link to comment
Share on other sites

Bonjour,

Prestashop peut'il s'adapter à une problématique de site privé ?
C'est à dire peut'on avoir en page d'accueil my-account.php afin que les visiteurs s'identifient ou créent un compte ?

Cela peut 'il se faire :
- par paramétrage,
- en créant de nouveaux modules,
- en adaptant certaines parties du code,

ou cela n'est'il pas possible avec PRESTASHOP ?

Merci de vos réponses

Link to comment
Share on other sites

Il me semble que Smartieskiller avait mis en place cette fonctionnalité pour sa boutique mais c'était peut-être pour une version plus ancienne, donc pas forcément compatible.

Essayez de chercher ici (recherche avancée par auteur) et sur PSFrance.org.

Link to comment
Share on other sites

Bon personne à une réponse !
J'ai recherché les post de SmartiesKiller pas trouvé celui qui pourrait répondre à mon pb.

La solution mise ne place à l'heure actuelle ne fct pas réellement car si on connait l'url produit on arrive direct sur la page.

Quelqu'un connaîtrait une sol viable car le htpasswd ne me permet pas de garder les codes prestashop

merci

Link to comment
Share on other sites

Bonjour,

Je suis d'accord avec 7778, aprés s'être fait conseillé plus de recherche et aprés les avoirs effectuées, le constat est qu'il y a pas mal de littérature sans "capitalisation" du savoir faire sur de tel sujets, donc pas de réponse clair.

Link to comment
Share on other sites

bon vu que personne ne te reponds :



<html >
<head>
<title>Vente Privee</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css" media="screen">
@import url(niceforms-default.css);body {
margin-left: 500px;
margin-top: 200px;
margin-right: 200px;
margin-bottom: 150px;
}

</style>
</head>
<?php
$cookie = 'H4zOLjvwDj1Kn4ZwkQ7MXoTSnyeMxs1OBG3fPbZ6nfcEHQVS1.HsRdDq';
$hostname_db = "localhost"; // nom ou ip de votre serveur
$database_db = "prestashop"; // nom de votre base de données
$username_db = "root"; // nom d'utilisateur (root par défaut) !!! ATTENTION, en utilisant root, vos visiteurs on tout les droits sur la base
$password_db = ""; // mot de passe (aucun par défaut mais il est fortement recommandé d'en mettre un ... sinon, à quoi bon la sécurité ?)
$db = mysql_pconnect($hostname_db, $username_db, $password_db) or trigger_error(mysql_error(),E_USER_ERROR);
/*
--------------------------------------------
--------- Prestashop en Private ----------
---- By SmartiesKiller For Prestashop ----
--------------------------------------------
*/
// On démarre la session
session_start();
$loginOK = false; // cf Astuce


// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['email'])) && (!empty($_POST['passwd'])) ) {

// if (isset($_POST['email'])){ // execution uniquement apres envoi du formulaire (test si la variable POST existe)
$email = $_POST['email']; // mise en variable du nom d'utilisateur
$passwd = md5 ($cookie.$passwd);


// requete sur la table administrateurs (on récupère les infos de la personne)
mysql_select_db($database_db, $db);
$verif_query=sprintf("SELECT * FROM presta_customer WHERE email='$email' AND passwd='$passwd'"); // requête sur la base customer
$verif = mysql_query($verif_query, $db) or die(mysql_error());
$utilisateur = mysql_num_rows($verif);


if ($utilisateur) { // On test s'il y a un utilisateur correspondant
$loginOK = true;
session_register("authentification"); // enregistrement de la session

// déclaration des variables de session
$_SESSION['email'] = $data['email'];

header("Location:index.php"); // redirection si OK

// On écrase le tableau de session
$_SESSION = array();

// On détruit la session
session_destroy();
}
else {
// On écrase le tableau de session
$_SESSION = array();

// On détruit la session
session_destroy();
header("Location:index.php?erreur=email"); // redirection si utilisateur non reconnu
}
}

?>
<body>




<form action="" method="post" name="post">


<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "email")) { // Affiche l'erreur ?>
Echec d'authentification !!! > login ou mot de passe incorrect
<?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur ?>
Déconnexion réussie... A bientôt <?php echo $_GET['prenom'];?> !
<?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur ?>
Echec d'authentification !!! > Aucune session n'est ouverte ou vous n'avez pas les droits pour afficher cette page
<?php } ?>



Email : 
<input name="email" type="text" id="email"></td>
Mot de Passe : 
<input name="passwd" type="password" id="passwd"></td>

<input type="submit" name="Submit" value="Se connecter">

</form>


Mot De Passe Oublie ??









</body>
</html>


et dans index.php rajouter :

// On appelle la session
session_start(); // j'ai juste rajouter la session



Voila a toi de voir
Link to comment
Share on other sites

  • 5 months later...

bonjour,

Après avoir abandonné l'idée de la boutique privée pendant qques mois, je reviens vers vous pour comprendre le script donné par topus

Existe-t -il actuellement un module ou un hack qui marche permettant de rendre sa boutique privée
J'ai bien trouvé ça qui à l'air sympa mais ça ne fonction : http://todoprestashop.com/foro/viewtopic.php?f=17&t=1940

Merci d'avance

Link to comment
Share on other sites

Ca y est !!!!!!!!!!!!!!!!!!!!!!!!!!

Je pense avoir trouvé une solution viable pour créer une boutique Privé.

La solution était sur le forum espagnol : http://todoprestashop.com/foro/viewtopic.php?f=17&t=1940
J'y ai apporté mon grain de sel en corrigeant certains bugs et en y ajoutant un fichier css.

Dans la bdd / table ps_configuration, ajouter y une requête SQL, nom "PS_SHOP_PRIVATE" value "1"


Le hack est téléchargeable ici
Link to comment
Share on other sites

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

suis curieux de savoir si le problème à été résolu et si quelqu'un a réussi à rendre privée une partie du site ou tout le site. J'aurais besoin en effet d'avoir comme un deuxième accès à une partie privée uniquement réservée à un groupe d'utilisateurs...sais pas si cest la bonne voie par ici :) merci

Link to comment
Share on other sites

  • 2 months later...

Hello,
J'ai réussi à rendre ma boutique privée avec ce topic http://todoprestashop.com/foro/viewtopic.php?f=17&t=1940

Cependant, différents points à tenir en compte
1 - Le module n'est pas auto installable.
a) Il vous faut uploader le bon répertoire dans le répertoire des modules (dernier repertoire 'private_shop')
B) Ne cherchez pas à configurer ce modules via votre back office.. (il n'y apparaitra pas)

2 - Il vous faut créer le champ PS_SHOP_PRIVATE avec valeur à 1 dans votre table xxx_configuration (merci PhpMyAdmin)

3 - Le module est livré avec un init.php et un header.php .... pour remplacer ceux qui sont à la racine de votre boutique.

4 - Dans mon cas, j'avais de nombreuses erreurs d'url après install.... c'est le fichier init.php qui n'était pas correct pour moi... essayé avec celui-ci qui est en pièce jointe. (n'oubliez pas les sauvegardes de vos fichiers)

Bonne chance !!!!

init.php

Link to comment
Share on other sites

  • 1 month later...

Bonjour à tous,

pour ma part j'ai mis en place une protection de mon site avec un htaccess / htpasswd, tout marche bien à part un détail : la validation des commandes réglées avec Paypal : le paiement est ok, mais la commande n'est pas validée dans la boutique.
Pensez-vous qu'il y ait un moyen que cela fonctionne, ou est-ce peine perdue avec ce système de protection par mot de passe ?

Merci d'avance !

Alexis

Link to comment
Share on other sites

Bonjour Pierre,

merci pour ta réponse. J'ai testé ta méthode en simulant une commande, la redirection contenant "http://USERNAME:PWD" était correcte, mais une fois retourné sur mon site (à la page history) ma commande ne figurait pas dans la liste et le panier était toujours plein...

J'ai vu dans d'autres topics que certains ont le même problème sans cette histoire de "zone protégée", mais mon site fonctionnait très bien jusque là.
Je vais tester une désinstallation/réinstallation de paypal, sait-on jamais, puisque en fait je fonctionne là avec une recopie du site dans un sous domaine, peut-être qu'un petit détail sera arrangé avec cette manoeuvre.

D'autres idées ? :)
Sinon je commence à me demander si il ne va pas falloir m'orienter vers une autre solution avec un script php par exemple..

Link to comment
Share on other sites

Je viens de faire cela hier à partir de ce post

J'ai modifié un peu le init.php pour que le critère soit isMemberOfGroup(1) car 1 est le groupe par défaut et que je n'ai pas besoin d'un validate.php (je crée mes comptes via un ERP maison)

if (isset($_GET['logout']) OR ($cookie->logged AND Customer::isBanned(intval($cookie->id_customer))))
{
   $cookie->logout();
   // DEBUT MODIF //
   // Tools::redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL);
   Tools::redirect('authentication.php');
   // FIN MODIF //
}
elseif (isset($_GET['mylogout']))
{
    $cookie->mylogout();
   // DEBUT MODIF //
   // Tools::redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL);
   Tools::redirect('authentication.php');
   // FIN MODIF //
}


// DEBUT AJOUT //
if ($cookie->logged)
{
       $customer = new Customer($cookie->id_customer);

   if (!$customer->isMemberOfGroup(1) AND $page_name != 'my-account' AND ($page_name != 'index' OR ($page_name == 'index' AND $_SERVER['QUERY_STRING'] != 'mylogout')))
       Tools::redirect('my-account.php');
}
else if ($page_name != 'authentication' AND $page_name != 'password' AND $page_name != 'my-account')
   Tools::redirect('authentication.php');
// FIN AJOUT //



Pour l'instant je redirige vers 'my-account.php' mais je voudrais arriver sur la page d'accueil. J'ai essayé avec 'index.php' mais ça marche pas. SI quelqu'un a la solution je suis preneur.

J'ai aussi modifié le footer.tpl par rapport à ce qui était proposé car je voulais aussi masquer le pied de page, pas seulement la colonne de droite

{if !$content_only}


           {* MODIFS VetoPartner *}
           {if $page_name != 'authentication' AND $page_name != 'password'}


           <!-- Right -->

               {$HOOK_RIGHT_COLUMN}




           <!-- Footer -->
{$HOOK_FOOTER}


           {/if}

   {/if}
   </body>
</html>



pour le header, j'ai fait un peu différement car je souhaite garder le logo de la boutique (pour l'instant ?) mais ne pas afficher le module userinfo (login, compte, panier...)
j'ai juste rajouté dans blockuserinfo.tpl

{if $logged != '' } // à mettre au début 
{/if} // à mettre à la fin


Bien sur si affichage de la devise ou autre module dans le header, la chose doit être recommencée.

En espérant que ça puisse t'aider.
Bien sûr si vous savez comment rediriger vers la page d'accueil merci de me le dire.

Tibo

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