Création compte client /// Surcharge users

Questions concernant spécifiquement les modules

Création compte client /// Surcharge users

Message par aj13 » 14 Juillet 2013, 10:08

Dans ma création de compte client je surcharge la fonction create_or_update_user ce qui donne :
Code : Tout sélectionner
    public function create_or_update_user($request, $params = null)
    {       
        $ns 
= $this->getModel('fonctions');
        $profil = $this->getModel('compte');
        $users = $this->_crud;
        $auth = $users->getAuth();
        $groups = $users->getGroupsByUser($auth['id']);
       
        $id 
= $ns->ifPost('int', 'id');
        // verifie si l'utilisateur est un adjoint

        $user = $users->getUser($id);
        $ret = null;
       
        if 
(($auth && ($users->hasPrivilege('manage_users') || !$user)) || (!$auth && !$user)) {
            $ret = parent::create_or_update_user($request, $params);
        }
        $err = $this->getHelper('errors');
       
      
        $donnees 
= $users->sanitize($request->POST);
        if (isset($ret['user']) && $ret['user']) {
            if (isset($ret['isnew']) && $ret['isnew']) {
            //print_r($ret);
            //die('die6');
                $group = '2';
                $users->addUserToGroup($ret['user']['id'], $group);
                // ajoute une zone de vigilance basee sur le code postal fourni par l'utilisateur a la creation
                $adresse = $profil->addAdresseForUser($ret['user']['id'], $donnees);
            } else {
                // le code inscription ne doit plus etre transmis si ce n'est pas un nouvel utilisateur
                unset($donnees['code_inscription']);
            }
        } else if($donnees['id'] == $auth['id']){
            //print_r($donnees);
            //print_r($params);
            //die('create_or_update_user mod');
            $id_adresse = $this->getModel('compte')->modAdresseForUser($auth['id'], $donnees);
            if (!$id_adresse) {
                $err->register_err('user', 'address_modification_failed', "Impossible de modifier l'adresse de cet utilisateur" . "\r\n");
            } else {
                //$this->data['adresse']['adresse_modifie'] = "1";
                $ret['adresse'] = $id_adresse;
            }
        }
        return $ret;
    }    


A l'intérieur je fais :
Code : Tout sélectionner
        if (($auth && ($users->hasPrivilege('manage_users') || !$user)) || (!$auth && !$user)) {
            $ret = parent::create_or_update_user($request, $params);
        } 


Pour créer dans un premier temps mon utilisateur, pour ensuite ajouter une adresse. Par contre je rencontre un problème avec l'id que je récupère qui est toujours 0. Penses tu que je dois rajouter une fonction qui me récupère le dernier utilisateur créer pour ensuite insérer mon adresse et mon utilisateur dans le bon groupe ?
aj13
 
Message(s) : 6
Inscription : 14 Juillet 2013, 10:06

Re: Création compte client /// Surcharge users

Message par pa-de-solminihac » 14 Juillet 2013, 14:39

Hello,

D'après ce que j'ai vu tu utilises la version 4.4 du module users... la dernière étant la 4.14, oublie pas de faire les mises à jour, ça vaut toujours le coup.

Je base ma réponse sur le code de la version 4.14. Dans le controleur (https://github.com/pa-de-solminihac/cle ... r.php#L596) on a les lignes suivantes :
Code : Tout sélectionner

        $erreurs 
= $err->get();
        $ret = array();
        if (!count($erreurs)) {
            if (!$id) {
                $id = $users->addUser($donnees['login']);
                if ($id) {
                    $ret['isnew'] = array('password' => $donnees['password']);
                }
            }
            if (!$id) {
                $err->register_err('user', 'user_already_exists', 'Cet utilisateur existe déjà' . "\r\n");
            } else {
                $user = $users->modUser($id, $donnees);
                if (!$user) {
                    $err->register_err('user', 'user_modification_failed', 'Impossible de modifier cet utilisateur' . "\r\n");
                } else {
                    $ret['user'] = $user;
                }
            }
        }
        $erreurs = $err->get();
        if (count($erreurs)) {
            $ret['errors'] = $erreurs;
        }
        return $ret;
 


Si tu debug a coup de die(), en ajoutant juste avant le return les lignes suivantes :
Code : Tout sélectionner
Clementine::dump($ret);
die();
 


Tu devrais voir s'afficher un tableau, avec une clé 'user' qui pointe sur un tableau qui contient les infos de ton utilisateur nouvellement créé. Il y a pas son id dedans ?
pa-de-solminihac
Administrateur
 
Message(s) : 20
Inscription : 13 Juin 2013, 00:28

Re: Création compte client /// Surcharge users

Message par aj13 » 14 Juillet 2013, 15:23

Voila le print et le id est toujours 0

Code : Tout sélectionner
 
array (
  
'isnew' => array(
    
'password' => '123456',
  ),
  
'user' => array(
    
'id' => '0',
    
'is_alias_of' => NULL,
    
'login' => 'jeremy1345@quai13.com',
    
'password' => 'd9ce627109fbcc7a7cb46a62147141480a2c364a46b1e4b65c0390b1961c6ea5',
    
'salt' => NULL,
    
'code_confirmation' => NULL,
    
'date_modification' => '2013-07-14 17:22:47',
    
'date_creation' => '2013-07-14 17:22:47',
    
'active' => '1',
    
'adresse' => 'adresse',
    
'password_conf' => '123456',
    
'civilite' => 'M',
    
'nom' => 'test nom',
    
'prenom' => 'test prenom',
    
'telephone_fixe' => '0909090909',
    
'telephone_mobile' => '0609090909',
    
'adresse2' => '',
    
'code_postal' => '13016',
    
'ville' => 'marseille',
    
'societe' => 'societe',
    
'id_parent' => 0,
  ),
)
 
aj13
 
Message(s) : 6
Inscription : 14 Juillet 2013, 10:06

Re: Création compte client /// Surcharge users

Message par pa-de-solminihac » 14 Juillet 2013, 20:47

C'est curieux en effet... je viens de tester de mon côté et l'id est bien renseigné correctement lors de la création d'un nouvel utilisateur...

Ce qui est d'autant plus curieux c'est que tu as bien le "isnew". Du coup je me pose la question suivante : tu n'aurais pas surchargé le modèle ? La fonction modUser() par exemple ?
pa-de-solminihac
Administrateur
 
Message(s) : 20
Inscription : 13 Juin 2013, 00:28

Re: Création compte client /// Surcharge users

Message par aj13 » 16 Juillet 2013, 07:59

J'ai trouvé c'est en fait la fonction sanitize du modèle users qui était surchargé, et du coup mal surchargé ;)
Merci de tes retours
aj13
 
Message(s) : 6
Inscription : 14 Juillet 2013, 10:06


Retour vers Questions sur les modules

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)