Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-10-2009 17:13:17

Willmore
Membre
Lieu: Savigny Le Temple
Date d'inscription: 25-05-2009
Messages: 31

[Model/Mapper/DbTable] Gestion de la mise à jour du mot de passe

Bonjour à tous,

Je viens vers vous pour éclaircir un point qui m'interpelle concernant la gestion des mots de passe dans le cas d'une mise à jour d'un utilisateur :

Présentation du contexte :

J'ai actuellement :
- Mes classes Model_DbTable_XXX héritant de Zend_Db_Table_Abstract et en correspondance avec les tables de ma DB,
- Une classe Model_User, avec toutes les propriétés associées à un utilisateur "courant" (login, password, email ...),
- Une classe Model_Mapper_User, qui me permet de faire les liens entre les propriétés de mon Model_User et les DbTable_XXX

Le cas qui m'interesse ici :

je récupère les propriétés d'un utilisateur avec :

Code:

$user = new Model_User();
$user->find(1);

Mon objet contient alors les valeurs récupérées depuis le DB (login, password chiffré par SHA1, email ...)

Je dois appliquer une modification, par exemple l'email :

Code:

$user->setEmail('nouvel@adresse.mail');
$user->save();

Et là problème :

- Model_User->save() passe $this à la méthode save() de Model_Mapper_User,

- Model_Mapper->save($mode_user) extrait les propriétés de l'objet passé en paramètre (login, password, email...) pour les regrouper dans un tableau.
Ce tableau est ensuite passé à la méthode update($data, $where) de l'objet DbTable correspondant - ici Model_DbTable_User - y compris le mot de passe chiffré par SHA1 qui par la même occasion se reprend un coup de sha1() dans les dents et remplace le "bon" mot de passe...

et là c'est le drame mad

C'est là que vos bonnes idées ou éclaircissements interviennent, la solution doit être sous mes yeux, mais j'ai passé une après-midi à taper les mappers pour mes différents models, et à vrai dire mes yeux ne sont plus dans le coup sad

Comment éviteriez-vous ce phénomène ?
test au niveau du mapper qui ajoute 'ou pas' la case password dans l'array qui sera transmit à l'objet DbTable ?
shooter la méthode update($data, $where) héritée de Zend_Db_Table_Abstract ?

Je suis toute ouïe (enfin, façon de parler)


Amicalement,

Will

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages