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

  [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

Reply #1 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 :

  1. ) le $form->initFromRequest n'est pas conditionné par $form (probleme d'indentation ?)
  2. ) ne sera jamais fait si le formulaire n'est pas validé
  3. ) 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

Reply #2 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

 
Page
  1. Re: utilisation de jAuth