mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-22 18:09:06 +01:00
- Ajout d'un module de récupération de mot de passe (Feature Requests #1662)
- Externalisation de la fonction generatePassword() - LSform : ajout de la méthode setPostData() - LSsession_login.js : externalisation du code pour masque la sélection du niveau - LSformRule : externalisation de la fonction checkMail() - debug : gestion de l'affichage de dump d'objet - Mise à jour de LSexample
This commit is contained in:
parent
7d9399bffe
commit
1c2991bc5b
20 changed files with 750 additions and 1010 deletions
|
@ -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 (
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -266,6 +266,35 @@ class LSform {
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini arbitrairement des données en POST
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*
|
||||
* @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
|
||||
*
|
||||
|
|
|
@ -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']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ class LSformElement_text extends LSformElement {
|
|||
else {
|
||||
$return['html'] = "<ul class='LSform'>\n";
|
||||
if (empty($this -> values)) {
|
||||
$return['html'] .= "<li>"._('Aucunes valeur definie')."</li>\n";
|
||||
$return['html'] .= "<li>"._('Aucune valeur definie')."</li>\n";
|
||||
}
|
||||
else {
|
||||
foreach ($this -> values as $value) {
|
||||
|
|
|
@ -57,7 +57,7 @@ class LSformElement_textarea extends LSformElement {
|
|||
}
|
||||
else {
|
||||
if (empty($this -> values)) {
|
||||
$return['html'].="<li class='LSform'>"._('Aucunes valeur definie')."</li>\n";
|
||||
$return['html'].="<li class='LSform'>"._('Aucune valeur definie')."</li>\n";
|
||||
}
|
||||
else {
|
||||
foreach ($this -> values as $value) {
|
||||
|
|
|
@ -38,20 +38,7 @@ class LSformRule_email extends LSformRule {
|
|||
* @return boolean true si la valeur est valide, false sinon
|
||||
*/
|
||||
function validate($value,$option=array(),$formElement) {
|
||||
$regex = '/^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/';
|
||||
|
||||
if (!preg_match($regex, $value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($option['params']['checkDomain'] && function_exists('checkdnsrr')) {
|
||||
$tokens = explode('@', $email);
|
||||
if (!(checkdnsrr($tokens[1], 'MX') || checkdnsrr($tokens[1], 'A'))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return checkEmail($value,$option['param']['checkDomain']);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ define('LS_DEFAULT_CONF_DIR','conf');
|
|||
/**
|
||||
* Gestion des sessions
|
||||
*
|
||||
* Cette classe gère les sessions d'utilisateurs.
|
||||
* Cette classe gère les sessions d'utilisateurs.
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*/
|
||||
|
@ -67,11 +67,11 @@ class LSsession {
|
|||
/**
|
||||
* Chargement de la configuration
|
||||
*
|
||||
* Chargement des fichiers de configuration et création de l'objet Smarty.
|
||||
* Chargement des fichiers de configuration et création de l'objet Smarty.
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*
|
||||
* @retval true si tout c'est bien passé, false sinon
|
||||
* @retval true si tout c'est bien passé, false sinon
|
||||
*/
|
||||
function loadConfig() {
|
||||
if (loadDir($this -> confDir, '^config\..*\.php$')) {
|
||||
|
@ -93,11 +93,11 @@ class LSsession {
|
|||
/**
|
||||
* Initialisation de la gestion des erreurs
|
||||
*
|
||||
* Création de l'objet LSerror
|
||||
* Création de l'objet LSerror
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com
|
||||
*
|
||||
* @retval boolean true si l'initialisation a réussi, false sinon.
|
||||
* @retval boolean true si l'initialisation a réussi, false sinon.
|
||||
*/
|
||||
function startLSerror() {
|
||||
if(!$this -> loadLSclass('LSerror'))
|
||||
|
@ -109,12 +109,12 @@ class LSsession {
|
|||
/**
|
||||
* Chargement d'une classe d'LdapSaisie
|
||||
*
|
||||
* @param[in] $class Nom de la classe à charger (Exemple : LSeepeople)
|
||||
* @param[in] $type (Optionnel) Type de classe à charger (Exemple : LSobjects)
|
||||
* @param[in] $class Nom de la classe à charger (Exemple : LSeepeople)
|
||||
* @param[in] $type (Optionnel) Type de classe à charger (Exemple : LSobjects)
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com
|
||||
*
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
*/
|
||||
function loadLSclass($class,$type='') {
|
||||
if (class_exists($class))
|
||||
|
@ -127,9 +127,9 @@ class LSsession {
|
|||
/**
|
||||
* Chargement d'un object LdapSaisie
|
||||
*
|
||||
* @param[in] $object Nom de l'objet à charger
|
||||
* @param[in] $object Nom de l'objet à charger
|
||||
*
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
*/
|
||||
function loadLSobject($object) {
|
||||
$this -> loadLSclass('LSldapObject');
|
||||
|
@ -148,7 +148,7 @@ class LSsession {
|
|||
* Chargement des LSobjects contenue dans la variable
|
||||
* $this -> ldapServer['LSobjects']
|
||||
*
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
*/
|
||||
function loadLSobjects() {
|
||||
|
||||
|
@ -170,11 +170,11 @@ class LSsession {
|
|||
/**
|
||||
* Chargement d'un addons d'LdapSaisie
|
||||
*
|
||||
* @param[in] $addon Nom de l'addon à charger (Exemple : samba)
|
||||
* @param[in] $addon Nom de l'addon à charger (Exemple : samba)
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com
|
||||
*
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
*/
|
||||
function loadLSaddon($addon) {
|
||||
return require_once LS_ADDONS_DIR .'LSaddons.'.$addon.'.php';
|
||||
|
@ -186,7 +186,7 @@ class LSsession {
|
|||
* Chargement des LSaddons contenue dans la variable
|
||||
* $GLOBALS['LSaddons']['loads']
|
||||
*
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
* @retval boolean true si le chargement a réussi, false sinon.
|
||||
*/
|
||||
function loadLSaddons() {
|
||||
if(!is_array($GLOBALS['LSaddons']['loads'])) {
|
||||
|
@ -207,19 +207,19 @@ class LSsession {
|
|||
* Initialisation de la session LdapSaisie
|
||||
*
|
||||
* Initialisation d'une LSsession :
|
||||
* - Authentification et activation du mécanisme de session de LdapSaisie
|
||||
* - ou Chargement des paramètres de la session à partir de la variable
|
||||
* - Authentification et activation du mécanisme de session de LdapSaisie
|
||||
* - ou Chargement des paramètres de la session à partir de la variable
|
||||
* $_SESSION['LSsession'].
|
||||
* - ou Destruction de la session en cas de $_GET['LSsession_logout'].
|
||||
*
|
||||
* @retval boolean True si l'initialisation à réussi (utilisateur authentifié), false sinon.
|
||||
* @retval boolean True si l'initialisation à réussi (utilisateur authentifié), false sinon.
|
||||
*/
|
||||
function startLSsession() {
|
||||
$this -> loadLSaddons();
|
||||
session_start();
|
||||
|
||||
// Déconnexion
|
||||
if (isset($_GET['LSsession_logout'])) {
|
||||
// Déconnexion
|
||||
if (isset($_GET['LSsession_logout'])||isset($_GET['LSsession_recoverPassword'])) {
|
||||
session_destroy();
|
||||
|
||||
if (is_array($_SESSION['LSsession']['tmp_file'])) {
|
||||
|
@ -229,6 +229,10 @@ class LSsession {
|
|||
unset($_SESSION['LSsession']);
|
||||
}
|
||||
|
||||
// Récupération de mot de passe
|
||||
if (isset($_GET['recoveryHash'])) {
|
||||
$_POST['LSsession_user'] = 'a determiner plus tard';
|
||||
}
|
||||
|
||||
if(isset($_SESSION['LSsession'])) {
|
||||
// Session existante
|
||||
|
@ -272,6 +276,7 @@ class LSsession {
|
|||
}
|
||||
else {
|
||||
// Session inexistante
|
||||
$recoveryPasswordInfos=array();
|
||||
|
||||
if (isset($_POST['LSsession_user'])) {
|
||||
if (isset($_POST['LSsession_ldapserver'])) {
|
||||
|
@ -297,20 +302,165 @@ class LSsession {
|
|||
|
||||
if ( $this -> loadLSobject($this -> ldapServer['authobject']) ) {
|
||||
$authobject = new $this -> ldapServer['authobject']();
|
||||
$find=true;
|
||||
if (isset($_GET['recoveryHash'])) {
|
||||
$filter=$this -> ldapServer['recoverPassword']['recoveryHashAttr']."=".$_GET['recoveryHash'];
|
||||
$result = $authobject -> listObjects($filter,$this -> topDn);
|
||||
$nbresult=count($result);
|
||||
if ($nbresult==1) {
|
||||
$_POST['LSsession_user'] = $result[0] -> getValue('rdn');
|
||||
$find=false;
|
||||
}
|
||||
}
|
||||
if ($find) {
|
||||
$result = $authobject -> searchObject($_POST['LSsession_user'],$this -> topDn);
|
||||
$nbresult=count($result);
|
||||
}
|
||||
if ($nbresult==0) {
|
||||
// identifiant incorrect
|
||||
debug('identifiant incorrect');
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1006);
|
||||
}
|
||||
else if ($nbresult>1) {
|
||||
// duplication d'authentité
|
||||
// duplication d'authentité
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1007);
|
||||
}
|
||||
else {
|
||||
if (isset($_GET['LSsession_recoverPassword'])) {
|
||||
debug('Recover : Id trouvé');
|
||||
if ($this -> ldapServer['recoverPassword']) {
|
||||
debug('Récupération active');
|
||||
$user=$result[0];
|
||||
$emailAddress = $user -> getValue($this -> ldapServer['recoverPassword']['mailAttr']);
|
||||
|
||||
// Header des mails
|
||||
$headers="Content-Type: text/plain; charset=UTF-8; format=flowed";
|
||||
if ($this -> ldapServer['recoverPassword']['recoveryEmailSender']) {
|
||||
$headers.="\nFrom: ".$this -> ldapServer['recoverPassword']['recoveryEmailSender'];
|
||||
}
|
||||
else if($this -> ldapServer['emailSender']) {
|
||||
$headers.="\nFrom: ".$this -> ldapServer['emailSender'];
|
||||
}
|
||||
|
||||
if (checkEmail($emailAddress)) {
|
||||
debug('Email : '.$emailAddress);
|
||||
$this -> dn = $user -> getDn();
|
||||
// 1ère étape : envoie du recoveryHash
|
||||
if (!isset($_GET['recoveryHash'])) {
|
||||
// Generer un hash
|
||||
$recovery_hash = md5($user -> getValue('rdn') . strval(time()) . strval(rand()));
|
||||
|
||||
$lostPasswdForm = $user -> getForm('lostPassword');
|
||||
$lostPasswdForm -> setPostData(
|
||||
array(
|
||||
$this -> ldapServer['recoverPassword']['recoveryHashAttr'] => $recovery_hash
|
||||
)
|
||||
,true
|
||||
);
|
||||
|
||||
if($lostPasswdForm -> validate()) {
|
||||
if ($user -> updateData('lostPassword')) {
|
||||
// recoveryHash de l'utilisateur mis à jour
|
||||
if ($_SERVER['HTTPS']=='on') {
|
||||
$recovery_url='https://';
|
||||
}
|
||||
else {
|
||||
$recovery_url='http://';
|
||||
}
|
||||
$recovery_url .= $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&recoveryHash='.$recovery_hash;
|
||||
|
||||
if (
|
||||
mail(
|
||||
$emailAddress,
|
||||
$this -> ldapServer['recoverPassword']['recoveryHashMail']['subject'],
|
||||
getFData($this -> ldapServer['recoverPassword']['recoveryHashMail']['msg'],$recovery_url),
|
||||
$headers
|
||||
)
|
||||
){
|
||||
// Mail a bien été envoyé
|
||||
$recoveryPasswordInfos['recoveryHashMail']=$emailAddress;
|
||||
}
|
||||
else {
|
||||
// Problème durant l'envoie du mail
|
||||
debug("Problème durant l'envoie du mail");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Erreur durant la mise à jour de l'objet
|
||||
debug("Erreur durant la mise à jour de l'objet");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Erreur durant la validation du formulaire de modification de perte de password
|
||||
debug("Erreur durant la validation du formulaire de modification de perte de password");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
// 2nd étape : génération du mot de passe + envoie par mail
|
||||
else {
|
||||
$attr=$user -> attrs[$this -> ldapServer['recoverPassword']['passwordAttr']];
|
||||
if ($attr instanceof LSattribute) {
|
||||
$mdp = generatePassword($attr -> config['html_options']['chars'],$attr -> config['html_options']['lenght']);
|
||||
debug('Nvx mpd : '.$mdp);
|
||||
$lostPasswdForm = $user -> getForm('lostPassword');
|
||||
$lostPasswdForm -> setPostData(
|
||||
array(
|
||||
$this -> ldapServer['recoverPassword']['recoveryHashAttr'] => array(''),
|
||||
$this -> ldapServer['recoverPassword']['passwordAttr'] => array($mdp)
|
||||
)
|
||||
,true
|
||||
);
|
||||
if($lostPasswdForm -> validate()) {
|
||||
if ($user -> updateData('lostPassword')) {
|
||||
if (
|
||||
mail(
|
||||
$emailAddress,
|
||||
$this -> ldapServer['recoverPassword']['newPasswordMail']['subject'],
|
||||
getFData($this -> ldapServer['recoverPassword']['newPasswordMail']['msg'],$mdp),
|
||||
$headers
|
||||
)
|
||||
){
|
||||
// Mail a bien été envoyé
|
||||
$recoveryPasswordInfos['newPasswordMail']=$emailAddress;
|
||||
}
|
||||
else {
|
||||
// Problème durant l'envoie du mail
|
||||
debug("Problème durant l'envoie du mail");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Erreur durant la mise à jour de l'objet
|
||||
debug("Erreur durant la mise à jour de l'objet");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Erreur durant la validation du formulaire de modification de perte de password
|
||||
debug("Erreur durant la validation du formulaire de modification de perte de password");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// l'attribut password n'existe pas
|
||||
debug("L'attribut password n'existe pas");
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1020);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1019);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1018);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ( $this -> checkUserPwd($result[0],$_POST['LSsession_pwd']) ) {
|
||||
// Authentification réussi
|
||||
// Authentification réussi
|
||||
$this -> LSuserObject = $result[0];
|
||||
$this -> dn = $result[0]->getValue('dn');
|
||||
$this -> rdn = $_POST['LSsession_user'];
|
||||
|
@ -326,6 +476,7 @@ class LSsession {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$GLOBALS['LSerror'] -> addErrorCode(1010);
|
||||
}
|
||||
|
@ -338,15 +489,20 @@ class LSsession {
|
|||
$GLOBALS['Smarty'] -> assign('ldapServerId',$this -> ldapServerId);
|
||||
}
|
||||
$GLOBALS['Smarty'] -> assign('topDn',$this -> topDn);
|
||||
if (isset($_GET['LSsession_recoverPassword'])) {
|
||||
$this -> displayRecoverPasswordForm($recoveryPasswordInfos);
|
||||
}
|
||||
else {
|
||||
$this -> displayLoginForm();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Définition du serveur Ldap de la session
|
||||
* Définition du serveur Ldap de la session
|
||||
*
|
||||
* Définition du serveur Ldap de la session à partir de son ID dans
|
||||
* Définition du serveur Ldap de la session à partir de son ID dans
|
||||
* le tableau $GLOBALS['LSconfig']['ldap_servers'].
|
||||
*
|
||||
* @param[in] integer Index du serveur Ldap
|
||||
|
@ -440,12 +596,12 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Retourne les options d'une liste déroulante pour le choix du topDn
|
||||
* Retourne les options d'une liste déroulante pour le choix du topDn
|
||||
* de connexion au serveur Ldap
|
||||
*
|
||||
* Liste les subdn ($this ->ldapServer['subDn'])
|
||||
*
|
||||
* @retval string Les options (<option>) pour la sélection du topDn.
|
||||
* @retval string Les options (<option>) pour la sélection du topDn.
|
||||
*/
|
||||
function getSubDnLdapServerOptions($selected=NULL) {
|
||||
$list = $this -> getSubDnLdapServer();
|
||||
|
@ -483,9 +639,9 @@ class LSsession {
|
|||
* Test un bind sur le serveur avec le dn de l'objet et le mot de passe fourni.
|
||||
*
|
||||
* @param[in] LSobject L'object "user" pour l'authentification
|
||||
* @param[in] string Le mot de passe à tester
|
||||
* @param[in] string Le mot de passe à tester
|
||||
*
|
||||
* @retval boolean True si l'authentification à réussi, false sinon.
|
||||
* @retval boolean True si l'authentification à réussi, false sinon.
|
||||
*/
|
||||
function checkUserPwd($object,$pwd) {
|
||||
return $GLOBALS['LSldap'] -> checkBind($object -> getValue('dn'),$pwd);
|
||||
|
@ -494,7 +650,7 @@ class LSsession {
|
|||
/**
|
||||
* Affiche le formulaire de login
|
||||
*
|
||||
* Défini les informations pour le template Smarty du formulaire de login.
|
||||
* Défini les informations pour le template Smarty du formulaire de login.
|
||||
*
|
||||
* @retval void
|
||||
*/
|
||||
|
@ -523,12 +679,72 @@ class LSsession {
|
|||
$GLOBALS['Smarty'] -> assign('loginform_label_user',_('Identifiant'));
|
||||
$GLOBALS['Smarty'] -> assign('loginform_label_pwd',_('Mot de passe'));
|
||||
$GLOBALS['Smarty'] -> assign('loginform_label_submit',_('Connexion'));
|
||||
$GLOBALS['Smarty'] -> assign('loginform_label_lostpassword',_('Mot de passe oublié ?'));
|
||||
|
||||
$this -> setTemplate('login.tpl');
|
||||
$this -> addJSscript('LSsession_login.js');
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini le template Smarty à utiliser
|
||||
* Affiche le formulaire de récupération de mot de passe
|
||||
*
|
||||
* Défini les informations pour le template Smarty du formulaire de
|
||||
* récupération de mot de passe
|
||||
*
|
||||
* @param[in] $infos array() Information sur le status du processus de
|
||||
* recouvrement de mot de passe
|
||||
*
|
||||
* @retval void
|
||||
*/
|
||||
function displayRecoverPasswordForm($recoveryPasswordInfos) {
|
||||
$GLOBALS['Smarty'] -> assign('pagetitle',_('Récupération de votre mot de passe'));
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_action','index.php?LSsession_recoverPassword');
|
||||
|
||||
if (count($GLOBALS['LSconfig']['ldap_servers'])==1) {
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_ldapserver_style','style="display: none"');
|
||||
}
|
||||
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_label_ldapserver',_('Serveur LDAP'));
|
||||
$ldapservers_name=array();
|
||||
$ldapservers_index=array();
|
||||
foreach($GLOBALS['LSconfig']['ldap_servers'] as $id => $infos) {
|
||||
$ldapservers_index[]=$id;
|
||||
$ldapservers_name[]=$infos['name'];
|
||||
}
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_ldapservers_name',$ldapservers_name);
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_ldapservers_index',$ldapservers_index);
|
||||
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_label_user',_('Identifiant'));
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_label_submit',_('Valider'));
|
||||
$GLOBALS['Smarty'] -> assign('recoverpasswordform_label_back',_('Retour'));
|
||||
|
||||
if (isset($recoveryPasswordInfos['recoveryHashMail'])) {
|
||||
$GLOBALS['Smarty'] -> assign(
|
||||
'recoverpassword_msg',
|
||||
getFData(
|
||||
_("Un mail vient de vous être envoyé à l'adresse %{mail}. " .
|
||||
"Merci de suivre les indications contenus dans ce mail."),
|
||||
$recoveryPasswordInfos['recoveryHashMail']
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($recoveryPasswordInfos['newPasswordMail'])) {
|
||||
$GLOBALS['Smarty'] -> assign(
|
||||
'recoverpassword_msg',
|
||||
getFData(
|
||||
_("Votre nouveau mot de passe vient de vous être envoyé à l'adresse %{mail}. "),
|
||||
$recoveryPasswordInfos['newPasswordMail']
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$this -> setTemplate('recoverpassword.tpl');
|
||||
$this -> addJSscript('LSsession_recoverpassword.js');
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini le template Smarty à utiliser
|
||||
*
|
||||
* Remarque : les fichiers de templates doivent se trouver dans le dossier
|
||||
* templates/.
|
||||
|
@ -544,9 +760,9 @@ class LSsession {
|
|||
/**
|
||||
* Ajoute un script JS au chargement de la page
|
||||
*
|
||||
* Remarque : les scripts doivents être dans le dossier LS_JS_DIR.
|
||||
* Remarque : les scripts doivents être dans le dossier LS_JS_DIR.
|
||||
*
|
||||
* @param[in] $script Le nom du fichier de script à charger.
|
||||
* @param[in] $script Le nom du fichier de script à charger.
|
||||
*
|
||||
* @retval void
|
||||
*/
|
||||
|
@ -559,9 +775,9 @@ class LSsession {
|
|||
/**
|
||||
* Ajoute une feuille de style au chargement de la page
|
||||
*
|
||||
* Remarque : les scripts doivents être dans le dossiers templates/css/.
|
||||
* Remarque : les scripts doivents être dans le dossiers templates/css/.
|
||||
*
|
||||
* @param[in] $script Le nom du fichier css à charger.
|
||||
* @param[in] $script Le nom du fichier css à charger.
|
||||
*
|
||||
* @retval void
|
||||
*/
|
||||
|
@ -572,7 +788,7 @@ class LSsession {
|
|||
/**
|
||||
* Affiche le template Smarty
|
||||
*
|
||||
* Charge les dépendances et affiche le template Smarty
|
||||
* Charge les dépendances et affiche le template Smarty
|
||||
*
|
||||
* @retval void
|
||||
*/
|
||||
|
@ -631,7 +847,7 @@ class LSsession {
|
|||
/**
|
||||
* Charge les droits LS de l'utilisateur
|
||||
*
|
||||
* @retval boolean True si le chargement à réussi, false sinon.
|
||||
* @retval boolean True si le chargement à réussi, false sinon.
|
||||
**/
|
||||
function loadLSrights() {
|
||||
if (is_array($this -> ldapServer['LSadmins'])) {
|
||||
|
@ -650,11 +866,11 @@ class LSsession {
|
|||
}
|
||||
}
|
||||
else {
|
||||
debug('Impossible de chargé le dn : '.$dn);
|
||||
debug('Impossible de chargé le dn : '.$dn);
|
||||
}
|
||||
}
|
||||
else {
|
||||
debug('Impossible de créer l\'objet de type : '.$conf['LSobject']);
|
||||
debug('Impossible de créer l\'objet de type : '.$conf['LSobject']);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -682,7 +898,7 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Charge les droits d'accès de l'utilisateur pour construire le menu de l'interface
|
||||
* Charge les droits d'accès de l'utilisateur pour construire le menu de l'interface
|
||||
*
|
||||
* @retval void
|
||||
*/
|
||||
|
@ -710,7 +926,7 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Dit si l'utilisateur est admin de le DN spécifié
|
||||
* Dit si l'utilisateur est admin de le DN spécifié
|
||||
*
|
||||
* @param[in] string DN de l'objet
|
||||
*
|
||||
|
@ -729,11 +945,11 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Retourne qui est l'utilisateur par rapport à l'object
|
||||
* Retourne qui est l'utilisateur par rapport à l'object
|
||||
*
|
||||
* @param[in] string Le DN de l'objet
|
||||
*
|
||||
* @retval string 'admin'/'self'/'user' pour Admin , l'utilisateur lui même ou un simple utilisateur
|
||||
* @retval string 'admin'/'self'/'user' pour Admin , l'utilisateur lui même ou un simple utilisateur
|
||||
*/
|
||||
function whoami($dn) {
|
||||
if ($this -> isAdmin($dn)) {
|
||||
|
@ -748,14 +964,14 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Retourne le droit de l'utilisateur à accèder à un objet
|
||||
* Retourne le droit de l'utilisateur à accèder à un objet
|
||||
*
|
||||
* @param[in] string $LSobject Le type de l'objet
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $right Le type de droit d'accès à tester ('r'/'w')
|
||||
* @param[in] string $attr Le nom de l'attribut auquel on test l'accès
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $right Le type de droit d'accès à tester ('r'/'w')
|
||||
* @param[in] string $attr Le nom de l'attribut auquel on test l'accès
|
||||
*
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
*/
|
||||
function canAccess($LSobject,$dn=NULL,$right=NULL,$attr=NULL) {
|
||||
if (!$this -> loadLSobject($LSobject))
|
||||
|
@ -812,49 +1028,49 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Retourne le droit de l'utilisateur à editer à un objet
|
||||
* Retourne le droit de l'utilisateur à editer à un objet
|
||||
*
|
||||
* @param[in] string $LSobject Le type de l'objet
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $attr Le nom de l'attribut auquel on test l'accès
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $attr Le nom de l'attribut auquel on test l'accès
|
||||
*
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
*/
|
||||
function canEdit($LSobject,$dn=NULL,$attr=NULL) {
|
||||
return $this -> canAccess($LSobject,$dn,'w',$attr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le droit de l'utilisateur à supprimer un objet
|
||||
* Retourne le droit de l'utilisateur à supprimer un objet
|
||||
*
|
||||
* @param[in] string $LSobject Le type de l'objet
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
*
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
*/
|
||||
function canRemove($LSobject,$dn) {
|
||||
return $this -> canAccess($LSobject,$dn,'w','rdn');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le droit de l'utilisateur à créer un objet
|
||||
* Retourne le droit de l'utilisateur à créer un objet
|
||||
*
|
||||
* @param[in] string $LSobject Le type de l'objet
|
||||
*
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
*/
|
||||
function canCreate($LSobject) {
|
||||
return $this -> canAccess($LSobject,NULL,'w','rdn');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le droit de l'utilisateur à gérer la relation d'objet
|
||||
* Retourne le droit de l'utilisateur à gérer la relation d'objet
|
||||
*
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $relationName Le nom de la relation avec l'objet
|
||||
* @param[in] string $right Le type de droit a vérifier ('r' ou 'w')
|
||||
* @param[in] string $right Le type de droit a vérifier ('r' ou 'w')
|
||||
*
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
*/
|
||||
function relationCanAccess($dn,$relationName,$right=NULL) {
|
||||
$LSobject=$this -> LSuserObject -> getType();
|
||||
|
@ -876,12 +1092,12 @@ class LSsession {
|
|||
}
|
||||
|
||||
/**
|
||||
* Retourne le droit de l'utilisateur à modifier la relation d'objet
|
||||
* Retourne le droit de l'utilisateur à modifier la relation d'objet
|
||||
*
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $dn Le DN de l'objet (le container_dn du type de l'objet par défaut)
|
||||
* @param[in] string $relationName Le nom de la relation avec l'objet
|
||||
*
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
* @retval boolean True si l'utilisateur a accès, false sinon
|
||||
*/
|
||||
function relationCanEdit($dn,$relationName) {
|
||||
return $this -> relationCanAccess($dn,$relationName,'w');
|
||||
|
@ -922,8 +1138,8 @@ class LSsession {
|
|||
/**
|
||||
* Retourne le chemin du fichier temporaire
|
||||
*
|
||||
* Retourne le chemin du fichier temporaire qu'il créera à partir de la valeur
|
||||
* s'il n'existe pas déjà.
|
||||
* Retourne le chemin du fichier temporaire qu'il créera à partir de la valeur
|
||||
* s'il n'existe pas déjà .
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*
|
||||
|
|
|
@ -112,7 +112,7 @@ function return_data($data) {
|
|||
|
||||
function debug($data,$get=true) {
|
||||
if ($get) {
|
||||
if (is_array($data)) {
|
||||
if (is_array($data)||is_object($data)) {
|
||||
$GLOBALS['LSdebug']['fields'][]=$data;
|
||||
}
|
||||
else {
|
||||
|
@ -126,7 +126,7 @@ function debug_print($return=false) {
|
|||
if (( $GLOBALS['LSdebug']['fields'] ) && ( $GLOBALS['LSdebug']['active'] )) {
|
||||
$txt='<ul>';
|
||||
foreach($GLOBALS['LSdebug']['fields'] as $debug) {
|
||||
if (is_array($debug)) {
|
||||
if (is_array($debug)||is_object($debug)) {
|
||||
$txt.='<li><pre>'.print_r($debug,true).'</pre></li>';
|
||||
}
|
||||
else {
|
||||
|
@ -224,4 +224,39 @@ function debug_print($return=false) {
|
|||
return $basedn;
|
||||
}
|
||||
|
||||
function checkEmail($value,$checkDns=true) {
|
||||
$regex = '/^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/';
|
||||
|
||||
if (!preg_match($regex, $value)) {
|
||||
debug('checkEmail : regex fail');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($checkDns && function_exists('checkdnsrr')) {
|
||||
$tokens = explode('@', $value);
|
||||
if (!(checkdnsrr($tokens[1], 'MX') || checkdnsrr($tokens[1], 'A'))) {
|
||||
debug('checkEmail : DNS fail');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function generatePassword($chars=NULL,$lenght=NULL) {
|
||||
if (!$chars) {
|
||||
$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-';
|
||||
}
|
||||
$nbChars=strlen($chars);
|
||||
|
||||
if (!$lenght) {
|
||||
$lenght=8;
|
||||
}
|
||||
$retVal='';
|
||||
for($i=0;$i<$lenght;$i++){
|
||||
$retVal.=$chars[rand(0,$nbChars-1)];
|
||||
}
|
||||
return $retVal;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -43,6 +43,7 @@ var LSsession_login = new Class({
|
|||
}
|
||||
if (data.LSerror) {
|
||||
varLSdefault.displayError(data.LSerror);
|
||||
this.loginformLevelHide();
|
||||
return;
|
||||
}
|
||||
if (data.list_topDn) {
|
||||
|
@ -53,19 +54,21 @@ var LSsession_login = new Class({
|
|||
});
|
||||
}
|
||||
else {
|
||||
$$('.loginform-level').each(function(el) {
|
||||
el.setStyle('display','none');
|
||||
});
|
||||
this.loginformLevelHide();
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.loginformLevelHide();
|
||||
}
|
||||
this.enableInput();
|
||||
},
|
||||
|
||||
loginformLevelHide: function(){
|
||||
$$('.loginform-level').each(function(el) {
|
||||
el.setStyle('display','none');
|
||||
});
|
||||
$('LSsession_topDn').empty();
|
||||
}
|
||||
this.enableInput();
|
||||
}
|
||||
});
|
||||
window.addEvent(window.ie ? 'load' : 'domready', function() {
|
||||
varLSsession_login = new LSsession_login();
|
||||
|
|
|
@ -33,9 +33,6 @@ if($LSsession -> startLSsession()) {
|
|||
// Template
|
||||
$GLOBALS['LSsession'] -> setTemplate('accueil.tpl');
|
||||
}
|
||||
else {
|
||||
$GLOBALS['LSsession'] -> setTemplate('login.tpl');
|
||||
}
|
||||
|
||||
// Affichage des retours d'erreurs
|
||||
$GLOBALS['LSsession'] -> displayTemplate();
|
||||
|
|
|
@ -1,175 +1,48 @@
|
|||
# Easter-eggs OID: 1.3.6.1.4.1.10650
|
||||
# 1.3.6.1.4.1.10650.2 LDAP OID
|
||||
# 1.3.6.1.4.1.10650.3 Customers OID
|
||||
#
|
||||
# 1.3.6.1.4.1.10650.2.1 Ldap Attributes
|
||||
# 1.3.6.1.4.1.10650.2.1.1 Admin sys Ldap Attributes
|
||||
# 1.3.6.1.4.1.10650.2.1.2 Dev Ldap Attributes
|
||||
# 1.3.6.1.4.1.10650.2.1.3 Global Attributes
|
||||
# 1.3.6.1.4.1.10650.2.2 Ldap Objectclass
|
||||
# 1.3.6.1.4.1.10650.2.2.1 Admin sys Ldap Objectclass
|
||||
# 1.3.6.1.4.1.10650.2.2.2 Dev Ldap Objectclass
|
||||
# 1.3.6.1.4.1.10650.2.2.3 Global OC
|
||||
# LdapSaisie - LDAP Schema - Example
|
||||
# Web Site : http://ldapsaisie.labs.libre-entreprise.org
|
||||
objectIdentifier EeRoot 1.3.6.1.4.1.10650
|
||||
objectIdentifier LeRoot EeRoot:4
|
||||
objectIdentifier LsRoot LeRoot:10000
|
||||
objectIdentifier LsLDAP LsRoot:2
|
||||
objectIdentifier LsLDAPAttribute LsLDAP:1
|
||||
objectIdentifier LsLDAPObjectClass LsLDAP:2
|
||||
|
||||
# Ost
|
||||
# 1.3.6.1.4.1.10650.3.1127.2.1 Ldap attributes
|
||||
# 1.3.6.1.4.1.10650.3.1127.2.2 Ldap OC
|
||||
|
||||
|
||||
# <Ee attributes>
|
||||
attributetype (1.3.6.1.4.1.10650.2.1.1.1
|
||||
NAME 'eeallowedservices'
|
||||
# <Ls attributes>
|
||||
attributetype (LsLDAPAttribute:1
|
||||
NAME 'lsAllowedServices'
|
||||
DESC 'List of allowed services'
|
||||
EQUALITY caseIgnoreMatch
|
||||
SUBSTR caseIgnoreSubstringsMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
|
||||
|
||||
# </Ee attributes>
|
||||
attributetype ( LsLDAPAttribute:2 NAME 'lsRecoveryHash'
|
||||
DESC 'Password Recover Hash'
|
||||
EQUALITY caseIgnoreMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
|
||||
# </Ls attributes>
|
||||
|
||||
# <From qmail schema>
|
||||
attributetype ( 1.3.6.1.4.1.7914.1.2.1.4 NAME 'mailAlternateAddress'
|
||||
SUBSTR caseIgnoreSubstringsMatch
|
||||
DESC 'Secondary (alias) mailaddresses for the same user'
|
||||
EQUALITY caseIgnoreIA5Match
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||
|
||||
attributetype ( 1.3.6.1.4.1.7914.1.2.1.7 NAME 'mailForwardingAddress'
|
||||
DESC 'Address(es) to forward all incoming messages to.'
|
||||
EQUALITY caseIgnoreIA5Match
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||
|
||||
# </From qmail schema>
|
||||
|
||||
# <From courier.schema>
|
||||
attributetype ( 1.3.6.1.4.1.10018.1.1.1 NAME 'mailbox'
|
||||
DESC 'The absolute path to the mailbox for a mail account in a non-default location'
|
||||
EQUALITY caseExactIA5Match
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
|
||||
|
||||
|
||||
attributetype ( 1.3.6.1.4.1.10018.1.1.4 NAME 'maildrop'
|
||||
DESC 'RFC822 Mailbox - mail alias'
|
||||
EQUALITY caseIgnoreIA5Match
|
||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
|
||||
# </From courier.schema>
|
||||
|
||||
# <From postfix>
|
||||
attributetype ( 1.3.6.1.4.1.7914.1.2.1.5 NAME 'mailQuota'
|
||||
DESC 'The amount of space the user can use until all further messages get bounced.'
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
|
||||
SINGLE-VALUE )
|
||||
# </From postfix>
|
||||
|
||||
# <From gnarwl>
|
||||
# Original
|
||||
#attributetype ( 1.3.6.1.4.1.11048.1.1.1.1
|
||||
# NAME 'vacationActive'
|
||||
# SINGLE-VALUE
|
||||
# EQUALITY booleanMatch
|
||||
# DESC 'A flag, for marking the user as being away'
|
||||
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )
|
||||
|
||||
# Ee
|
||||
attributetype ( 1.3.6.1.4.1.11048.1.1.1.1
|
||||
NAME 'vacationActive'
|
||||
SINGLE-VALUE
|
||||
DESC 'Equal to uid@autoreponse.foo.bar, for marking the user as being away'
|
||||
EQUALITY caseIgnoreIA5Match
|
||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
|
||||
|
||||
attributetype ( 1.3.6.1.4.1.11048.1.1.1.3
|
||||
NAME 'vacationInfo'
|
||||
SINGLE-VALUE
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||||
DESC 'Absentee note to leave behind, while on vacation'
|
||||
EQUALITY octetStringMatch )
|
||||
|
||||
attributetype ( 1.3.6.1.4.1.11048.1.1.1.4
|
||||
NAME 'vacationStart'
|
||||
SINGLE-VALUE
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||||
DESC 'Beginning of vacation'
|
||||
EQUALITY octetStringMatch )
|
||||
|
||||
# Original
|
||||
#attributetype ( 1.3.6.1.4.1.11048.1.1.1.5
|
||||
# NAME 'vacationEnd'
|
||||
# SINGLE-VALUE
|
||||
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
|
||||
# DESC 'End of vacation'
|
||||
# EQUALITY octetStringMatch )
|
||||
|
||||
# Ee
|
||||
attributetype ( 1.3.6.1.4.1.11048.1.1.1.5
|
||||
NAME 'vacationEnd'
|
||||
SINGLE-VALUE
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
|
||||
DESC 'End of vacation'
|
||||
ORDERING generalizedTimeOrderingMatch
|
||||
EQUALITY generalizedTimeMatch )
|
||||
|
||||
attributetype (1.3.6.1.4.1.11048.1.1.1.10
|
||||
NAME 'vacationForward'
|
||||
EQUALITY caseIgnoreIA5Match
|
||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
|
||||
DESC 'Where to forward mails to, while on vacation' )
|
||||
|
||||
# </From gnarwl>
|
||||
|
||||
## Objectclasses
|
||||
# LS people
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.1
|
||||
# <Ls Objectclass>
|
||||
objectclass (LsLDAPObjectClass:1
|
||||
NAME 'lspeople'
|
||||
DESC 'LS people Objectclass'
|
||||
STRUCTURAL
|
||||
MUST ( uid $ cn )
|
||||
MAY ( jpegPhoto $ sn $ givenName $ postalAddress $ postalCode $ l $ st $ c $ telephoneNumber $ mobile $ fax $ mail $ mailalternateaddress $ personalTitle $ description $ userPassword $ eeallowedservices $ mailforwardingaddress $ maildrop $ mailquota $ mailbox $ vacationActive $ vacationInfo $ vacationEnd $ vacationForward ))
|
||||
MAY ( jpegPhoto $ sn $ givenName $ postalAddress $ postalCode $ l $ st $ c $
|
||||
telephoneNumber $ mobile $ fax $ mail $ personalTitle $ description $
|
||||
userPassword $ lsallowedservices $ lsRecoveryHash ))
|
||||
|
||||
# LS Alias
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.2
|
||||
NAME 'lsalias'
|
||||
DESC 'LS alias Objectclass'
|
||||
STRUCTURAL
|
||||
MUST ( mail $ maildrop )
|
||||
MAY ( mailalternateaddress $ description ))
|
||||
|
||||
# LS group
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.3
|
||||
objectclass (LsLDAPObjectClass:3
|
||||
NAME 'lsgroup'
|
||||
DESC 'LS group Objectclass'
|
||||
STRUCTURAL
|
||||
MUST ( cn )
|
||||
MAY ( uniquemember $ description ))
|
||||
|
||||
# LS system account
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.4
|
||||
objectclass (LsLDAPObjectClass:4
|
||||
NAME 'lssysaccount'
|
||||
DESC 'LS system account Objectclass'
|
||||
STRUCTURAL
|
||||
MUST ( uid )
|
||||
MAY (userpassword $ description))
|
||||
|
||||
# Ost mailbox
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.5
|
||||
NAME 'lsmailbox'
|
||||
DESC 'LS custom mailbox Objectclass'
|
||||
STRUCTURAL
|
||||
MUST ( uid )
|
||||
MAY ( userPassword $ description $ eeallowedservices $ maildrop $ mailbox $ mail $ mailalternateaddress $ mailforwardingaddress $ mailquota ))
|
||||
|
||||
# Ost computer
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.6
|
||||
NAME 'lscomputer'
|
||||
DESC 'LS computer Objectclass'
|
||||
STRUCTURAL
|
||||
MUST ( uid ))
|
||||
|
||||
# Ost samba domains
|
||||
objectclass (1.3.6.1.4.1.10650.3.1127.2.2.8
|
||||
NAME 'lssambadomain'
|
||||
DESC 'LS samba domain Objectclass'
|
||||
STRUCTURAL)
|
||||
MAY (userPassword $ description))
|
||||
# </Ls Objectclass>
|
||||
|
||||
|
|
|
@ -3,110 +3,39 @@ objectClass: top
|
|||
objectClass: organization
|
||||
o: ls
|
||||
structuralObjectClass: organization
|
||||
entryUUID: 2229e388-825b-1029-838c-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000001#000#000000
|
||||
|
||||
dn: ou=sysaccounts,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: sysaccounts
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 2238a738-825b-1029-838d-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000002#000#000000
|
||||
|
||||
dn: ou=people,o=ls
|
||||
dn: uid=mail,ou=sysaccounts,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: people
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 223b67e8-825b-1029-838e-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000003#000#000000
|
||||
objectClass: lssysaccount
|
||||
uid: mail
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
|
||||
dn: ou=mailboxes,o=ls
|
||||
dn: uid=samba,ou=sysaccounts,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: mailboxes
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 2240f622-825b-1029-8390-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000005#000#000000
|
||||
objectClass: lssysaccount
|
||||
uid: samba
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
|
||||
dn: ou=aliases,o=ls
|
||||
dn: uid=ldapsaisie,ou=sysaccounts,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: aliases
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 2243b88a-825b-1029-8391-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000006#000#000000
|
||||
|
||||
dn: ou=computers,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: computers
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 22468588-825b-1029-8392-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000007#000#000000
|
||||
|
||||
dn: ou=sambadomains,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: sambadomains
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 224cf30a-825b-1029-8394-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000009#000#000000
|
||||
|
||||
dn: sambaDomainName=LS_NT,ou=sambadomains,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssambadomain
|
||||
objectClass: sambaDomain
|
||||
sambaDomainName: LS_NT
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809
|
||||
structuralObjectClass: lssambadomain
|
||||
entryUUID: 2250d4ac-825b-1029-8395-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#00000a#000#000000
|
||||
objectClass: lssysaccount
|
||||
uid: ldapsaisie
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
|
||||
dn: ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: groups
|
||||
structuralObjectClass: organizationalUnit
|
||||
entryUUID: 224947d2-825b-1029-8393-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111624Z
|
||||
modifyTimestamp: 20050706111624Z
|
||||
entryCSN: 20050706111624.000000Z#000008#000#000000
|
||||
|
||||
dn: cn=adminldap,ou=groups,o=ls
|
||||
objectClass: top
|
||||
|
@ -118,91 +47,81 @@ gidNumber: 70000
|
|||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-70000
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 226bb240-825b-1029-8396-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
uniqueMember: uid=eeggs,ou=people,o=ls
|
||||
entryCSN: 20080211142717.746402Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20080211142717Z
|
||||
|
||||
dn: uid=mail,ou=sysaccounts,o=ls
|
||||
dn: cn=invite,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: mail
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
entryUUID: 22958d72-825b-1029-839c-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
modifyTimestamp: 20050706111625Z
|
||||
entryCSN: 20050706111625.000000Z#000007#000#000000
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: invite
|
||||
gidNumber: 101009
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203019
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
|
||||
dn: uid=ftp,ou=sysaccounts,o=ls
|
||||
dn: cn=ls,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: ftp
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
entryUUID: 22a46608-825b-1029-839d-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
modifyTimestamp: 20050706111625Z
|
||||
entryCSN: 20050706111625.000000Z#000008#000#000000
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: ls
|
||||
gidNumber: 102001
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205003
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
uniqueMember: uid=secretariat,ou=people,o=ls
|
||||
|
||||
dn: uid=http,ou=sysaccounts,o=ls
|
||||
dn: cn=informatique,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: http
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
entryUUID: 22a7274e-825b-1029-839e-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
modifyTimestamp: 20050706111625Z
|
||||
entryCSN: 20050706111625.000000Z#000009#000#000000
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
gidNumber: 102009
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205019
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
cn: informatique
|
||||
uniqueMember: uid=eeggs,ou=people,o=ls
|
||||
|
||||
dn: uid=samba,ou=sysaccounts,o=ls
|
||||
dn: cn=direction,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: samba
|
||||
structuralObjectClass: lssysaccount
|
||||
entryUUID: 22a9f44c-825b-1029-839f-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
userPassword: toto
|
||||
entryCSN: 20050706115506.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20050706115506Z
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: direction
|
||||
gidNumber: 102007
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205015
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
|
||||
dn: uid=ldapsaisie,ou=sysaccounts,o=ls
|
||||
dn: cn=administratif,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: ldapsaisie
|
||||
structuralObjectClass: lssysaccount
|
||||
userPassword: toto
|
||||
entryUUID: 22acb6aa-825b-1029-83a0-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
modifiersName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
modifyTimestamp: 20050706111625Z
|
||||
entryCSN: 20050706111625.000000Z#00000b#000#000000
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: administratif
|
||||
gidNumber: 102005
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205011
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
|
||||
dn: uid=nss,ou=sysaccounts,o=ls
|
||||
dn: cn=communication,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: nss
|
||||
structuralObjectClass: lssysaccount
|
||||
entryUUID: 22b06d40-825b-1029-83a1-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
userPassword: toto
|
||||
entryCSN: 20050706115152.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20050706115152Z
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: communication
|
||||
gidNumber: 102003
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205007
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
|
||||
dn: ou=people,o=ls
|
||||
objectClass: top
|
||||
objectClass: organizationalUnit
|
||||
ou: people
|
||||
structuralObjectClass: organizationalUnit
|
||||
|
||||
dn: uid=eeggs,ou=people,o=ls
|
||||
objectClass: top
|
||||
|
@ -213,35 +132,22 @@ uid: eeggs
|
|||
uidNumber: 100000
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-201000
|
||||
structuralObjectClass: lspeople
|
||||
entryUUID: 22b70a42-825b-1029-83a3-b10e837060e0
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111625Z
|
||||
gidNumber: 102009
|
||||
mail: eeggs@ldapsaisie.biz
|
||||
facsimileTelephoneNumber: 030000000
|
||||
vacationInfo: Je suis absent pour le moment
|
||||
vacationEnd: 20070101000000Z
|
||||
vacationForward: brenard@easter-eggs.com
|
||||
eeallowedservices: MAIL
|
||||
eeallowedservices: FTP
|
||||
lsallowedservices: MAIL
|
||||
lsallowedservices: FTP
|
||||
description: Utilisateur test Easter-eggs
|
||||
cn: Easter Eggs
|
||||
sambaPrimaryGroupSID: S-1-5-21-2421470416-3566881284-3047381809-205019
|
||||
mailbox: eeggs/
|
||||
personalTitle: M.
|
||||
userPassword: toto
|
||||
sambaLMPassword: AAD3B435B51404EEAAD3B435B51404EE
|
||||
sambaNTPassword: 31D6CFE0D16AE931B73C59D7E0C089C0
|
||||
mailQuota: 5
|
||||
homeDirectory: /home/eeggs
|
||||
loginShell: /bin/false
|
||||
givenName: Easter
|
||||
maildrop: eeggs@ldapsaisie.biz
|
||||
vacationActive:
|
||||
sn: Eggs
|
||||
entryCSN: 20080211134602.394624Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20080211134602Z
|
||||
|
||||
dn: uid=invite,ou=people,o=ls
|
||||
objectClass: top
|
||||
|
@ -260,22 +166,13 @@ userPassword: toto
|
|||
sambaAcctFlags: [U ]
|
||||
sambaPrimaryGroupSID: S-1-5-21-2421470416-3566881284-3047381809-203019
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203024
|
||||
mailbox: invite/
|
||||
mailQuota: 52428800
|
||||
eeallowedservices: MAIL
|
||||
eeallowedservices: SAMBA
|
||||
eeallowedservices: FTP
|
||||
lsallowedservices: MAIL
|
||||
lsallowedservices: SAMBA
|
||||
lsallowedservices: FTP
|
||||
mail: invite@ldapsaisie.biz
|
||||
maildrop: invite@ldapsaisie.biz
|
||||
structuralObjectClass: lspeople
|
||||
entryUUID: 233dd144-825b-1029-9a9d-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111626Z
|
||||
sambaNTPassword: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
sambaLMPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
|
||||
entryCSN: 20050706133832.000000Z#000008#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20050706133832Z
|
||||
|
||||
dn: uid=hmartin,ou=people,o=ls
|
||||
objectClass: top
|
||||
|
@ -289,30 +186,19 @@ uidNumber: 101022
|
|||
sambaAcctFlags: [U ]
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203044
|
||||
structuralObjectClass: lspeople
|
||||
entryUUID: 234393a4-825b-1029-9a9f-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111626Z
|
||||
givenName: Henri
|
||||
sn: MARTIN
|
||||
gidNumber: 102001
|
||||
mail: henri.martin@ldapsaisie.biz
|
||||
maildrop: henri.martin@ldapsaisie.biz
|
||||
mailAlternateAddress: hmartin@ldapsaisie.biz
|
||||
vacationEnd: 20060101000000Z
|
||||
mailQuota: 52428800
|
||||
eeallowedservices: MAIL
|
||||
eeallowedservices: SAMBA
|
||||
eeallowedservices: FTP
|
||||
lsallowedservices: MAIL
|
||||
lsallowedservices: SAMBA
|
||||
lsallowedservices: FTP
|
||||
cn: Henri MARTIN
|
||||
sambaPrimaryGroupSID: S-1-5-21-2421470416-3566881284-3047381809-205003
|
||||
mailbox: hmartin/
|
||||
personalTitle: M.
|
||||
userPassword: toto
|
||||
sambaLMPassword: AAD3B435B51404EEAAD3B435B51404EE
|
||||
sambaNTPassword: 31D6CFE0D16AE931B73C59D7E0C089C0
|
||||
entryCSN: 20080211164417.161923Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20080211164417Z
|
||||
|
||||
dn: uid=secretariat,ou=people,o=ls
|
||||
objectClass: top
|
||||
|
@ -327,27 +213,17 @@ userPassword: toto
|
|||
sambaAcctFlags: [U ]
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203072
|
||||
structuralObjectClass: lspeople
|
||||
entryUUID: 239920bc-825b-1029-9abb-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111627Z
|
||||
sambaNTPassword: 8DB716B655D71DF6BD056A41B22B9EA9
|
||||
sambaLMPassword: 6CE56DC112C920EF0F5E44C88BF9DC39
|
||||
givenName: Secretariat
|
||||
sn: Secretariat
|
||||
gidNumber: 70513
|
||||
mail: secretariat@ldapsaisie.biz
|
||||
maildrop: secretariat@ldapsaisie.biz
|
||||
vacationEnd: 20050101000000Z
|
||||
mailQuota: 52428800
|
||||
eeallowedservices: MAIL
|
||||
eeallowedservices: SAMBA
|
||||
eeallowedservices: FTP
|
||||
lsallowedservices: MAIL
|
||||
lsallowedservices: SAMBA
|
||||
lsallowedservices: FTP
|
||||
cn: Secretariat Secretariat
|
||||
mailbox: secretariat/
|
||||
sambaPrimaryGroupSID: S-1-5-21-2421470416-3566881284-3047381809-513
|
||||
entryCSN: 20050706144306.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20050706144306Z
|
||||
|
||||
dn: uid=ls,ou=people,o=ls
|
||||
objectClass: top
|
||||
|
@ -364,192 +240,15 @@ sambaLMPassword: 6E72264E11F708C0AAD3B435B51404EE
|
|||
sambaNTPassword: 8D9B9B87EE8C0423691F4F0E00C5BDE1
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203136
|
||||
structuralObjectClass: lspeople
|
||||
entryUUID: 23afa346-825b-1029-9ac3-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111627Z
|
||||
givenName: _
|
||||
sn: LdapSaisie
|
||||
gidNumber: 102001
|
||||
mail: ls@ldapsaisie.biz
|
||||
maildrop: ls@ldapsaisie.biz
|
||||
vacationEnd: 20060101000000Z
|
||||
mailQuota: 52428800
|
||||
eeallowedservices: MAIL
|
||||
eeallowedservices: SAMBA
|
||||
eeallowedservices: FTP
|
||||
lsallowedservices: MAIL
|
||||
lsallowedservices: SAMBA
|
||||
lsallowedservices: FTP
|
||||
cn: LS
|
||||
sambaPrimaryGroupSID: S-1-5-21-2421470416-3566881284-3047381809-205003
|
||||
mailbox: ls/
|
||||
entryCSN: 20061212145541.000000Z#000001#000#000000
|
||||
modifiersName: uid=catbo,ou=people,o=ls
|
||||
modifyTimestamp: 20061212145541Z
|
||||
|
||||
dn: cn=invite,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: invite
|
||||
gidNumber: 101009
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203019
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 2425636a-825b-1029-9ae1-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111628Z
|
||||
entryCSN: 20070308165544.000000Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20070308165544Z
|
||||
|
||||
dn: cn=ls,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: ls
|
||||
gidNumber: 102001
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205003
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 242bef1e-825b-1029-9ae3-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111628Z
|
||||
uniqueMember: uid=secretariat,ou=people,o=ls
|
||||
entryCSN: 20080211142555.171664Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20080211142555Z
|
||||
|
||||
dn: cn=informatique,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
gidNumber: 102009
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205019
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 2438d9d6-825b-1029-9ae7-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111628Z
|
||||
cn: informatique
|
||||
uniqueMember: uid=eeggs,ou=people,o=ls
|
||||
entryCSN: 20070309093000.000000Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20070309093000Z
|
||||
|
||||
dn: cn=direction,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: direction
|
||||
gidNumber: 102007
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205015
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 243f7a34-825b-1029-9ae9-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111628Z
|
||||
entryCSN: 20070309093009.000000Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20070309093009Z
|
||||
|
||||
dn: cn=administratif,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: administratif
|
||||
gidNumber: 102005
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205011
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 245e0cb0-825b-1029-9af4-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111628Z
|
||||
entryCSN: 20070308180424.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20070308180424Z
|
||||
|
||||
dn: cn=communication,ou=groups,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: posixGroup
|
||||
objectClass: sambaGroupMapping
|
||||
cn: communication
|
||||
gidNumber: 102003
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-205007
|
||||
sambaGroupType: 2
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 2460db34-825b-1029-9af5-8f6e2b792dd2
|
||||
creatorsName: cn=anonymous
|
||||
createTimestamp: 20050706111628Z
|
||||
entryCSN: 20070308180413.000000Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20070308180413Z
|
||||
|
||||
dn: uid=spam,ou=mailboxes,o=ls
|
||||
uid: spam
|
||||
userPassword: toto
|
||||
mailQuota: 104857600
|
||||
eeallowedservices: MAIL
|
||||
mail: spam@ldapsaisie.biz
|
||||
maildrop: spam@ldapsaisie.biz
|
||||
mailbox: spam/
|
||||
objectClass: top
|
||||
objectClass: lsmailbox
|
||||
structuralObjectClass: lsmailbox
|
||||
entryUUID: c88b9eb4-8301-1029-9567-dda2c03231d0
|
||||
creatorsName: uid=eeggs,ou=people,o=ls
|
||||
createTimestamp: 20050707070920Z
|
||||
entryCSN: 20050707070920.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20050707070920Z
|
||||
|
||||
dn: uid=virus,ou=mailboxes,o=ls
|
||||
uid: virus
|
||||
userPassword: toto
|
||||
mailbox: virus/
|
||||
objectClass: top
|
||||
objectClass: lsmailbox
|
||||
structuralObjectClass: lsmailbox
|
||||
entryUUID: 974dac8c-8303-1029-9569-dda2c03231d0
|
||||
creatorsName: uid=eeggs,ou=people,o=ls
|
||||
createTimestamp: 20050707072216Z
|
||||
mailQuota: 104857600
|
||||
eeallowedservices: MAIL
|
||||
mail: virus@ldapsaisie.biz
|
||||
maildrop: virus@ldapsaisie.biz
|
||||
entryCSN: 20050707072249.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20050707072249Z
|
||||
|
||||
dn: uid=gnarwl,ou=sysaccounts,o=ls
|
||||
objectClass: top
|
||||
objectClass: lssysaccount
|
||||
uid: gnarwl
|
||||
structuralObjectClass: lssysaccount
|
||||
entryUUID: f55954e0-fdcc-1029-9d72-de06c303d7ef
|
||||
creatorsName: uid=eeggs,ou=people,o=ls
|
||||
createTimestamp: 20051210133105Z
|
||||
userPassword: toto
|
||||
entryCSN: 20051210133237.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20051210133237Z
|
||||
|
||||
dn: mail=informatique@ldapsaisie.biz,ou=aliases,o=ls
|
||||
objectClass: top
|
||||
objectClass: lsalias
|
||||
structuralObjectClass: lsalias
|
||||
entryUUID: 081e6612-fdd0-1029-9d73-de06c303d7ef
|
||||
creatorsName: uid=eeggs,ou=people,o=ls
|
||||
createTimestamp: 20051210135305Z
|
||||
mail: informatique@ldapsaisie.biz
|
||||
description: Service Informatique
|
||||
maildrop: eeggs@ldapsaisie.biz
|
||||
entryCSN: 20051210141428.000000Z#000001#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20051210141428Z
|
||||
|
||||
dn: uid=erwpa,ou=people,o=ls
|
||||
uid: erwpa
|
||||
|
@ -563,42 +262,16 @@ homeDirectory: /home/erwpa
|
|||
loginShell: /bin/false
|
||||
sambaSID: S-1-5-21-2421470416-3566881284-3047381809-203164
|
||||
structuralObjectClass: lspeople
|
||||
entryUUID: aa7fcb30-b1a3-102a-875e-dcce935f6f2c
|
||||
sn: PAGEARD
|
||||
gidNumber: 102009
|
||||
mail: erwan.page@ldapsaisie.biz
|
||||
maildrop: erwan.page@ldapsaisie.biz
|
||||
vacationEnd: 20060101000000Z
|
||||
eeallowedservices: MAIL
|
||||
eeallowedservices: SAMBA
|
||||
eeallowedservices: FTP
|
||||
lsallowedservices: MAIL
|
||||
lsallowedservices: SAMBA
|
||||
lsallowedservices: FTP
|
||||
cn: Erwan PAGE
|
||||
sambaPrimaryGroupSID: S-1-5-21-2421470416-3566881284-3047381809-205019
|
||||
mailbox: erwpa/
|
||||
personalTitle: M.
|
||||
givenName: Erwan
|
||||
userPassword: toto
|
||||
sambaLMPassword: BAC14D04669EE1D1AAD3B435B51404EE
|
||||
sambaNTPassword: FBBF55D0EF0E34D39593F55C5F2CA5F2
|
||||
entryCSN: 20080211170049.821887Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20080211170049Z
|
||||
|
||||
dn: cn=test,ou=groups,o=ls
|
||||
cn: test
|
||||
description: test BR
|
||||
objectClass: top
|
||||
objectClass: lsgroup
|
||||
objectClass: sambaGroupMapping
|
||||
objectClass: posixGroup
|
||||
sambaGroupType: 2
|
||||
gidNumber: 102012
|
||||
sambaSID: 42
|
||||
structuralObjectClass: lsgroup
|
||||
entryUUID: 91b290d2-6117-102b-9c6f-91889acd20dc
|
||||
creatorsName: uid=eeggs,ou=people,o=ls
|
||||
createTimestamp: 20070307164933Z
|
||||
entryCSN: 20070308165811.000000Z#000000#000#000000
|
||||
modifiersName: uid=eeggs,ou=people,o=ls
|
||||
modifyTimestamp: 20070308165811Z
|
||||
|
||||
|
|
|
@ -1,89 +1,28 @@
|
|||
## Racine
|
||||
access to dn.regex="^o=ls$" attrs="entry,children,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * read
|
||||
|
||||
## Sysaccounts
|
||||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=sysaccounts,o=ls$" attrs="children"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
access to dn.regex="^uid=[^,]+,ou=sysaccounts,o=ls$" attrs="entry,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier le mot de passe, les autres peuvent s'en servir pour l'authentification
|
||||
access to dn.regex="^uid=[^,]+,ou=sysaccounts,o=ls$" attrs="userPassword"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by anonymous auth
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier tous les attributs, les autres ne voient rien
|
||||
access to dn.regex="^uid=[^,]+,ou=sysaccounts,o=ls$"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * none
|
||||
|
||||
## Aliases
|
||||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=aliases,o=ls$" attrs="children,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * read
|
||||
|
||||
access to dn.regex="^mail=[^,]+,ou=aliases,o=ls$" attrs="entry,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * read
|
||||
|
||||
### Les admins peuvent modifier tous les attributs, tout le monde peut voir
|
||||
access to dn.regex="^mail=[^,]+,ou=aliases,o=ls$"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * read
|
||||
|
||||
## Mailboxes
|
||||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=mailboxes,o=ls$" attrs="children,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * read
|
||||
|
||||
access to dn.regex="^uid=[^,]+,ou=mailboxes,o=ls$" attrs="entry,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * read
|
||||
|
||||
### Les admins peuvent modifier le mot de passe, les autres peuvent s'en servir pour l'authentification
|
||||
access to dn.regex="^uid=[^,]+,ou=mailboxes,o=ls$" attrs="userPassword"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by anonymous auth
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, l'appli mail le voir, les autres aucun droits
|
||||
access to dn.regex="^uid=[^,]+,ou=mailboxes,o=ls$" attrs="mailbox,mailforwardingaddress"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=mail,ou=sysaccounts,o=ls" read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, les authentifies peuvent les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=mailboxes,o=ls$" attrs="uid,description,mail,mailalternateaddress,mailquota,eeallowedservices"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by * read
|
||||
|
||||
## Groups
|
||||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=groups,o=ls$" attrs="children,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
access to dn.regex="^cn=[^,]+,ou=groups,o=ls$" attrs="entry,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent tout modifier, les authentifies peuvent tout voir
|
||||
access to dn.regex="^cn=[^,]+,ou=groups,o=ls$"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
|
@ -92,11 +31,13 @@ access to dn.regex="^cn=[^,]+,ou=groups,o=ls$"
|
|||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=people,o=ls$" attrs="children,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * read
|
||||
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="entry,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * read
|
||||
|
||||
|
@ -105,104 +46,49 @@ access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="entry,objectclass"
|
|||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="userPassword"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by self write
|
||||
by anonymous auth
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, l'appli mail les voir, les autres aucun droits
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="mailbox"
|
||||
access to dn.regex="^uid=[^,]+,ou=sysaccounts,o=ls$" attrs="userPassword"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=mail,ou=sysaccounts,o=ls" read
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by anonymous auth
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, les authentifies peuvent les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="uid,mailquota,eeallowedservices,uidNumber,gidNumber,homeDirectory,loginShell,sambaSID,sambaAcctFlags,sambaPrimaryGroupSID"
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="uid,lsallowedservices,uidNumber,gidNumber,homeDirectory,loginShell,sambaSID,sambaAcctFlags,sambaPrimaryGroupSID"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, le proprio aussi, gnarwl peut les modifier et mail les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="mailforwardingaddress"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=gnarwl,ou=sysaccounts,o=ls" write
|
||||
by self write
|
||||
by dn="uid=mail,ou=sysaccounts,o=ls" read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, le proprio aussi, les authentifies peuvent les voir, gnarwl peut les modifier
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="vacationActive"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=gnarwl,ou=sysaccounts,o=ls" write
|
||||
by self write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, le proprio aussi, mail et gnarwl peuvent les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="vacationForward"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by self write
|
||||
by dn="uid=mail,ou=sysaccounts,o=ls" read
|
||||
by dn="uid=gnarwl,ou=sysaccounts,o=ls" read
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, le proprio aussi, samba aussi
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="sambaLMPassword,sambaNTPassword"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" write
|
||||
by self write
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, le proprio aussi, les authentifies peuvent les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="c,cn,jpegPhoto,personalTitle,sn,givenName,postalAddress,postalCode,l,st,telephoneNumber,mobile,fax,mail,mailalternateaddress,maildrop,description,vacationInfo,vacationEnd"
|
||||
access to dn.regex="^uid=[^,]+,ou=people,o=ls$" attrs="c,cn,jpegPhoto,personalTitle,sn,givenName,postalAddress,postalCode,l,st,telephoneNumber,mobile,fax,mail,description"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by self write
|
||||
by users read
|
||||
by * read
|
||||
|
||||
## Computers
|
||||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=computers,o=ls$" attrs="children,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
access to dn.regex="^uid=[^,]+,ou=computers,o=ls$" attrs="entry,objectclass"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
|
||||
### Les admins peuvent modifier ces attributs, samba peut les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=computers,o=ls$" attrs="sambaLMPassword,sambaNTPassword"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" write
|
||||
by * none
|
||||
|
||||
### Les admins peuvent modifier ces attributs, les authentifiés peuvent les voir
|
||||
access to dn.regex="^uid=[^,]+,ou=computers,o=ls$" attrs="cn,uid,uidNumber,gidNumber,homeDirectory,sambaSID,sambaPrimaryGroupSID,sambaAcctFlags,sambaPwdCanChange,sambaPwdMustChange,sambaPwdLastSet"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
|
||||
## Les authentifies peuvent voir les noeuds et les admins peuvent en ajouter
|
||||
access to * attrs="entry"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
## SambaDomains
|
||||
### Ajout d'entrees par les admins
|
||||
access to dn.regex="^ou=sambadomains,o=ls$"
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=samba,ou=sysaccounts,o=ls" read
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by users read
|
||||
by * none
|
||||
|
||||
## Le reste
|
||||
access to *
|
||||
by group/lsgroup/uniqueMember="cn=adminldap,ou=groups,o=ls" write
|
||||
by dn="uid=ldapsaisie,ou=sysaccounts,o=ls" write
|
||||
by * none
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# LSexample - Config
|
||||
include /etc/ldap/schema/ls.schema
|
||||
|
||||
|
||||
|
@ -14,10 +15,9 @@ index objectClass eq
|
|||
index uid pres,eq
|
||||
index uidNumber eq
|
||||
index gidNumber eq
|
||||
index eeallowedservices eq
|
||||
index lsallowedservices eq
|
||||
index cn pres,eq
|
||||
index mail pres,eq
|
||||
index mailalternateaddress pres,eq
|
||||
index sambasid eq
|
||||
index sambaDomainName eq
|
||||
index memberUid eq
|
||||
|
|
|
@ -53,3 +53,11 @@ dl.loginform {
|
|||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
#LSsession_lostPassword {
|
||||
float: right;
|
||||
font-size: 0.8em;
|
||||
text-decoration: none;
|
||||
color: #69c;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
|
60
trunk/templates/css/recoverpassword.css
Normal file
60
trunk/templates/css/recoverpassword.css
Normal file
|
@ -0,0 +1,60 @@
|
|||
#recoverpasswordform-logo {
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.recoverpasswordform {
|
||||
margin: auto;
|
||||
margin-top: 10%;
|
||||
border: 1px solid #69c;
|
||||
padding: 1em;
|
||||
width: 30em;
|
||||
background: transparent url(../images/login_fd.png) no-repeat scroll 98% 98%;
|
||||
}
|
||||
|
||||
dl.recoverpasswordform {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.recoverpasswordform dt {
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 1.1em;
|
||||
width: 8em;
|
||||
font-weight: bold;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.recoverpasswordform dd {
|
||||
margin: 0 0 0 9em;
|
||||
padding: 0 0 0em 0em;
|
||||
}
|
||||
|
||||
.recoverpasswordform input, .recoverpasswordform select {
|
||||
border: 1px inset #ccc;
|
||||
width: 13em;
|
||||
}
|
||||
|
||||
.recoverpasswordform input[type='submit'] {
|
||||
border: 1px outset #ccc;
|
||||
width: 11em;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
#loading_zone {
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
#recoverpassword_msg {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#recoverpassword_back {
|
||||
float: right;
|
||||
font-size: 0.8em;
|
||||
text-decoration: none;
|
||||
color: #69c;
|
||||
font-weight: bold;
|
||||
}
|
|
@ -2,6 +2,7 @@
|
|||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>LdapSaisie{if $pagetitle != ''} - {$pagetitle}{/if}</title>
|
||||
<link rel="stylesheet" type="text/css" href="templates/css/login.css" media="screen" title="Normal" />
|
||||
{$LSsession_css}
|
||||
|
@ -33,6 +34,7 @@
|
|||
<dd><input type='submit' value='{$loginform_label_submit}' /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
<a href='index.php?LSsession_recoverPassword' id='LSsession_lostPassword'>{$loginform_label_lostpassword}</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
41
trunk/templates/recoverpassword.tpl
Normal file
41
trunk/templates/recoverpassword.tpl
Normal file
|
@ -0,0 +1,41 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>LdapSaisie{if $pagetitle != ''} - {$pagetitle}{/if}</title>
|
||||
<link rel="stylesheet" type="text/css" href="templates/css/recoverpassword.css" media="screen" title="Normal" />
|
||||
{$LSsession_css}
|
||||
{$LSsession_js}
|
||||
</head>
|
||||
<body>
|
||||
<div id='LSerror'>
|
||||
{$LSerrors}
|
||||
</div>
|
||||
<div id='LSdebug'>
|
||||
<a href='#' id='LSdebug_hidden'>X</a>
|
||||
<div id='LSdebug_infos'>{if $LSdebug != ''}{$LSdebug}{/if}</div>
|
||||
</div>
|
||||
<div class='recoverpasswordform'>
|
||||
<img src='templates/images/logo.png' alt='Logo' id='recoverpasswordform_logo' />
|
||||
<div id='loading_zone'></div>
|
||||
<form action='{$recoverpasswordform_action}' method='post'>
|
||||
<dl class='recoverpasswordform'>
|
||||
<dt {$recoverpasswordform_ldapserver_style}>{$recoverpasswordform_label_ldapserver}</dt>
|
||||
<dd {$recoverpasswordform_ldapserver_style}>
|
||||
<select name='LSsession_ldapserver' id='LSsession_ldapserver'>{html_options values=$recoverpasswordform_ldapservers_index output=$recoverpasswordform_ldapservers_name selected=$ldapServerId}</select>
|
||||
</dd>
|
||||
<dt>{$recoverpasswordform_label_user}</dt>
|
||||
<dd><input type='text' name='LSsession_user' /></dd>
|
||||
<dd><input type='submit' value='{$recoverpasswordform_label_submit}' /></dd>
|
||||
</dl>
|
||||
</form>
|
||||
|
||||
{if recoverpassword_msg!=''}
|
||||
<p id='recoverpassword_msg'>{$recoverpassword_msg}</p>
|
||||
{/if}
|
||||
|
||||
<a href='index.php' id='recoverpassword_back'>{$recoverpasswordform_label_back}</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue