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

  [Opened] Préparation d'un tutoriel sur jAuth

Posted by turowbye on 06/14/2007 19:32

Je suis à terminé un petit tutoriel sur la classe jAuth et je rencontre 2 petits problèmes.

J'utilise une configuration classique.

<code ini>
  driver = Db
  on_error_action = "jauth~login_out"
  after_login = "auth1~default_index"
  after_logout = "jauth~login_form"
  on_error_sleep = 3
  [Db]
  dao = "jauth~jelixuser"
</code>

Je ne saisie pas le pourquoi du non fonctionnement de la mise à jour...

<code php>
  function updateUser(){
    $rep = $this->getResponse('html');
    $rep->bodyTpl = 'main';
   	
    $updUser = new jAuthUser();
    $updUser->login = 'jelix';
    $updUser->email = 'jelix@cie.com';
    $updUser->password = md5('jelix');
    $oldUser = 'tempuser';
    jAuth::updateUser($oldUser, $upduser);
     
    return $rep;
  }
</code>

Je ne saisie pas le pourquoi du non fonctionnement de l'ajout du nouvel utilisateur...

<code php>
  function createUser(){
    $rep = $this->getResponse('html');
    $rep->bodyTpl = 'main';
       
    $newUser = new jAuthUser();
    $newUser->login = 'tempuser';
    $newUser->email = 'tempuser@cie.com';
    $newUser->password = md5('tempuser');
    
    try{
      $user = jAuth::saveNewUser($newUser);
      $rep->body->assign('MAIN', 'Le user : '.$user->login . ' vient d\'être créé!'); 
    }catch(Exception $e){
      $rep->body->assign('MAIN', 'Impossible d\'ajouter ce nouvel utilisateur!');
	}   
     
    return $rep; 
  }
</code>

Windows 2000 - Apache 2.2.4 - PHP 5.2.2

  [Opened] Re: Préparation d'un tutoriel sur jAuth

Reply #1 Posted by laurentj on 06/15/2007 10:45

pour jAuth::updateUser, il y a une coquille dans la reference. Un bug dans phpdocumentor fait qu'il a vu deux paramètres alors qu'il y en a un. Bref, tu dois faire

 jAuth::updateUser($upduser);

De toute façon ta manière de faire est totalement fausse : tu ne dois PAS créer toi même un objet jAuthUser, car ce n'est pas forcément un objet de cette classe dont le driver a besoin ! jAuthUser est juste une classe de base, qui n'est même pas forcément hérité par les drivers. tiens d'ailleurs je vais la marquer abstract dans le trunk. D'ailleurs, je ne sais pas si tu as remarqué la contradiction de ton code : dans la conf, tu indique qu'il faut utiliser le dao "jauth~jelixuser" pour le user, mais tu instancie plus loin une classe jAuthUser ;-)

Mais c'est un peu de ma faute, la doc de référence est un peu confuse à ce sujet..

Donc pour mettre à jour un user, tu le récupère par jAuth::get :

 function updateUser(){
   $rep = $this->getResponse('html');
   $rep->bodyTpl = 'main';
  	
   $updUser = jAuth::get('jelix');
   $updUser->email = 'jelix@cie.com';
   jAuth::updateUser($upduser);
    
   return $rep;
 }

Pour changer le mot de passe, il ne faut pas passer par l'objet user, mais utiliser la méthode jAuth::changePassword(), et surtout pas crypter toi même le mot de passe ! (eh oui, selon le driver, le stockage et le cryptage du mot de passe peut changer).

Pour créer un nouvel utilisateur, il faut utiliser jAuth::CreateUserObject :

 function createUser(){
   $rep = $this->getResponse('html');
   $rep->bodyTpl = 'main';
      
   $newUser = jAuth::createUserObject('login','mot de passe');
   $newUser->email = 'tempuser@cie.com';
   
   try{
     $user = jAuth::saveNewUser($newUser);
     $rep->body->assign('MAIN', 'Le user : '.$user->login . ' vient d\'être créé!'); 
   }catch(Exception $e){
     $rep->body->assign('MAIN', 'Impossible d\'ajouter ce nouvel utilisateur!');
  }   
    
   return $rep; 
 }

Je vais clarifier la doc de reference par rapport à tout ça.

  [Opened] Re: Préparation d'un tutoriel sur jAuth

Reply #2 Posted by turowbye on 06/15/2007 14:38

Oui effectivement la création de l'objet jAuthUser m'amenait à toutes sortes de questionnement. Et je comptait sur toi pour y répondre...

J'ai modifié les 4 dernières fonctions du tuto. Commentaires pour l'une et les 3 autres ont été modifié pour montrer une interaction entre

  • la création
  • la mise à jour
  • la destruction (non existance)

Je vois que tu écris qu'on pouvait exécuter ce tuto avec Jelix 1.0 beta 2.1. J'ai déjà fait ce test et j'ai obtenu plusieurs erreurs au niveau du sélecteur... Mais comme il m'arrive souvent de me tromper... Je refais le test mais cette fois ci en suivant le tuto avec la version courante de Jelix. Je te reviens la dessus...

UPDATE par turowbye: Tu as tout à fait raison, ce tuto fonctionne bien avec la version courante de Jelix soit la 1.0 beta 2.1


Windows 2000 - Apache 2.2.4 - PHP 5.2.2

 
Page
  1. Préparation d'un tutoriel sur jAuth