horde 5 passwd
"passwd" est le module de horde 5 qui permet aux utilisateurs de modifier leur mot de passe. son installation présente quelques difficultés actuellement; d'où ce billet. Je ferai un copier collé de son contenu dans le billet plus global sur horde 5.
Préambule
Avant de suivre le contenu de ce billet, tentez simplement d'installer le module passwd de la manière suivante:
pear install -a -B horde/passwd
A l'heure actuelle, ça ne marche pas, mais peut être qu'au moment où vous lisez ça, passwd est réellement porté pour horde 5.
Installer passwd
Sork n'est pas encore disponible officiellement pour horde 5 et si vous tentez de l'installer, via Pear, vous aurez la sortie en erreur suivante:
root@mail:/# pear install -a -B horde/passwd horde/passwd requires package "horde/horde" (version >= 4.0.0, version <= 5.0.0, excluded versions: 5.0.0), installed version is 5.0.2 horde/passwd requires package "horde/Horde_Auth" (version >= 1.4.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_Core" (version >= 1.3.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.1.0 horde/passwd requires package "horde/Horde_Exception" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_Injector" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_Util" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_View" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_Db" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_Ldap" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.1 horde/passwd requires package "horde/Horde_Vfs" (version >= 1.0.0, version <= 2.0.0, excluded versions: 2.0.0), installed version is 2.0.3 horde/passwd can optionally use PHP extension "com" No valid packages found install failed
Je vais vous expliquer comment je me suis dépatouillé pour l'installer quand même. On va utiliser git. Cependant il va falloir adapter le code pour la nouvelle version de horde.
Télécharger le module passwd (via git)
J'ai honte, je ne sais pas comment télécharger uniquement un sous dossier d'un dépot git, du coup, sur mon ordinateur (et pas le serveur), j'ai fait:
git clone https://github.com/horde/horde.git
Il a téléchargé tout le code de horde. Il vous faut pousser uniquement le sous dossier "passwd" sur le serveur, dans le répertoire d'installation de horde 5.
Une fois installé et paramétré (on verra plus loin), la modification des mots de passe ne fonctionnera pas. on va faire une modification dans son code préalablement)
Petite modification du module passwd
Editez le fichier passwd/index.php et vers la ligne 88. Repérez le morceau suivant:
try { Horde_Auth::checkPasswordPolicy($new_password0, $password_policy); } catch (Horde_Auth_Exception $e) { $notification->push($e->getMessage(), 'horde.warning'); goto proceed; }
c'est ça qui fait "planter" passwd.
Remplacez le par ce code de mon cru, qui refusera un mot de passe de moins de 7 caractères:
$notification->push(_("Your new password must have more than 6 characters"), 'horde.warning'); goto proceed; }
Remplacez le fichier passwd/js/passwd.js par celui-ci:
document.observe('dom:loaded', function() { $('passwd-submit').observe('click', function(e) { if (!$F('passwd-oldpassword')) { alert(Passwd.current_pass); $('passwd-oldpassword').focus(); e.stop(); return; } if (!$F('passwd-newpassword0')) { alert(Passwd.new_pass); $('passwd-newpassword0').focus(); e.stop(); return; } if (!$F('passwd-newpassword1')) { alert(Passwd.verify_pass); $('passwd-newpassword1').focus(); e.stop(); return; } if ($F('passwd-newpassword0') != $F('passwd-newpassword1')) { alert(Passwd.no_match); $('passwd-newpassword0').focus(); e.stop(); return; } if ($F('passwd-newpassword0').length < 7) { alert('Password too short'); $('passwd-newpassword0').focus(); e.stop(); return; } }.bindAsEventListener()); });
J'ai simplement ajouté à la fin le test sur la longueur de la chaîne.
Configurer les backends
Editez le fichier passwd/config/backends.php
- Dans l'array $backends['hordesql'], Mettez 'disabled' => true,
- Puis allez bien plus bas éditer le tableau $backends['postfixadmin']
Comme quoi, la structure des bases de données de mon serveur n'est pas si marginale: Ils l'ont prévu dans le backend. Passez le disabled à false et adaptez les parametres des connexion à votre base de données postfix:
'disabled' => false, 'name' => 'Postfix Admin server', 'preferred' => '', 'minLength' => 6, 'maxLength' => 20, 'minNumeric' => 1, ), 'driver' => 'Sql', 'phptype' => 'mysql', 'hostspec' => 'localhost', 'username' => 'horde', 'password' => 'opazeu:/2;A3558/mljkmjioey', 'encryption' => 'md5-hex', 'database' => 'postfix', 'table' => 'mailbox', 'user_col' => 'username', 'pass_col' => 'password', 'show_encryption' => false, // The following two settings allow you to specify custom queries for // lookup and modify functions if special functions need to be // performed. In places where a username or a password needs to be // used, refer to this placeholder reference: // %d -> gets substituted with the domain // %u -> gets substituted with the user // %U -> gets substituted with the user without a domain part // %p -> gets substituted with the plaintext password // %e -> gets substituted with the encrypted password // 'query_lookup' => 'SELECT password FROM mailbox WHERE username = %u and active = 1', 'query_modify' => 'UPDATE mailbox SET password = %e WHERE username = %u' ), );
Activer passwd
- Allez dans la petite roue qui symbolise les parametres> administration Configuration.
- Cliquez sur "Mot de passe (passwd) 5.0-git" pour charger sa configuration
Je vous conseille de décocher $conf[user][change] afin que les utilisateurs ne puissent pas changer leur identifiant (et par là même leur adresse e-mail).
Validez, C'est prêt, je vous conseille cependant de tester avec un compte test et pas le seul compte administrateur que vous avez ;)
Commentaires
Hello,
J'ai été confronté au même problème du bug
En fait il s'agit simplement du nom de variable qui est incorrecte
Dans le fichier Basic.php (et non index.php)
Il faut remplacer la ligne
Horde_Auth::checkPasswordPolicy($new_password0, $password_policy);
par
Horde_Auth::checkPasswordPolicy($newpassword0, $password_policy);
Et le soucis sera résolu :-)
JF, je teste ça dès que possible! et je corrigerai le billet. Merci beaucoup pour cette info