- 1
[Opened] utilisation de jAuth[[résolu]]
Posted by romeo on 10/14/2012 18:57
salut je viens d'installer le module jAuth. j'ai developper un controleur pour l'enregistrement d'un utilisateur mais j'ai des soucis au niveau du controleur puisqu'il me renvoit une page vide sans erreur mais dans la bd il n'y a rien voici mon controleur
class defaultCtrl extends jController { /** * */ public $pluginParams = array( '*'=>array('auth.required'=>false) ); function index() { if(jAuth::isConnected()) return $this->pasacces(); $rep = $this->getResponse('html'); $rep->title='créationadhérant'; $form = jForms::get("adherant~adherant"); if ($form === null) { $form = jForms::create("adherant~adherant"); } $tpl = new jTpl(); $tpl->assign('form',$form); $rep->body->assign('MAIN',$tpl->fetch('creation')); return $rep; } function save(){ if(jAuth::isConnected()) return $this->pasacces(); global $gJConfig; $rep= $this->getResponse("redirect"); $rep->action = "default:index"; $form = jForms::get('adherant~adherant'); if(!$form) return $rep; $form->initFromRequest(); if(!$form->check()){ return $rep; } $login=$form->getData('login'); $reunion=$form->getData('Reunion_nom'); if(jAuth::getUser($login)){ $form->setErrorOn('adherant','l\'utilisateur existe déja'); return $rep; } $pass=md5($form->getData('motpasse')); $user = jAuth::createUserObject($login,$pass); $user->email = $form->getData('email'); $user->telephone = $form->getData('telephone'); $user->prenom = $form->getData('prenom'); $user->age = $form->getData('age'); $user->sexe = $form->getData('sexe'); $user->adresse_pays = $form->getData('adresse_pays'); $user->adresse_ville = $form->getData('adresse_ville'); $user->photo = $form->getData('photo'); if (count($form->getErrors())) { return $rep; } jAuth::saveNewUser($user); jForms::destroy('adherant~adherant'); $rep->action="default:validation"; $rep->params= array('login'=>$adherant); return $rep; } function validation(){ if(jAuth::isConnected()) return $this->pasacces(); $rep = $this->getResponse('html'); $form = jForms::get('validationadherant'); if($form == null){ $form = jForms::create('validationadherant'); $login = $this->param('login'); if ($login) $form->setData('login', $login); } $tpl = new jTpl(); $tpl->assign('form',$form); $rep->body->assign('MAIN',$tpl->fetch('activation')); return $rep; } function confirmation(){ if(jAuth::isConnected()) return $this->pasacces(); $rep= $this->getResponse("redirect"); $rep->action="default:validation"; if($_SERVER['REQUEST_METHOD'] != 'POST') return $rep; $form = jForms::fill('validationadherant'); if ($form == null) { return $rep; } if (!$form->check()) { return $rep; } $login = $form->getData('login'); $user = jAuth::getUser($login); if (!$user) { $form->setErrorOn('nologin','utilisateur inexistant'); return $rep; } jForms::destroy('confirmation'); $rep->action="default:acces"; return $rep; } function acces(){ $rep = $this->getResponse('html'); $tpl = new jTpl(); $tpl->assign('already',false); $rep->body->assign('MAIN',$tpl->fetch('enregistrementvalide')); return $rep; } function pasacces(){ $rep = $this->getResponse('html'); $rep->title ='Acces interdit'; $tpl = new jTpl(); $rep->body->assign('MAIN', $tpl->fetch('noacces')); return $rep; } } ET MON DAO RESEMBLE A CECI <code> <?xml version="1.0" encoding="UTF-8"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="adherant" realname="adherant" primarykey="login,Reunion_nom" /> </datasources> <record> <property name="nom" fieldname="nom" datatype="varchar" default="" maxlength="100"/> <property name="prenom" fieldname="prenom" datatype="varchar" default="" maxlength="100"/> <property name="age" fieldname="age" datatype="int" default=""/> <property name="sexe" fieldname="sexe" datatype="varchar" default="" maxlength="45"/> <property name="login" fieldname="login" datatype="varchar" required="true" maxlength="45"/> <property name="motpasse" fieldname="motpasse" datatype="varchar" default="" maxlength="45"/> <property name="email" fieldname="email" datatype="varchar" default="" maxlength="255"/> <property name="photo" fieldname="photo" datatype="varchar" default="" maxlength="45"/> <property name="Reunion_nom" fieldname="Reunion_nom" datatype="varchar" required="true" maxlength="255"/> <property name="adresse_pays" fieldname="adresse_pays" datatype="varchar" required="true" maxlength="200"/> <property name="adresse_ville" fieldname="adresse_ville" datatype="varchar" required="true" maxlength="100"/> <property name="telephone" fieldname="telephone" datatype="int" default=""/> <property name="date_creation" fieldname="date_creation" datatype="datetime" insertpattern="NOW()" /> <!--<property name="" fieldname="" datatype="string/int/float/date" required="yes" maxlength="" minlength="" regexp="" sequence="" updatepattern="" insertpattern="" selectpattern=""/>--> </record> <factory> <method name="getByLoginPassword" type="selectfirst"> <parameter name="login" /> <parameter name="motpasse" /> <conditions> <eq property="login" expr="$login" /> <eq property="motpasse" 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="motpasse" /> <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></code>
je ne sai pas ci c'est un problème sur la table puisqu'elle possède le une clé composé de deux champs (login,reunio_nom). dans le fichier de configuration de jAuth j'ai spécifier le dao adherant~adherant puisque j'ai un module adherant et un module reunion. a laide sil vs plait suis coincé depuis
[Opened] utilisation de jAuth
Posted by foxmask on 10/17/2012 08:58
en premier lieu j'aurai plutot mis
public $pluginParams = array( '*'=>array('auth.required'=>true) 'pasacces'=>array('auth.required'=>false) );
et du coup je supprime tous les tests consistant à vérifier que l'utisateur est connecté,
ensuite il faut faire des jLog::dump() des variables apres soumission du formulaire ainsi dans la debug bar on verra la valeur des variables
ensuite il y a plein d'erreur ... faire
if(!$form) return $rep; $form->initFromRequest();
ca :
- ) le $form->initFromRequest n'est pas conditionné par $form (probleme d'indentation ?)
- ) ne sera jamais fait si le formulaire n'est pas validé
- ) donc sera TOUJOURS effectué quand le formulaire sera validé, ce qui revient à avoir brassé de l'air car $form n'a plus de données en session...
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Re: utilisation de jAuth
Posted by romeo on 10/18/2012 10:38
merci pour ton aide foxmask je pense j'ai trouvé la solution comme vous avez dit javais mis rop de test . et pas sur les champs maintenant c'est ok ayant suivit vos propositons et fait quelque modification dans mon fichier de configuration
- 1