Bonjour, voilà plusieurs jours que je suis bloqué et je n'arrive pas à m'en dépêtrer...
Je vais essayer d'être le plus clair possible.
Je dois créer un formulaire pour modifier directement les usename et passwd de la table pg_shadow.
Qui ne sont modifiables qu'avec les requêtes suivantes :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER USER ancienLogin RENAME TO nouveauLogin; ALTER USER nouveauLogin WITH ENCRYPTED PASSWORD nouveauMotDePasse;
Cela étant dit, j'ai donc crée Utilisateur.class.php avec : (private $_idUtilisateur; private $_login; private $_motDePasse;),
Puis dans UtilisateurManager.class.php j'ai crée une : public static function update(Utilisateur $perso).
Cette fonction s'execute évidemment lorsque l'on clique sur "Modifier" une fois les nouveaux identifiants choisis.
Voici ma fonction Update :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public static function update(Utilisateur $perso) { $db = DbConnect::getDb(); $q0=$db->prepare('SELECT usename as login FROM pg_shadow u WHERE usesysid = :idUtilisateur;'); $q0->bindValue ( ':idUtilisateur', $perso->getIdUtilisateur()); $res0= $q0->execute(); //Requête pour trouver l'ancien usename à modifier grâce à l'id. $ancien = $q0->fetch(PDO::FETCH_ASSOC); $q1 = $db->prepare("ALTER USER :precedent RENAME TO :login;"); //Requete qui sert à changer le login $q2 = $db->prepare("ALTER USER :login WITH ENCRYPTED PASSWORD :motDePasse;"); //Requete qui sert à changer le mdp $q1->bindValue ( ':precedent', $ancien['login']); $q1->bindValue ( ':login', $perso->getLogin()); $q2->bindValue ( ':login', $perso->getLogin()); $q2->bindValue ( ':motDePasse', $perso->getMotDePasse()); $res1 = $q1->execute(); $res2 = $q2->execute(); }
Et évidemment, rien ne marche...
Pourriez-vous m'aider ?
Cordialement
Partager