Jump to content

Restreindre accès au site aux clients connectés


Recommended Posts

Bonjour à tous,

 

je voudrais faire en sorte de n'autoriser un site uniquement aux clients connectés.

 

Pour les non connectés il faudrait qu'ils soient redirigés vers la page d'authentification.

 

D'après ce que j'ai pu voir il faudrait surcharger le frontcontroller.php avec la méthode islogged, mais je ne vois pas trop où indiquer ces conditions.

 

Ou alors il faut restreindre pour chaque page ?

 

Merci d'avance

 

Link to comment
Share on other sites

Bonjour,

 

On imagine que tu as un prestashop 1.5.

 

Islogged() a un nom qui laisse entrevoir que cette fonction va renvoyer true ou false et PAS faire autre chose. Donc la solution n'est surement pas là ;)

 

Par contre la classe FrontControlleur a deux méthodes auquelles il parait interessant de s'interesser  :)

	public function checkAccess()
	{
		return true;
	}

	/**
	 * @see Controller::viewAccess
	 *
	 * @return boolean
	 */
	public function viewAccess()
	{
		return true;
	}

Pour ma part je ne me m'orienterai pas vers l'utilisation de isLogged() pour determiner si l'une de ses fonctions doit renvoyer true ou false mais j'utiliserai les groupes de prestashop.

 

$this->context->customer

 

est un indice de plus  ;)

 

Bon courage.

Edited by seb776 (see edit history)
Link to comment
Share on other sites

Oui en effet, plutôt que d'utiliser $cookie->isLogged(), je peux en effet regarder si l'user est  un client.

 

Par contre je ne vois pas trop l'intérêt des méthodes check et view acces, elles renvoient true certes mais rien d'autre à priori.

 

Edit : ou alors c'est deux méthodes sont à surcharger pour permettre de restreindre l'accès au site ?

Edited by serwol (see edit history)
Link to comment
Share on other sites

Bon du coup j'ai surchargé la méthode checkAcess :

public function checkAccess()
    {
        if (!$context)
            $context = Context::getContext();
        if (!$context->customer->isLogged())
            return false;
        else
            return true;
    }

Et donc dans la fonction viewAcces je controle si le checkAccess est à true ou false :

public function viewAccess()
	{
		if ($this->checkAccess())
			return true;
		else
			return false;
	}

Donc maintenant il me reste à rediriger vers la page d'authentification dans le cas ou on est à false et c'est là que ça me pose souci. Tu aurais une piste ?

Edited by serwol (see edit history)
Link to comment
Share on other sites

J'ai fais comme ceci, j'ai testé en détail mais ça fonctionne, dans le frontController

	public function checkAccess()
	{
            if( $this->context->customer->isLogged() || $this->php_self == 'authentication' ) {
                return true;
            }
            return false;
	}

et

	public function initCursedPage()
	{
            if($this->php_self != 'authentication') {
                Tools::redirect('index.php?controller=authentication');
            }
	}
Link to comment
Share on other sites

ça s'améliore

 

Excellent, c'est niquel ! Merci ! ;)

 

C'est tout de même dommage qu'il n'existe pas de documentation détaillée pour les différentes classes et méthodes, un peu comme les javadoc

Je suis bien d'accord avec toi, cependant, ça s'améliore  ...

 

+

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