Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/05/2011, 12h44   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 77
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 77
Points : 12
Points : 12
Par défaut hachage mot de passe

Bonjour à tous

J'ai une base de données avec une table d'utilisateur, pour des raisons propres a mon projet sfDoctrineGuardplugin semble ne pas être adapter a ma gestion d'utilisateur.Raison pour laquelle je gere mes utilisateurs à l'ancienne.
Voila mon probleme.je veux hacher le mot de passe de mon user des son incription.Pour cela j'ai surcharger la methode setPassword comme suit dans lib/model/utilisateur.class.php:
Code :
1
2
3
4
5
 
public function setPassword($password)
    {
        return $this->_set('password', md5($password));
    }
et ça marche sans problème, sauf que lorsque je veux éditer le même utilisateur sans modifier son mot de passe, symfony considère que le champ password est a vide et il modifie son mot de passe.Et si je laisse le champ password visible l'utilisateur peut être tenté de croire qu'il a un mauvais mot de passe vu qu'il est haché.
Comment faire pour modifier les donnes d'un user sans que le mot de passe n'en souffre(si on n'y touche pas volontairement).

Merci.
lepopol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h58   #2
Futur Membre du Club
 
Inscription : novembre 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 57
Points : 18
Points : 18
Bonjour,

A mon avis tu peut contourné facilement ce problème, met ton vrai password dans un input type hidden (ou même pas), crée un nouveau widget pour ton nouveau mot de passe. une fois ton formulaire envoyé tu peut jouer avec les valeurs dans la fonction "processValues($values)" de ta form en testant la valeur de ton nouveau mot de passe, si elle n'est pas vide alors :
Code :
$values['password'] = $values['new_password'];unset($values['new_password']);
et si ton nouveau mot de passe est vide:
Code :
1
2
unset($values['new_password']);unset($values['
password']);
dans ce cas password ne serra pas pris en compte

Bon courage.
azou_gold est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 14h57   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 77
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 77
Points : 12
Points : 12
euh... s'il te plaît est ce que tu peux m'en dire plus sur la fonction processValue() suis encore au niveau débutant en symfony
Merci!
lepopol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 17h50   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Même si l'idée d'utiliser processValue me semble pertinente, je pense qu'il y a, ici, plus simple.

Code php :
1
2
3
4
5
6
7
# setter dans le modèle
public function setPassword( $password )
{
    if ( !$password == '' )
              $this->_set( 'password', md5( $password ) );
    return $this;
}
A noter qu'il me semblerait bon de geler le getter aussi et de rajouter une méthode pour vérifier qu'un password saisi soit valide.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h36.


 
 
 
 
Partenaires

Hébergement Web