Jump to content

Restreindre l'accès au site si le client n'est pas connecté [Résolu]


Recommended Posts

Il existe un module vente privé

sur l'addons.prestashop.com qui restreint l'accès à votre boutique

sinon , un autre module existe (je n'ai plus le nom mais c'est un free) pour restreindre les catégories , pour tells ou tells clients et biensur si celui ci est connecté ou non aura un aperçu différent en fonction de cela.

 

Cordialement

Link to comment
Share on other sites

Bonjour Poox,

 

Regarde du coté de la classe FrontController, toutes les autres classes controller se basent sur cette classe.

 

 

Bonjour elkastor, que faut'il faire avec la classe FrontController ? Si tu pourrai m'expliquer un peu plus en details stp, je t'en serai reconnaissant.

 

Cordialement

Link to comment
Share on other sites

J'ai remplacé ça :

if ($this->auth AND !$cookie->isLogged($this->guestAllowed))
  Tools::redirect('authentication.php'.($this->authRedirection ? '?back='.$this->authRedirection : ''));

 

par ça :

// si utilisateur pas connecté alors restriction d'acces au site.
 if (!$cookie->isLogged() AND !Tools::isSubmit('ajax'))
  Tools::redirect('my-account.php');
 // if ($this->auth AND !$cookie->isLogged($this->guestAllowed))
  // Tools::redirect('authentication.php'.($this->authRedirection ? '?back='.$this->authRedirection : ''));

 

mais j'obtiens un message d'erreur :

Cette page Web présente une boucle de redirection.
La page Web à l'adresse http://localhost/Codep_EDM/authentication.php a déclenché trop de redirections. Pour résoudre le problème, effacez les cookies de ce site ou autorisez les cookies tiers. Si le problème persiste, il peut être dû à une mauvaise configuration du serveur et n'être aucunement lié à votre ordinateur.

Link to comment
Share on other sites

Essaies de surcharger la fonction displayContent() :

 

 

