Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Plugin auth - Affichage

Posted by neolao on 05/12/2006 20:34

J'essaye de comprendre comment doit fonctionner le plugin auth. J'ai activé le plugin et j'ai mis dans la config qu'on est obligé d'être authentifié.

 auth_required = on

Ensuite, je défini la page où il faut s'identifier

 on_error_action = "myapp~main_login"

dedans, je met

  $rep = $this->getResponse('html');
  $rep->title = 'Connexion à MyApp';
  $rep->bodyTpl = 'login';
  $rep->body->assignZone('LOGIN_FORM', 'auth~loginform', array ('login'=>$this->param('login'), 'failed'=>$this->param('failed')));
  return $rep;

Donc j'essaye d'accéder au site, je tombe sur le formulaire. Si je mets le bon mot de passe, tout se passe bien, j'arrive où je veux et tout. Par contre, si je mets un mauvais mot de passe, ca m'emmène vers

 /index.php?login=neolao&failed=1&module=auth&action=login_form

J'aimerai retourner vers ma page personnalisé pour s'identifier.

J'ai vérifié le fichier lib:jelix-modules/auth/controllers/login.classic.php à la fonction in et je trouve ça :

 if (!jAuth::login($this->param('login'), $this->param('password'))){
     sleep (intval($conf['on_error_sleep']));
     $url_return = jUrl::get('auth~login_form',array ('login'=>$this->param('login'), 'failed'=>1));
 }
 $rep = $this->getResponse('redirectUrl');
 $rep->url = $url_return;

Donc, si j'ai bien compris, quand l'authentification rate, on va forcément au sélecteur auth~login_form alors que j'aimerai aller par exemple sur myapp~main_login (toujours sur le formulaire quoi).

J'ai bon ou ce n'est pas comme ça qu'il faut utiliser le plugin ?

  [Opened] Re: Plugin auth - Affichage

Reply #1 Posted by laurentj on 05/14/2006 17:48

je défini la page où il faut s'identifier
on_error_action = "myapp~main_login"

non, parce que dans ton action, il n'y a nulle part où il est fait un logout.

Donc, si j'ai bien compris, quand l'authentification rate, on va forcément au sélecteur auth~login_form alors que j'aimerai aller par exemple sur myapp~main_login (toujours sur le formulaire quoi).

Puisque tu ne sembles pas vouloir reutiliser le controleur pour ton formulaire, le mieux est que tu fasses alors ton propre controleur pour tout (login, logout etc..)

Je ne sais pas ce que tu en penses, mais il y a déjà pas mal de paramètre pour le controleur par défaut, alors si il faut en rajouter en plus.. ça risque de devenir ingérable à force. Non ?

 

  [Opened] Re: Plugin auth - Affichage

Reply #2 Posted by neolao on 05/14/2006 18:06

humm, si je remet

 on_error_action = "auth~login_out"

puis

 enable_after_logout_override = on
 after_logout = "myapp~main_login"

Après le logout, il devrait aller vers mon formulaire nan ? Avec ça, ça marche plus, redirection infini.

Effectivement, je veux réutiliser le controleur. Mais je ne comprend pas comment utiliser le formulaire. Comme c'est une zone, j'ai pensé qu'il fallait que je crée ma propre page où mettre le formulaire, le fameux myapp~main_login.

  [Opened] Re: Plugin auth - Affichage

Reply #3 Posted by neolao on 05/14/2006 18:30

j'ai résolu mon problème de redirection grace au auth.required = false

mais le problème, c'est quand on rate une connexion, le renvoi vers auth~login_form que faut-il faire ? dans le controleur :

 function form() {
    $rep = $this->getResponse('html');

    $rep->title =  jLocale::get ('auth.titlePage.login');
    $rep->body->assignZone ('MAIN', 'auth~loginform', array ('login'=>$this->param('login'), 'failed'=>$this->param('failed')));
        
    return $rep;
 }

il n'y a pas de template associé à la réponse, je peux même pas le surcharger.

  [Opened] Re: Plugin auth - Affichage

Reply #4 Posted by laurentj on 05/14/2006 23:32

Après le logout, il devrait aller vers mon formulaire nan ? Avec ça, ça marche plus, redirection infini.

Le problème est que auth.required=true par défaut. Et donc tu dois spécifier un paramètre de plugin "auth.required" à false pour la méthode login de ton controleur main. (voir /articles/manuel/plugins que je viens de compléter). Ainsi le plugin saura qu'il n'est pas nécessaire d'avoir une authentification pour cette action, et ne fera donc pas de redirection, vers ton formulaire de login (qui echouera donc, d'où la boucle infinie :-) )

  [Opened] Re: Plugin auth - Affichage

Reply #5 Posted by neolao on 05/15/2006 00:29

Ce qui arrange tout, c'est la modification que j'ai faite dans le fichier lib:jelix-modules/auth/controllers/login.classic.php à la fonction in :

 $url_return = jUrl::get('myapp~login_index',array ('login'=>$this->param('login'), 'failed'=>1));

Et donc je pense qu'il faut un paramètre dans le fichier ini, genre after_badlogin pour indiquer où aller. Sinon j'ai vraiment mal compris comment ca marchait.

Et au passage, dans lib:jelix-modules/auth/templates/login.form.tpl, il y a {@auth~auth.failedToLogin@} au lieu de {@auth~auth.titlePage.failedToLogin@}

  [Opened] Re: Plugin auth - Affichage

Reply #6 Posted by bballizlife on 06/02/2006 11:25

Concernant l'ajout d'un after_badlogin, si tu veux proposer un patch, il n'y a pas de probème.

Pour les locales, nous avons effectué une correction, merci.


N'importe comment c'est dans la doc

 
Page
  1. Re: Plugin auth - Affichage