horde 5 passwd

passwd.png "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:

  1. 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:

  1. 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:

  1. try {
  2. Horde_Auth::checkPasswordPolicy($new_password0, $password_policy);
  3. } catch (Horde_Auth_Exception $e) {
  4. $notification->push($e->getMessage(), 'horde.warning');
  5. goto proceed;
  6. }

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:

  1. if ((strlen($new_password0)) < 7) {
  2. $notification->push(_("Your new password must have more than 6 characters"), 'horde.warning');
  3. goto proceed;
  4. }

Remplacez le fichier passwd/js/passwd.js par celui-ci:

  1. document.observe('dom:loaded', function() {
  2. $('passwd-submit').observe('click', function(e) {
  3. if (!$F('passwd-oldpassword')) {
  4. alert(Passwd.current_pass);
  5. $('passwd-oldpassword').focus();
  6. e.stop();
  7. return;
  8. }
  9. if (!$F('passwd-newpassword0')) {
  10. alert(Passwd.new_pass);
  11. $('passwd-newpassword0').focus();
  12. e.stop();
  13. return;
  14. }
  15. if (!$F('passwd-newpassword1')) {
  16. alert(Passwd.verify_pass);
  17. $('passwd-newpassword1').focus();
  18. e.stop();
  19. return;
  20. }
  21. if ($F('passwd-newpassword0') != $F('passwd-newpassword1')) {
  22. alert(Passwd.no_match);
  23. $('passwd-newpassword0').focus();
  24. e.stop();
  25. return;
  26. }
  27. if ($F('passwd-newpassword0').length < 7) {
  28. alert('Password too short');
  29. $('passwd-newpassword0').focus();
  30. e.stop();
  31. return;
  32. }
  33. }.bindAsEventListener());
  34. });

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:

  1. $backends['postfixadmin'] = array (
  2. 'disabled' => false,
  3. 'name' => 'Postfix Admin server',
  4. 'preferred' => '',
  5. 'policy' => array(
  6. 'minLength' => 6,
  7. 'maxLength' => 20,
  8. 'minNumeric' => 1,
  9. ),
  10. 'driver' => 'Sql',
  11. 'params' => array(
  12. 'phptype' => 'mysql',
  13. 'hostspec' => 'localhost',
  14. 'username' => 'horde',
  15. 'password' => 'opazeu:/2;A3558/mljkmjioey',
  16. 'encryption' => 'md5-hex',
  17. 'database' => 'postfix',
  18. 'table' => 'mailbox',
  19. 'user_col' => 'username',
  20. 'pass_col' => 'password',
  21. 'show_encryption' => false,
  22. // The following two settings allow you to specify custom queries for
  23. // lookup and modify functions if special functions need to be
  24. // performed. In places where a username or a password needs to be
  25. // used, refer to this placeholder reference:
  26. // %d -> gets substituted with the domain
  27. // %u -> gets substituted with the user
  28. // %U -> gets substituted with the user without a domain part
  29. // %p -> gets substituted with the plaintext password
  30. // %e -> gets substituted with the encrypted password
  31. //
  32. 'query_lookup' => 'SELECT password FROM mailbox WHERE username = %u and active = 1',
  33. 'query_modify' => 'UPDATE mailbox SET password = %e WHERE username = %u'
  34. ),
  35. );

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). horde-passwd1.png

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

1. Le jeudi, mars 14 2013, 15:14 par Jf

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 :-)

2. Le jeudi, mars 14 2013, 15:24 par gnieark

JF, je teste ça dès que possible! et je corrigerai le billet. Merci beaucoup pour cette info

Page top