public function displayContent()
{
Tools::safePostVars();
self::$smarty->assign('errors', $this->errors);
if ( $this->auth AND !$cookie->isLogged($this->guestAllowed))
 self::$smarty->display(_PS_THEME_DIR_.'ton_template.tpl);
}

 

et dans le fichier ton_template.tpl tu indiques "Vous n'êtes pas autorisé.... veuillez vous connecter..."

 

Je n'ai pas essayé, à voir ce que ça donne.

Link to comment
Share on other sites

Bonjour, j'ai toujours un problème, avec les modifications que vous avez indiquées.

Message d'erreur :

Cette page Web présente une boucle de redirection.
La page Web à l'adresse http://localhost/Codep_EDM/my-account.php a déclenché trop de redirections. Pour résoudre le problème, effacez les cookies de ce site ou autorisez les cookies tiers. Si le problème persiste, il peut être dû à une mauvaise configuration du serveur et n'être aucunement lié à votre ordinateur.

 

En ayant remplacé le code :

//test
// public function displayContent()
// {
 // Tools::safePostVars();
 // self::$smarty->assign('errors', $this->errors);
// }

//test
public function displayContent()
{
Tools::safePostVars();
self::$smarty->assign('errors', $this->errors);
if ( $this->auth AND !$cookie->isLogged($this->guestAllowed))
   self::$smarty->display(_PS_THEME_DIR_.'authentication.tpl');
}

 

Un poco d'aide por favor ? :mellow:

Link to comment
Share on other sites

Bonjour,

 

Essaies de modifier le controller qui gère la page pour laquelle tu souhaites restreindre l'affichage :

 

exemple, pour restreindre l’affichage des catégories, tu surcharges le controller CategoryController.php :

 

le code initial est :

 

public function displayContent()
{
 parent::displayContent();
 self::$smarty->display(_PS_THEME_DIR_.'category.tpl');
}

 

et surcharges avec :

 

public function displayContent()
{
global $cookie;

 parent::displayContent();
if( !$cookie->isLogged())
  self::$smarty->display(_PS_THEME_DIR_.'error_authentication.tpl');
else
  self::$smarty->display(_PS_THEME_DIR_.'category.tpl');
}

 

et dans ton fichier error_authentication.tpl tu mets :

 

Vous devez être connecté pour voir cette page.
<a href="{$link->getPageLink('authentication.php')}">Se connecter</a>

  • Like 2
Link to comment
Share on other sites

Bonjour,

 

Essaies de modifier le controller qui gère la page pour laquelle tu souhaites restreindre l'affichage :

 

exemple, pour restreindre l’affichage des catégories, tu surcharges le controller CategoryController.php :

 

le code initial est :

 

public function displayContent()
{
 parent::displayContent();
 self::$smarty->display(_PS_THEME_DIR_.'category.tpl');
}

 

et surcharges avec :

 

public function displayContent()
{
global $cookie;

 parent::displayContent();
if( !$cookie->isLogged())
  self::$smarty->display(_PS_THEME_DIR_.'error_authentication.tpl');
else
  self::$smarty->display(_PS_THEME_DIR_.'category.tpl');
}

 

et dans ton fichier error_authentication.tpl tu mets :

 

Vous devez être connecté pour voir cette page.
<a href="{$link->getPageLink('authentication.php')}">Se connecter</a>

 

 

Bonjour elkastor, ton code est vraiment extra, pour ma part, j'ai juste modifié le nom du fichier sur lequel tu renvois si on n'est pas connecté, j'ai mis "authentification.tpl" parce que celui que tu m'as mis me renvoi une 404.

Je n'ai pas eu besoin de mettre les phrases pour se connecter dans les .tpl

 

En tout cas merci pour tout.

 

Cordialement.

Link to comment
Share on other sites

Bonjour,

 

j'ai juste modifié le nom du fichier sur lequel tu renvois si on n'est pas connecté, j'ai mis "authentification.tpl" parce que celui que tu m'as mis me renvoi une 404.

 

C'est normal, c'est un fichier qu'il fallait créer à part :).

 

En tout cas merci pour tout.

 

De rien c'est un plaisir.

 

A bientôt.

  • Like 2
Link to comment
Share on other sites

  • 1 year later...

Bonjour,

 

Est-il possible de le faire pour le mode multiboutique?

En effet, j'aimerais avoir une partie boutique particuliers et une autre pour les pros.

dans ce cas de figure faudrait restreindre l'accès aux catégories pour les utilisateurs non-authentifiés de coté des pros, mais laisser l'accès de côté des particuliers.

 

Serais reconnaissant pour toute réponse,

Cordialement,

DM

Link to comment
Share on other sites

Bonjour,

 

Est-il possible de le faire pour le mode multiboutique?

En effet, j'aimerais avoir une partie boutique particuliers et une autre pour les pros.

dans ce cas de figure faudrait restreindre l'accès aux catégories pour les utilisateurs non-authentifiés de coté des pros, mais laisser l'accès de côté des particuliers.

 

Serais reconnaissant pour toute réponse,

Cordialement,

DM

Au fait, dans le 1.5 on peut limiter l'accès aux catégories à des groupes de clients

c.a.d. suffit de restreindre l'accès des catégories aux clients authentifiés, et ils ne vont même pas s'afficher.

je cherche maintenant comment laisser les gens créer un compte du côté particuliers et d'interdire la création du compte aux clients pros (pour le faire soi même).

 

Cordialement

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour, j'ai ce code là pour un formulaire et je voudrai le rendre visible une fois le visiteur authentifié seulement: où dois-je placer iflogged etc... ?

 

<?php

 

 

// if the from is loaded from WordPress form loader plugin,

// the phpfmg_display_form() will be called by the loader

if( !defined('FormmailMakerFormLoader') ){

# This block must be placed at the very top of page.

# --------------------------------------------------

require_once( dirname(__FILE__).'/form.lib.php' );

phpfmg_display_form();

# --------------------------------------------------

};

 

 

function phpfmg_form( $sErr = false ){

$style=" class='form_text' ";

 

?>

 

<form name="frmFormMail" action='' method='post' enctype='multipart/form-data' onsubmit='return fmgHandler.onsubmit(this);'>

<input type='hidden' name='formmail_submit' value='Y'>

<div id='err_required' class="form_error" style='display:none;'>

<label class='form_error_title'>Please check the required fields</label>

</div>

 

 

 

<ol class='phpfmg_form' >

 

<li class='field_block' id='field_0_div'><div class='col_label'>

<label class='form_field'>Nom du produit</label> <label class='form_required' >*</label> </div>

<div class='col_field'>

<input type="text" name="field_0" id="field_0" value="<?php phpfmg_hsc("field_0", ""); ?>" class='text_box'>

<div id='field_0_tip' class='instruction'></div>

</div>

</li>

 

<li class='field_block' id='field_1_div'><div class='col_label'>

<label class='form_field'>Taille</label> <label class='form_required' > </label> </div>

<div class='col_field'>

<input type="text" name="field_1" id="field_1" value="<?php phpfmg_hsc("field_1", ""); ?>" class='text_box'>

<div id='field_1_tip' class='instruction'></div>

</div>

</li>

 

<li class='field_block' id='field_2_div'><div class='col_label'>

<label class='form_field'>Photo 1</label> <label class='form_required' >*</label> </div>

<div class='col_field'>

<input type="file" name="field_2" id="field_2" value="" class='text_box' onchange="fmgHandler.check_upload(this);">

<div id='field_2_tip' class='instruction'></div>

</div>

</li>

 

<li class='field_block' id='field_3_div'><div class='col_label'>

<label class='form_field'>Photo 2</label> <label class='form_required' > </label> </div>

<div class='col_field'>

<input type="file" name="field_3" id="field_3" value="" class='text_box' onchange="fmgHandler.check_upload(this);">

<div id='field_3_tip' class='instruction'></div>

</div>

</li>

 

<li class='field_block' id='field_4_div'><div class='col_label'>

<label class='form_field'>Photo 3</label> <label class='form_required' > </label> </div>

<div class='col_field'>

<input type="file" name="field_4" id="field_4" value="" class='text_box' onchange="fmgHandler.check_upload(this);">

<div id='field_4_tip' class='instruction'></div>

</div>

</li>

 

<li class='field_block' id='field_5_div'><div class='col_label'>

<label class='form_field'>Description du produit</label> <label class='form_required' >*</label> </div>

<div class='col_field'>

<textarea name="field_5" id="field_5" rows=4 cols=25 class='text_area'><?php phpfmg_hsc("field_5"); ?></textarea>

 

<div id='field_5_tip' class='instruction'></div>

</div>

</li>

 

 

<li class='field_block' id='phpfmg_captcha_div'>

<div class='col_label'><label class='form_field'>Security Code:</label> <label class='form_required' >*</label> </div><div class='col_field'>

<?php phpfmg_show_captcha(); ?>

</div>

</li>

 

 

<li>

<div class='col_label'> </div>

<div class='form_submit_block col_field'>

 

<input type='submit' value='Submit' class='form_button'>

<span id='phpfmg_processing' style='display:none;'>

<img id='phpfmg_processing_gif' src='<?php echo PHPFMG_ADMIN_URL . '?mod=image&func=processing' ;?>' border=0 alt='Processing...'> <label id='phpfmg_processing_dots'></label>

</span>

</div>

</li>

 

</ol>

 

 

 

 

</form>

 

 

 

 

<?php

 

phpfmg_javascript($sErr);

 

}

# end of form

 

 

 

 

function phpfmg_form_css(){

$formOnly = isset($GLOBALS['formOnly']) && true === $GLOBALS['formOnly'];

?>

<style type='text/css'>

<?php

if( !$formOnly ){

echo"

body{

margin-left: 18px;

margin-top: 18px;

}

 

body{

font-family : Verdana, Arial, Helvetica, sans-serif;

font-size : 13px;

color : #474747;

background-color: transparent;

}

 

select, option{

font-size:13px;

}

";

}; // if

?>

 

ol.phpfmg_form{

list-style-type:none;

padding:0px;

margin:0px;

}

 

ol.phpfmg_form li{

margin-bottom:5px;

clear:both;

display:block;

overflow:hidden;

width: 100%

}

 

 

.form_field, .form_required{

font-weight : bold;

}

 

.form_required{

color:red;

margin-right:8px;

}

 

.field_block_over{

}

 

.form_submit_block{

padding-top: 3px;

}

 

.text_box, .text_area, .text_select {

width:300px;

}

 

.text_area{

height:80px;

}

 

.form_error_title{

font-weight: bold;

color: red;

}

 

.form_error{

background-color: #F4F6E5;

border: 1px dashed #ff0000;

padding: 10px;

margin-bottom: 10px;

}

 

.form_error_highlight{

background-color: #F4F6E5;

border-bottom: 1px dashed #ff0000;

}

 

div.instruction_error{

color: red;

font-weight:bold;

}

 

hr.sectionbreak{

height:1px;

color: #ccc;

}

 

#one_entry_msg{

background-color: #F4F6E5;

border: 1px dashed #ff0000;

padding: 10px;

margin-bottom: 10px;

}

 

<?php phpfmg_text_align();?>

 

 

 

</style>

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