IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajout d'un utilisateur dans l'annuaire LDAP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut Ajout d'un utilisateur dans l'annuaire LDAP
    Bonjour à tous,

    Avant de commencer, je tiens à m'excusez pour ce post car je ne savais absolument pas où mettre celui-ci... j'espère ne pas trop gêner

    Voila, je suis entrain de réaliser une interface pratique LDAP en PHP et j'essaie depuis un moment d'ajouter des utilisateurs dans mon annuaire LDAP. J'y arrive plutôt bien jusqu'à ce que je décide de rajouter l'attribut "UidNumber", "GidNumber" et "HomeDirectory". Celui si dépend de l'ObjectClass ["posixAccount"]...

    Voici l'extrait de code qui me permet d'ajouter un utilisateur ( avec en commentaire l'objectClass ["posixAccount"], je ne vous met pas tout le code car il n'est pas utile à la compréhension, mais je pourrais le mettre si besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    ...
                  $ajout["objectClass"][0]="inetOrgPerson";
                  $ajout["objectClass"][0]="fresnelPerson";
                  //$ajout["objectClass"][1]="posixAccount";
                  $ajout["objectClass"][1]="shadowAccount";                 
                  $ajout["cn"]=$_GET["info2"]["nom"]." ".$_GET["info2"]["prenom"];
                  $ajout["uid"]=$_GET["info2"]["prenom"].".".$_GET["info2"]["nom"];
                  $ajout ["sn"]=$_GET["info2"]["prenom"];
                  $ajout["mail"]=$_GET["info2"]["mail"];
                  $ajout["telephoneNumber"]="04 91 28 ".$_GET["info2"]["telephone"];
                  $ajout["statut"]=$_GET["info2"]["statut"];
                  $ajout["arrivaldate"]="".$_GET["info2"]["dateArrive"]." ";
                  $ajout["birthDate"]=$_GET["info2"]["dateDepart"]." ";
                  $ajout["etabAffec"]=$_GET["info2"]["etablissement"];
     
               /*$ajout["gidNumber"]= 513;
                  $ajout["homeDirectory"] = $ajout["uid"];
                  $ajout["uidNumber"]=rand();     */
     
     
                  $recherche=ldap_search($connect,"dc=fresnel,dc=fr", "uid=".$existe);
     
     
                  if (($recherche)and($existe != ".")){
                      $supprime=ldap_delete($connect,"uid=".$existe.",ou=People,dc=fresnel,dc=fr");
                      echo $existe;
                      if($supprime){
                            echo"<p> L'utilisateur précédant à bien été supprimé"  ;
                      } 
                  }
                  $rn="uid=".$ajout["uid"].",ou=Comptabilité2,dc=fresnel,dc=fr";
                  //ligne 64
                  $add=ldap_add($connect, $rn, $ajout);
    ...
    Et voici l'erreur que j'ai :
    Warning: ldap_add() [function.ldap-add]: Add: Object class violation in C:\wamp\www\Interface LDAP\Ajout_Modif.php on line 64

    lorsque j'enleve les 3 lignes de commentaires, l'ajout se fait, mais quand je vérifie la personne par le phpldapadmin, je ne vois que 3objectClass qui sont : fresnelPerson, shadowAccount, inetOrgPerson. Chose que j'ai du mal à comprendre...

    De plus, sur une ancienne interface, dont je vais mettre le code juste dessus, celui-ci marche assez bien...(même si il y a certaines parties de code incompréhensible), d'où mon incompréhension sur les ObjectClass.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    	$uidnumber = $nexfree[0]["uidnumber"][0]+1;
    	echo "l'iudnumber est : $uidnumber";
    	$nexfree2["uidnumber"][0]=$nexfree[0]["uidnumber"][0]+1;
    	$nexfree2["cn"][0]=$nexfree[0]["cn"][0];
    	$nexfree2["gidnumber"][0]=$nexfree[0]["gidnumber"][0];
    	$nexfree2["sn"][0]=$nexfree[0]["sn"][0];
    	$nexfree2["objectclass"][0]="inetOrgPerson";
    	$nexfree2["objectclass"][1]="sambaUnixIdPool";
     
      $info["cn"]= strtolower($_POST['nom'])." ".strtolower($_POST['prenom']); 
     
    	$info["sn"]=strtolower($_POST['nom']); 
     
      $info["uid"]=strtolower($_POST['prenom']).".".strtolower($_POST['nom']);
     
    	$info["mail"]=strtolower($_POST['prenom']).".".strtolower($_POST['nom'])."@fresnel.fr";
     
    	$info["homedirectory"] = $info["uid"];
     
    	$info["gidNumber"]= 513;
     
    	$info["uidNumber"]=$uidnumber;
     
      $info["objectclass"][0]="fresnelDoctorant";
    	$info["objectclass"][1]="posixAccount";
    	$info["objectclass"][2]="shadowAccount";
     
    	$info["shadowExpire"]=-1;
    	$info["shadowFlag"]=13188;
    	$info["shadowInactive"]=-1;
    	$info["shadowLastChange"]=13188;
    	$info["shadowMax"]=99999;
    	$info["shadowMin"]=5;
    	$info["shadowWarning"]=7;
     
    	$uid = $info["uid"];
    	//$userpassword = $_POST['userpassword'];
    	echo " pass1 = $userpassword";
     
    	$password = password_hash( $userpassword, crypt);
    	$_POST['userpassword'] = $password;
     
    	for ($i=0 ; $i<sizeof($tabvardocto) ; $i++){
    	$doc = $tabvardocto[$i];
     
    	if ($doc != "telephoneNumber") {
    	  if ($doc != "telephoneNumber2") { 
    	if (!$_POST[$doc]) {
    		$nimp = "n/d" ;
    	} else {
    	$nimp = $_POST[$doc];
    	$nimp = strtolower($nimp);
    		}
    	if ($doc == 'presence' && $_POST[$doc] == true) {
    		$nimp = "TRUE";
    		} elseif ($doc == 'presence' && $_POST[$doc] == false) {
    		$nimp = "FALSE";
    		}
    	$info[$doc] = $nimp;
    	  } elseif ($_POST['telephoneNumber2']) {
    	    $doc = "telephoneNumber";
    	    $info[$doc][1] = $_POST['telephoneNumber2'];
    	  }
    	} elseif (!$_POST['telephoneNumber']) {
    	 $info[$doc][0] = "n/d";
    	 } else {
    	 $info[$doc][0] = $_POST['telephoneNumber'];
    	 }
    	}//fin for
     
            // ajout dans l'annuaire 
     
            $r=ldap_add($ds,"uid=$uid,$racine",$info);
    Voila, merci bcp à vous par avance pour vos réponses.

  2. #2
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Salut,

    L'erreur que tu as : "Add: Object class violation" veut dire soit : qu'un attribut nécessaire à une classe n'est pas présent ou que soit un attribut que tu essaie d'ajouter ne doit pas être présent.

    Tu as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ajout["objectClass"][0]="inetOrgPerson";
                  $ajout["objectClass"][0]="fresnelPerson";
                 // $ajout["objectClass"][1]="posixAccount";
                  $ajout["objectClass"][1]="shadowAccount";
    Or ton tu écrases la valeur de inetOrgPerson et posixAccount
    Il faudrait avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ajout["objectClass"][0]="inetOrgPerson";
                  $ajout["objectClass"][1]="fresnelPerson";
                  //$ajout["objectClass"][2]="posixAccount";
                  $ajout["objectClass"][2]="shadowAccount"; 
    // OU dans le cas sans commentaire
    $ajout["objectClass"][0]="inetOrgPerson";
                  $ajout["objectClass"][1]="fresnelPerson";
                  $ajout["objectClass"][2]="posixAccount";
                  $ajout["objectClass"][3]="shadowAccount";
    Déjà avec ceci, voit si cela règle les problèmes.
    Smiley de Plomb 2009
    Anciennement FrancoisIT

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut
    D'accord, je comprends un peu mieux maintenant pourquoi certains disparaissaient

    Je vais tester cela donc, merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut
    En effet... c'était bien cela donc... comme quoi on en apprends tout le temps
    Merci à toi en tout cas

  5. #5
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Bon courage pour la suite
    Smiley de Plomb 2009
    Anciennement FrancoisIT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perl LDAP ajout d'un utilisateur dans un AD
    Par jean tof dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 10/02/2012, 20h48
  2. Comment ajouter des utilisateurs dans l'annuaire LDAP
    Par roubben dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 24/04/2011, 19h55
  3. [LDAP] Ajout dans un annuaire ldap via un script php
    Par pascale86 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/11/2006, 11h58
  4. Réponses: 8
    Dernier message: 03/08/2006, 09h35
  5. [JNDI] comment insérer de nouveaux objets dans notre annuaire LDAP
    Par julien1981 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 23/06/2006, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo