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

  [Opened] Plugin auth - création user

Posted by neolao on 05/12/2006 00:15

Après installation du plugin auth, j'essaye de créer un utilisateur comme ca :

 jAuth::createUser('toto', 'prout');

Ca me fait une erreur de requête :

 Column 'usr_email' cannot be null

Je modifie lib:jelix/auth/jAuthDriverDb.class.php à la méthode createUser, je rajoute

 $user->password = '';
 $user->email = '';

Ce qui donne :

 public function createUser($login, $password){
     $dao = jDAO::get($this->_params['dao']);
     $user = jDAO::createRecord($this->_params['dao']);
     $user->login = $login;
     $user->password = '';
     $user->email = '';
     $dao->insert($user);
     $dao->updatePassword($login, $password);
     return true;
 }

Et ça marche. Sinon, il n'y a pas encore de méthode pour modifier l'email.

  [Opened] Re: Plugin auth - création user

Reply #1 Posted by laurentj on 05/12/2006 11:23

ok, je vais voir ça. Le plus simple à mon avis serait de modifier la table et ne pas rendre obligatoire ce champs email... Par contre pour le mot de passe, effectivement...

sinon pour modifier les champs : tu récupère simplement l'objet user qui est en session, tu modifie ses champs, et tu demande à jAuth de mettre à jour :

   $user = jAuth::getUserSession()
   // ou 
   $user = jAuth::getUser('son_login');
 
   $user->email = 'foo';
 
   jAuth::UpdateUser($user);

Pourquoi comme ça :

  • indépendance de la manière dont sont stockées les informations de l'utilisateur
  • quand on utilise le driver db, on peut indiquer la dao que l'on veut (donc pas obliger de prendre celle fournie en standard, même si il faut toute fois respecter l'interface minimum qu'elle fournie au niveau des méthodes). On peut donc avoir un user avec beaucoup plus d'informations (genre avoir nom, prenom, adresse, champs de validité etc...)

à noter que des évènements sont générées par jAuth à chaque action : un module peut donc réagir à chacune des actions : pas besoin de modifier le code en dur aux endroits où l'on appelle jAuth.

  [Opened] Re: Plugin auth - création user

Reply #2 Posted by Guest on 07/19/2006 11:53

bonjour, J'etudie actuellement le fonctionne de Jelix pour une futur utilise.

Je vois que auth permet d'enregistré un utilisateur avec login/pass/email

Mais si je possède une application qui possède d'autres champs pour l'utilisateur ?? (age, siteweb, etc..)

Commenent ca se passe ?

  [Opened] Re: Plugin auth - création user

Reply #3 Posted by bballizlife on 07/19/2006 13:10

@norky : Il n'y a aucun problème pour utiliser jAuth avec une table utilisateurs comportant des champs supplémentaires. Les champs login, email et password sont unniquement les 3 champs obligatoires par défaut.

Pour adapter jAuth à une table existante il faut créer le fichier dao correspondant à cette table et l'adapter en se basant sur le fichier dao (auth~jelixuser) Ensuite, dans la configuration du plugin auth (auth.plugin.ini.php) :

[Db\]%%%dao = "nomModule~nomDao"

En adaptant nomModule et nomDao en fonction de la dao créée pour la table utilisateurs existante.


N'importe comment c'est dans la doc

  [Opened] Re: Plugin auth - création user

Reply #4 Posted by Guest on 07/19/2006 13:44

ah ok ! très bien merci

sinon, cercenant le sujet initial du post (l'email vide) ne serait-il pas interessant de faire une communication inter-module avec le futur module pref ??

  [Opened] Re: Plugin auth - création user

Reply #5 Posted by isdream on 01/26/2007 16:57

Bonjour j'ai 3 problèmes qui sont plus ou moins liés :

Problème 1 :

Je ne me sert pas encore de la fonction createUser car je n'arrive pas à utiliser le module Jauth correctement mais sur ma version jelix-1[1\].0b1-dev.tar.gz,

le fichier "jAuthDriverDb.class.php" contient une fonction qui ne marche pas :

    public function createUser($login,$password){
        $user = jDao::createRecord($this->_params['dao']);
        $user->login = $login;
        $user->password = $this->cryptPassword($password);
        return $user;
    }

et non une fonction qui marche :

    public function createUser($login,$password){
        $dao = jDao::get($this->_params['dao']);
        $user = jDao::createRecord($this->_params['dao']);
        $user->login = $login;
        $user->password = '';
        $user->email = '';
        $dao->insert($user);
        $user->password = $this->cryptPassword($password);
        return $user;
    }

est ce normal? Ai je téléchargé la bonne version?

Problème 2 :

En ce moment, un message d'erreur survient lorsque j'utilise dans mon controleur (module=mon_module action=default_indexsecure) :

	public $pluginParams = array(
		'index'=>array('auth.required'=>false),
		'indexsecure'=>array('auth.required'=>true)
	);

Fichier de config :

 on_error_action = "jauth~login_form"

erreur :

 [error 0] (202) The file of the locale key "mon_module~auth.titlePage.login" (charset ISO-8859-1, lang fr_FR) does not exist C:\wamp\www\jelix\lib\jelix\core\jSelector.class.php 154

Résolution : En copiant les fichiers locales du module jauth dans mon_module, l'erreur s'enlève et le formulaire d'authentification survient.

Remarque : C'est plus une solution de contournement qu'autre chose ou est ce une résolution "propre"?

Problème 3 :

Ensuite, je me sert du formulaire pour m'authentifier et j'obtient :

 Fatal error: Call to undefined method cDao_jauth_Jx_jacluser_Jx_mysql::getByLoginPassword() in C:\wamp\www\jelix\lib\jelix\auth\jAuthDriverDb.class.php on line 88 (line 77 originelement, line 88 car j'ai modifié createUser)

Faut il que j'écrive la fonction "getByLoginPassword" dans l(e/a) Dao/classe? ou s'agit t il tout simplement d'un mauvais placement de fichier que j'aurai fais?

isdream.

  [Opened] Re: Plugin auth - création user

Reply #6 Posted by laurentj on 01/26/2007 17:42

Problème 1 : il n'y a absolument aucune erreur. createUser ne crée pas un utilisateur en base ou autre. Cette méthode est simplement chargée de créer un "objet" qui contiendra les informations utilisateur. On peut alors remplir cet objet, et on le passe ensuite à jAuth::saveNewUser pour créer le user en base.

Tout ceci est spécifié dans la doc de reference.

La méthode devrait d'ailleurs plutôt s'appeler createUserObject...

  [Opened] Re: Plugin auth - création user

Reply #7 Posted by laurentj on 01/26/2007 17:57

Problème 2 : c'est effectivement un bug. Noté dans le ticket 104

Problème 3 : ton dao est censé suivre une interface précise pour bien fonctionner avec le driver db pour jAuth. Voir un exemple de dao dans le module jxauth

La doc est absente concernant ce point. Désolé :-)

  [Opened] Re: Plugin auth - création user

Reply #8 Posted by isdream on 01/29/2007 10:01

Merci Laurent. Je n'ai pas encore les réflexes pour regarder au bon endroit.

  [Opened] Re: Plugin auth - création user

Reply #9 Posted by laurentj on 01/29/2007 13:40

problème 1 (renommage de createUser), 2 et 3 (exemple de dao ajouté dans le module jauth) corrigés dans la nightly build..

 
Page
  1. Plugin auth - création user