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

  [Opened] [Résolu] Identification avec jAuth - mysql

Posted by Nigoki on 06/16/2008 17:48

Bonjour à tous,

Tout d'abord félicitation pour ce moteur de templates qui est un régal à utiliser.

Je viens demander de l'aide car je crois que le plugin jAuth m'en veut personnellement =)

En effet, j'ai commencé a travailler sur une base pgsql, puis par contrainte technique j'ai du revenir sur du mysql. Rien de bien compliqué dans ce changement car il faut juste modifier dbprofils.ini.php, auth.coord.ini.php ainsi que que le dao de référence pour le plugin jAuth (la structure de la table était légèrement differente.)

Depuis ce changement les methodes jAuth::login() et jAuth::verifiyPassword() me renvoi toujours faux. les methodes jAuth::saveNewUser, jAuth::getUser et jAuth::createUserObject marche parfaitement puisque l'ajout d'un utilisateur marche sans problème.

J'ai essayer plusieurs methodes de debugage et les identifiants envoyés a ma page de login sont correctement passé par le formulaire.

Quel pourrai etre les choses que j'ai oblier de modifier ou autre pour que seul la vérification du password boude ? Je viens de passer l'aprem dessus et je suis a court d'idée.

  [Opened] Re: Identification avec jAuth

Reply #1 Posted by laurentj on 06/16/2008 18:03

Salut,

Peut-être s'agit-il d'un problème de cryptage de mot de passe.. Faudrait savoir ce que tu as mis dans la conf du plugin auth, ce qu'il y a vraiment dans le champs mot de passe en base etc..

  [Opened] Re: Identification avec jAuth

Reply #2 Posted by Nigoki on 06/17/2008 09:39

Huum, le password_encryption à toujours été md5 et meme les nouveaux users créé ne sont pas valides à l'authentification.

Sinon, est il possible de juste redefinir les template du module jauth ? J'ai voulu faire mon propre module d'authentification juste pour etre libre sur l'affichage, et j'ai juste besoin d'un fonctionnement standard.

Merci.

EDIT : Non finalement meme avec le module jauth, l'authentification échoue, je suppose que le driver et le dao sont bien renseignés comme l'ajout marche,

voici ma fonction d'authentification :

 function process_login()
	{
		$rep = $this->getResponse('redirect');	

		if(jAuth::login($this->param('login'), $this->param('password')))
		{
			$rep->action = 'users~default:index:';
		}
		else 
		{
			$rep->params = array('error' => '1');
			$rep->action = 'auth~login:form';
		}
		
		return $rep;
	}

rien de bien sorcier... avec password_crypt_function = md5. Voici la configuration de mon formulaire login/password :

 <form name="login" action="{jurl 'auth~login:process_login'}" method="post">

et voici la fonction d'enregistrement de users qui fonctionne :

 function process_register()
	{
		$rep = $this->getResponse('redirect');
		
		
		$user = jAuth::getUser($this->param('login'));
		
			if($user)
			{
				$rep->params = array('error' => "1");
				$rep->action = 'auth~login:register';
			}
			else			
			{
				$user = jAuth::createUserObject($this->param('login'), $this->param('password'));
				$user->email = $this->param('email');
				jAuth::saveNewUser($user);
				$rep->action = 'auth~login:form';
			}

		return $rep;
	}

et enfin pour l'instant l'option auth_required est à off.

  [Opened] Re: Identification avec jAuth

Reply #3 Posted by laurentj on 06/17/2008 10:02

Dans la redéfinition du dao, tu as bien intégré les mêmes methodes ? les nom des propriétés sont les mêmes au moins ?

  [Opened] Re: Identification avec jAuth

Reply #4 Posted by Nigoki on 06/18/2008 11:55

Normalement oui, j'ai copié collé le dao que l'on trouve dans le tutoriel, puis suite a ton message, je suis aller copié collé celui dans jelix-modules/jauth/daos/, j'ai ensuite remplacé quelques infos par celles de mes tables.

 <?xml version="1.0" encoding="UTF-8"?>
 <dao xmlns="http://jelix.org/ns/dao/1.0">
    <datasources>
        <primarytable name="admin_adm" realname="admin_adm" primarykey="login_adm" />
    </datasources>
    <record>

    <property name="login" fieldname="login_adm" datatype="string" required="true" maxlength="20"/>
    <property name="password" fieldname="password_adm" datatype="string" required="true" maxlength="20"/>
    <property name="email" fieldname="email_adm" datatype="string" required="true" maxlength="35"/>

    </record>
  <factory>
     <method name="getByLoginPassword" type="selectfirst">
         <parameter name="login" />
         <parameter name="password" />

         <conditions>
             <eq property="login" expr="$login" />
             <eq property="password" expr="$password" />
         </conditions>
     </method>

     <method name="getByLogin" type="selectfirst">
         <parameter name="login" />

         <conditions>
             <eq property="login" expr="$login" />
         </conditions>
     </method>

     <method name="updatePassword" type="update">
         <parameter name="login" />
         <parameter name="password" />

         <values>
             <value property="password" expr="$password"/>
         </values>
         <conditions>
             <eq property="login" expr="$login" />
         </conditions>
     </method>

     <method name="deleteByLogin" type="delete">
         <parameter name="login" />
         <conditions>
             <eq property="login" expr="$login" />
         </conditions>
     </method>

     <method name="findByLogin" type="select">
         <parameter name="pattern" />
         <conditions>
             <like property="login" expr="$pattern" />
         </conditions>
         <order>
             <orderitem property="login" way="asc" />
          </order>
     </method>
     <method name="findAll" type="select">
         <order>
             <orderitem property="login" way="asc" />
         </order>
     </method>

   </factory>
</dao>

  [Opened] Re: Identification avec jAuth - Mysql

Reply #5 Posted by Nigoki on 06/30/2008 11:30

Problème résolu, j'explique pour aider ceux qui ont mon problème.

Comme dit précédemment, c'est la migration postgres, mysql qui a engendré l'impossibilité d'authentification. L'erreur vient simplement de la configuration de mysql, en effet, j'avais créer ma base en utf8_bin. Hors ce jeu de caractere sous mysql comporte bcp de problème lors des comparaison avec like ou =.

La solution est donc simplement de faire gaffe au jeu de caractère de mysql, certain supporte mal les comparaisons, pour ma part je suis passé à utf8_general_ci

merci encore à laurentj et à bballizlife, ainsi qu'aux contributeurs de jelix pour cet excellent moteur de templates

 
Page
  1. Re: Identification avec jAuth - Mysql