diff --git a/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php b/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php index c3c72aeb..f5f6dc8f 100644 --- a/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php +++ b/trunk/conf/LSobjects/config.LSobjects.LSeepeople.php @@ -257,7 +257,8 @@ $GLOBALS['LSobjects']['LSeepeople'] = array ( 'required' => 1, 'check_data' => array ( 'email' => array( - 'msg' => _("L'adresse e-mail entrée n'est pas valide.") + 'msg' => _("L'adresse e-mail entrée n'est pas valide."), + 'param' => array('checkDomain' => false) ), ), 'rights' => array( @@ -293,100 +294,6 @@ $GLOBALS['LSobjects']['LSeepeople'] = array ( 'Mlle' => 'Mlle' ) ), - 'maildrop' => array ( - 'label' => _('Mail indésirable'), - 'ldap_type' => 'ascii', - 'html_type' => 'text', - 'multiple' => true, - 'check_data' => array ( - 'email' => array( - 'msg' => _("L'adresse e-mail entrée n'est pas valide.") - ), - ), - 'rights' => array( - 'self' => 'w', - 'admin' => 'w' - ), - 'view' => 1, - 'form' => array ( - 'modify' => 1, - ) - ), - 'vacationActive' => array ( - 'label' => _('Réponse automatique'), - 'ldap_type' => 'ascii', - 'html_type' => 'select_list', - 'default_value' => '', - 'check_data' => array ( - 'email' => array( - 'msg' => _("L'adresse e-mail entrée n'est pas valide.") - ), - ), - 'rights' => array( - 'self' => 'w', - 'admin' => 'w', - 'user' => 'r' - ), - 'view' => 1, - 'form' => array ( - 'modify' => 1, - ), - 'possible_values' => array( - '' => 'Non', - '%{uid}@autoreponse.example.fr' => 'Oui' - ) - ), - 'vacationInfo' => array ( - 'label' => _('Message en reponse'), - 'ldap_type' => 'ascii', - 'html_type' => 'textarea', - 'multiple' => true, - 'rights' => array( - 'self' => 'w', - 'admin' => 'w' - ), - 'view' => 1, - 'form' => array ( - 'modify' => 1, - ) - ), - 'vacationForward' => array ( - 'label' => _('Transfert de mail'), - 'ldap_type' => 'ascii', - 'html_type' => 'text', - 'check_data' => array ( - 'email' => array( - 'msg' => _("L'adresse e-mail entrée n'est pas valide.") - ), - ), - 'rights' => array( - 'self' => 'w', - 'user' => 'r', - 'admin' => 'w' - ), - 'view' => 1, - 'form' => array ( - 'modify' => 1, - ) - ), - 'mailQuota' => array ( - 'label' => _('Quota boite mail'), - 'ldap_type' => 'ascii', - 'html_type' => 'text', - 'check_data' => array ( - 'numeric' => array( - 'msg' => _("Le quota de l'adresse mail entrée n'est pas valide.") - ), - ), - 'rights' => array( - 'self' => 'r', - 'admin' => 'w' - ), - 'view' => 1, - 'form' => array ( - 'modify' => 1, - ) - ), 'description' => array ( 'label' => _('Description'), 'ldap_type' => 'ascii', @@ -423,7 +330,21 @@ $GLOBALS['LSobjects']['LSeepeople'] = array ( ), 'form' => array ( 'modify' => 1, - 'create' => 1 + 'create' => 1, + 'lostPassword' => 1 + ) + ), + 'lsRecoveryHash' => array ( + 'label' => _('Hash de recouvrement du mot de passe'), + 'ldap_type' => 'ascii', + 'html_type' => 'text', + 'required' => 0, + 'form' => array ( + 'lostPassword' => 1 + ), + 'rights' => array( + 'self' => 'w', + 'admin' => 'w' ) ), 'sambaLMPassword' => array ( diff --git a/trunk/conf/config.error_code.php b/trunk/conf/config.error_code.php index eb37f6f2..968a84f6 100644 --- a/trunk/conf/config.error_code.php +++ b/trunk/conf/config.error_code.php @@ -43,11 +43,11 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 4 => array ( - 'msg' => _("LSldap : Erreur durant la récupération de l'entrée Ldap."), + 'msg' => _("LSldap : Erreur durant la récupération de l'entrée Ldap."), 'level' => 'c' ), 5 => array ( - 'msg' => _("LSldap : Erreur durant la mise à jour de l'entrée Ldap (DN : %{dn})."), + 'msg' => _("LSldap : Erreur durant la mise à jour de l'entrée Ldap (DN : %{dn})."), 'level' => 'c' ), 6 => array ( @@ -73,43 +73,43 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 25 => array ( - 'msg' => _("LSldapObject : Des données de configuration sont manquant pour la validation de l'attribut %{attr} de l'objet %{obj}."), + 'msg' => _("LSldapObject : Des données de configuration sont manquant pour la validation de l'attribut %{attr} de l'objet %{obj}."), 'level' => 'c' ), 26 => array ( - 'msg' => _("LSldapObject : Erreur de configuration : L'objet %{obj} ne possède pas d'attribut %{attr}."), + 'msg' => _("LSldapObject : Erreur de configuration : L'objet %{obj} ne possède pas d'attribut %{attr}."), 'level' => 'c' ), 27 => array ( - 'msg' => _("LSldapObject : La fonction %{func} devant être executée avant l'enregistrement n'existe pas."), + 'msg' => _("LSldapObject : La fonction %{func} devant être executée avant l'enregistrement n'existe pas."), 'level' => 'c' ), 28 => array ( - 'msg' => _("LSldapObject : L'execution de la fonction %{func} devant être executée avant l'enregistrement a échouée."), + 'msg' => _("LSldapObject : L'execution de la fonction %{func} devant être executée avant l'enregistrement a échouée."), 'level' => 'c' ), 29 => array ( - 'msg' => _("LSldapObject : La fonction %{func} devant être executée après l'enregistrement n'existe pas."), + 'msg' => _("LSldapObject : La fonction %{func} devant être executée après l'enregistrement n'existe pas."), 'level' => 'c' ), 30 => array ( - 'msg' => _("LSldapObject : L'execution de la fonction %{func} devant être executée après l'enregistrement a échouée."), + 'msg' => _("LSldapObject : L'execution de la fonction %{func} devant être executée après l'enregistrement a échouée."), 'level' => 'c' ), 31 => array ( - 'msg' => _("LSldapObject : Il manque des informations de configuration du type d'objet %{obj} pour la création du nouveau DN."), + 'msg' => _("LSldapObject : Il manque des informations de configuration du type d'objet %{obj} pour la création du nouveau DN."), 'level' => 'c' ), 32 => array ( - 'msg' => _("LSldapObject : L'attribut %{attr} de l'objet n'est pas encore définis. Il est impossible de generer un nouveau DN."), + 'msg' => _("LSldapObject : L'attribut %{attr} de l'objet n'est pas encore définis. Il est impossible de generer un nouveau DN."), 'level' => 'c' ), 33 => array ( - 'msg' => _("LSldapObject : Sans DN, l'objet n'a put être modifié."), + 'msg' => _("LSldapObject : Sans DN, l'objet n'a put être modifié."), 'level' => 'c' ), 34 => array ( - 'msg' => _("LSldapObject : L'attribut %{attr_depend} dépendant de l'attribut %{attr} n'existe pas."), + 'msg' => _("LSldapObject : L'attribut %{attr_depend} dépendant de l'attribut %{attr} n'existe pas."), 'level' => 'w' ), 35 => array ( @@ -127,11 +127,11 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 43 => array ( - 'msg' => _("LSattribute : La règle %{rule} pour valider l'attribut %{attr} est inconnue."), + 'msg' => _("LSattribute : La règle %{rule} pour valider l'attribut %{attr} est inconnue."), 'level' => 'c' ), 44 => array ( - 'msg' => _("LSattribute : Les données de configuration pour vérifié l'attribut %{attr} sont incorrects."), + 'msg' => _("LSattribute : Les données de configuration pour vérifié l'attribut %{attr} sont incorrects."), 'level' => 'c' ), 45 => array ( @@ -139,43 +139,43 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 46 => array ( - 'msg' => _("LSattribute : La valeur de l'attribut %{attr} ne peut pas être générée."), + 'msg' => _("LSattribute : La valeur de l'attribut %{attr} ne peut pas être générée."), 'level' => 'c' ), 47 => array ( - 'msg' => _("LSattribute : La valeur de l'attribut %{attr} n'a pas put être générée."), + 'msg' => _("LSattribute : La valeur de l'attribut %{attr} n'a pas put être générée."), 'level' => 'c' ), 48 => array ( - 'msg' => _("LSattribute : La génération de l'attribut %{attr} n'a pas retourné une valeur correcte."), + 'msg' => _("LSattribute : La génération de l'attribut %{attr} n'a pas retourné une valeur correcte."), 'level' => 'c' ), // LSattr_html 101 => array ( - 'msg' => _("LSattr_html : La fonction addToForm() du type html de l'attribut %{attr} n'est pas définie."), + 'msg' => _("LSattr_html : La fonction addToForm() du type html de l'attribut %{attr} n'est pas définie."), 'level' => 'c' ), 102 => array ( - 'msg' => _("LSattr_html_select_list : Des données de configuration sont manquante pour la génération de la liste deroulante de l'attribut %{attr}."), + 'msg' => _("LSattr_html_select_list : Des données de configuration sont manquante pour la génération de la liste deroulante de l'attribut %{attr}."), 'level' => 'c' ), 103 => array ( - 'msg' => _("LSattr_html_%{type} : Les données multiples ne sont pas gérés pour ce type d'attribut."), + 'msg' => _("LSattr_html_%{type} : Les données multiples ne sont pas gérés pour ce type d'attribut."), 'level' => 'c' ), // LSform 201 => array( - 'msg' => _("LSform : Erreur durant la recupération des valeurs du formulaire."), + 'msg' => _("LSform : Erreur durant la recupération des valeurs du formulaire."), 'level' => 'c' ), 202 => array( - 'msg' => _("LSform : Erreur durant la récupération de la valeur du formulaire du champ '%{element}'."), + 'msg' => _("LSform : Erreur durant la récupération de la valeur du formulaire du champ '%{element}'."), 'level' => 'c' ), 203 => array( - 'msg' => _("LSform : Les données du champ %{element} ne sont pas valides."), + 'msg' => _("LSform : Les données du champ %{element} ne sont pas valides."), 'level' => 'c' ), 204 => array( @@ -187,16 +187,16 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 206 => array( - 'msg' => _("LSform : Erreur durant la création de l'élement '%{element}'."), + 'msg' => _("LSform : Erreur durant la création de l'élement '%{element}'."), 'level' => 'c' ), 207 => array( - 'msg' => _("LSform : Aucune valeur de rentrée pour le champs '%{element}'."), + 'msg' => _("LSform : Aucune valeur de rentrée pour le champs '%{element}'."), 'level' => 'c' ), 301 => array( - 'msg' => _("LSformRule : Aucune regex n'a été fournis pour la validation des données."), + 'msg' => _("LSformRule : Aucune regex n'a été fournis pour la validation des données."), 'level' => 'w' ), @@ -208,15 +208,15 @@ $GLOBALS['LSerror_code'] = array ( // LSsession 1001 => array ( - 'msg' => _("LSsession : La constante %{const} n'est pas définie."), + 'msg' => _("LSsession : La constante %{const} n'est pas définie."), 'level' => 'c' ), 1002 => array ( - 'msg' => _("LSsession : Le support %{addon} n'est pas assuré. Vérifier la compatibilité du système et la configuration de l'addon"), + 'msg' => _("LSsession : Le support %{addon} n'est pas assuré. Vérifier la compatibilité du système et la configuration de l'addon"), 'level' => 'c' ), 1003 => array ( - 'msg' => _("LSsession : Données de configuration du serveur LDAP invalide. Impossible d'établir une connexion."), + 'msg' => _("LSsession : Données de configuration du serveur LDAP invalide. Impossible d'établir une connexion."), 'level' => 'c' ), 1004 => array ( @@ -232,7 +232,7 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 1007 => array ( - 'msg' => _("LSsession : Impossible de vous identifier : Duplication d'authentité."), + 'msg' => _("LSsession : Impossible de vous identifier : Duplication d'authentité."), 'level' => 'c' ), 1008 => array ( @@ -248,7 +248,7 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 1011 => array ( - 'msg' => _("LSsession : Vous n'êtes pas authorisé à effectuer cette action."), + 'msg' => _("LSsession : Vous n'êtes pas authorisé à effectuer cette action."), 'level' => 'c' ), 1012 => array ( @@ -260,7 +260,7 @@ $GLOBALS['LSerror_code'] = array ( 'level' => 'c' ), 1014 => array ( - 'msg' => _("LSrelations : La fonction de mise à jour pour la relation %{relation} est inconnu."), + 'msg' => _("LSrelations : La fonction de mise à jour pour la relation %{relation} est inconnu."), 'level' => 'c' ), 1015 => array ( @@ -274,6 +274,18 @@ $GLOBALS['LSerror_code'] = array ( 1017 => array ( 'msg' => _("LSsession : Impossible de créer correctement la liste des niveaux. Vérifier la configuration."), 'level' => 'c' + ), + 1018 => array ( + 'msg' => _("LSsession : La récupération de mot de passe est désactivée pour ce serveur LDAP."), + 'level' => 'c' + ), + 1019 => array ( + 'msg' => _("LSsession : Des informations sont manquantes pour la récupération de votre mot de passe. Contactez l'administrateur du système."), + 'level' => 'c' + ), + 1020 => array ( + 'msg' => _("LSsession : Erreur durant la récupération de votre mot de passe. Contactez l'administrateur du système."), + 'level' => 'c' ) ); ?> diff --git a/trunk/conf/config.inc.php b/trunk/conf/config.inc.php index 546b8340..db231479 100644 --- a/trunk/conf/config.inc.php +++ b/trunk/conf/config.inc.php @@ -34,7 +34,7 @@ $GLOBALS['LSconfig'] = array( 'port' => 389, 'version' => 3, 'starttls' => false, - 'binddn' => 'uid=eeggs,ou=people,o=ls', + 'binddn' => 'uid=ldapsaisie,ou=sysaccounts,o=ls', 'bindpw' => 'toto', 'basedn' => 'o=ls', 'options' => array(), @@ -55,6 +55,21 @@ $GLOBALS['LSconfig'] = array( 'cacheLSrights' => false, 'authobject' => 'LSeepeople', 'authobject_pwdattr' => 'userPassword', + 'recoverPassword' => array( + 'mailAttr' => 'mail', + 'passwordAttr' => 'userPassword', + 'recoveryHashAttr' => 'lsRecoveryHash', + 'recoveryEmailSender' => 'noreply-recover@lsexample.net', + 'recoveryHashMail' => array( + 'subject' => 'LSexample : Récupération de votre mot de passe.', + 'msg' => "Pour poursuivre le processus de récupération de votre mot de passe,\nmerci de cliquer de vous rendre à l'adresse suivante :\n%{url}" + ), + 'newPasswordMail' => array( + 'subject' => 'LSexample : Votre nouveau mot de passe.', + 'msg' => "Votre nouveau mot de passe : %{mdp}" + ) + ), + 'emailSender' => 'noreply@lsexample.net', 'LSobjects' => array ( 'LSeepeople', 'LSeegroup', diff --git a/trunk/includes/class/class.LSform.php b/trunk/includes/class/class.LSform.php index ab5d91aa..ec2fac2b 100644 --- a/trunk/includes/class/class.LSform.php +++ b/trunk/includes/class/class.LSform.php @@ -266,6 +266,35 @@ class LSform { return; } + /** + * Défini arbitrairement des données en POST + * + * @author Benjamin Renard + * + * @param[in] $data array('attr' => array(values)) Tableau des données du formulaire + * @param[in] $consideredAsSubmit Définie si on force le formualaire comme envoyer + * + * @retval boolean true si les données ont été définies, false sinon + */ + function setPostData($data,$consideredAsSubmit=false) { + if (is_array($data)) { + foreach($data as $key => $values) { + if (!is_array($values)) { + $values = array($values); + } + $_POST[$key] = $values; + } + + if ($consideredAsSubmit) { + $_POST['validate']='LSform'; + $_POST['idForm']=$this -> idForm; + } + + return true; + } + return; + } + /** * Récupère les valeurs postées dans le formulaire * diff --git a/trunk/includes/class/class.LSformElement_password.php b/trunk/includes/class/class.LSformElement_password.php index 971611bb..b6661af8 100644 --- a/trunk/includes/class/class.LSformElement_password.php +++ b/trunk/includes/class/class.LSformElement_password.php @@ -96,7 +96,7 @@ class LSformElement_password extends LSformElement { } else { if (empty($this -> values)) { - $return['html'] = _('Aucunes valeur definie'); + $return['html'] = _('Aucune valeur definie'); } else { $return['html'] = "********"; @@ -107,25 +107,7 @@ class LSformElement_password extends LSformElement { } function generatePassword() { - if (isset($this -> params['html_options']['chars'])) { - $chars=$this -> params['html_options']['chars']; - } - else { - $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'; - } - $nbChars=strlen($chars); - - if (isset($this -> params['html_options']['lenght'])) { - $lenght=$this -> params['html_options']['lenght']; - } - else { - $lenght=8; - } - $retVal=''; - for($i=0;$i<$lenght;$i++){ - $retVal.=$chars[rand(0,$nbChars-1)]; - } - return $retVal; + return generatePassword($this -> params['html_options']['chars'],$this -> params['html_options']['lenght']); } } diff --git a/trunk/includes/class/class.LSformElement_text.php b/trunk/includes/class/class.LSformElement_text.php index 0032e7fb..ca362ddb 100644 --- a/trunk/includes/class/class.LSformElement_text.php +++ b/trunk/includes/class/class.LSformElement_text.php @@ -59,7 +59,7 @@ class LSformElement_text extends LSformElement { else { $return['html'] = "