====== Exemple code PHP Ajout/Suppressions ====== ===== Ldap.inc ===== $v) { print_r($groups); $f=explode(",", $v); if(substr_count($v, 'groups')) { $res=$res."".getMembers($ds, $f[0]); } else { $res=$res."[SEP]".$v ; } } return $res ; } /************* * Litislab functions **************/ /* * UTILE */ function cn($val) { $r=explode(",",$val); return $r[0]; } function cn_path($val) { $r=explode(",",$val); $res["cn"]=$r[0]; $res["path"]=""; for($i=1 ; $i < count($r) ; $i++) { $res["path"]=$res["path"].$r[$i]; } if(is_group($val)) { $res["uri"]="groups"; $res["id"]=$res["cn"]; } else { $res["uri"]="people"; $res["id"]=getUid($res["cn"]); } return $res ; } function cn_value($val) { if($val) { $r=explode("=",$val); if(count($r)>0) { return $r[1] ; } else { return $val ; } } } function is_group($val) { if (preg_match("/groups/i", $val)) { return true ; } else { return false ; } } /* * get CN */ function getCn($uid) { $ds=connectLitislabAsAdmin(); if($ds) { $sr=ldap_search($ds, VAR_LAB_PEOPLE_PATH(), "uid=".$uid); $info = ldap_get_entries($ds, $sr); for ($i=0;$i<$info["count"];$i++) { $res[$i]["uid"]=$info[$i]["uid"][0]; $res[$i]["cn"]=$info[$i]["cn"][0]; } return $res[0]["cn"] ; } else { return 0 ; } } /* * get Uid */ function getUid($cn) { $ds=connectLitislabAsAdmin(); if($ds) { $sr=ldap_search($ds, VAR_LAB_PEOPLE_PATH(), $cn); $info = ldap_get_entries($ds, $sr); for ($i=0;$i<$info["count"];$i++) { $res[$i]["uid"]=$info[$i]["uid"][0]; $res[$i]["cn"]=$info[$i]["cn"][0]; } return $res[0]["uid"] ; } else { return 0 ; } } /* * Get account */ function getAccount($prenom_nom) { $ds=connectLitislabAsAdmin(); if($ds) { $sr=ldap_search($ds, VAR_LAB_PEOPLE_PATH(), "cn=".$prenom_nom); $info = ldap_get_entries($ds, $sr); for ($i=0;$i<$info["count"];$i++) { print_r($info[$i]["objectclass"]); $res[$i]["objectclass"][1]="top"; $res[$i]["objectclass"][2]="person"; $res[$i]["objectclass"][3]="inetOrgPerson"; $res[$i]["objectclass"][4]="organizationalPerson"; $res[$i]["uid"]=$info[$i]["uid"][0]; $res[$i]["cn"]=$info[$i]["cn"][0]; $res[$i]["sn"]=$info[$i]["sn"][0]; $res[$i]["givenname"]=$info[$i]["givenname"][0]; $res[$i]["userPassword"]=$info[$i]["userpassword"][0]; $res[$i]["mail"]=$info[$i]["mail"][0]; } return $res[0] ; } else { return 0 ; } } /* * ADMIN FUNCTIONS */ function addAccount($data) { $ds=connectUlhAsAdmin(); $info["objectclass"][0] = "person" ; $info["objectclass"][1] = "posixAccount" ; $info["objectclass"][2] = "inetOrgPerson"; $info["objectclass"][3] = "organizationalPerson"; $info["cn"] = $data["uid"] ; $info["sn"] = $data["uid"] ; $info["userpassword"] = $data["userpassword"]; $info["loginshell"] = "/bin/bash" ; $info["uidnumber"] = 100 ; $info["gidnumber"] = 200 ; $info["uid"] = 100 ; $info["homedirectory"] = "/home/".$data["uid"] ; $dn = "cn=".$data["uid"].",".VAR_ULH_PEOPLE_PATH(); $res = ldap_add($ds, $dn, $info); $res = ldap_err2str( ldap_errno($ds) ); ldap_close($ds); return $res ; } /* * supprime un compte */ function delAccount($dn) { $ds=connectUlhAsAdmin(); $res=ldap_delete($ds, $dn); ldap_close($ds); return $res; } /* * modifyAccount */ function modifyAccount($uid) { $ds=connectUlhAsAdmin(); $info["objectclass"][0] = "person" ; $info["objectclass"][1] = "posixAccount" ; $info["objectclass"][2] = "inetOrgPerson"; $info["objectclass"][3] = "organizationalPerson"; $info["cn"] = $data["uid"] ; $info["sn"] = $data["uid"] ; $info["userpassword"] = $data["userpassword"]; $info["loginshell"] = "/bin/bash" ; $info["uidnumber"] = 100 ; $info["gidnumber"] = 200 ; $info["uid"] = 100 ; $info["homedirectory"] = "/home/".$data["uid"] ; $dn = "cn=".$data["uid"].",".VAR_ULH_PEOPLE_PATH(); $res = ldap_modify($ds, $dn, $info); $res = ldap_err2str( ldap_errno($ds) ); ldap_close($ds); return $res ; } /* * Modify password */ function modifyPassword($uid, $newpass) { $ds=connectLitislabAsAdmin() ; $info["userpassword"]=$newpass ; $dn = "cn=".getCn($uid).",".VAR_LAB_PEOPLE_PATH(); $res = ldap_modify($ds, $dn, $info); if($res) { return true ; } else { return false ; } } ?> ===== const.inc ===== ==== Implémentation des fonctions ==== load->helper("url"); $this->load->helper("form"); $this->load->helper("html"); $this->load->file("/var/www/ldap_ci203/application/libraries/ldap/auth.inc"); $this->data['sub']['heading']="LDAP"; $this->data["sub"]['topbar']=""; session_start(); is_connected(); } /* * Index */ function index() { $this->data['page']="Accueil"; $this->data['content']='ldap'; $this->load->view('_template', $this->data); } /* * People */ function people() { if($this->uri->rsegment(3)) { $this->people_profile($this->uri->rsegment(3)); } else { $this->people_list(); } } /* * */ function people_list() { $this->data['page']="Membres"; $this->data['content']='ldap_people'; $ds=connectLitislabAsAdmin(); $this->data["sub"]["people"]=getPeople($ds, "eduPersonAffiliation=*"); $this->data["sub"]['topbar']="People"; $this->load->view('_template', $this->data); } /* * */ function people_profile($uid) { $this->data["sub"]['topbar']=anchor("/ldap/people", "Membres")." > ".$uid ; $this->data['page']=$uid ; $this->data['content']='ldap_people_profile'; $ds=connectLitislabAsAdmin(); $this->data["sub"]["profile"]=getPeople($ds, "uid=".$uid); $this->load->view('_template', $this->data); } /* * Groups */ function groups() { $this->data['page']="Groupes"; $ds=connectLitislabAsAdmin(); if($this->uri->rsegment(3)=="show") { if($this->uri->rsegment(4)) { $val=explode("@", $this->uri->rsegment(4)); $this->data["sub"]["groups"]=getGroups($ds, "cn=".$val[0]); } $this->data['content']='ldap_group_entry'; $this->data["sub"]['topbar']="Groupes > ".$val[0]; } else { $this->data['content']='ldap_groups'; $this->data["sub"]["groups"]=getGroups($ds, "cn=*"); } $this->load->view('_template', $this->data); } function group_profile() { } /** * add account */ function people_add($data) { $this->data['page']="Add"; $this->data["sub"]['topbar']="addAccount"; $this->data['content']='ldap_people_add'; addAccount($data); //$this->load->view('_template', $this->data); } /** * load from litislab */ function people_load_from_litislab() { $ds=connectLitislabAsAdmin(); $people=getPeople($ds, "eduPersonAffiliation=*"); foreach($people as $k=>$person) { echo "
"; addAccount($person); //echo $k."-".$person["uid"] ; } } /* * update data from litislab */ function people_update_from_litislab() { $ds=connectLitislabAsAdmin(); $people=getPeople($ds, "eduPersonAffiliation=*"); foreach($people as $k=>$person) { echo "
"; updateAccount($person); //echo $k."-".$person["uid"] ; } } /* * passwd change */ function newpwd() { $ds=connectLitislabAsAdmin(); $this->data['page']="Password"; $this->data["sub"]['topbar']="Password"; if($this->uri->segment(3)=="done") { $this->data['content']='ldap_pwd_done'; $this->data['sub']['topbar']='pwd'; } else { $this->data['content']='ldap_pwd'; $this->data['sub']['topbar']='pwd'; } $this->load->view('_template', $this->data); } function newpwd_control() { if(modifyPassword($_SESSION["login"], litislabPwd($_POST["pwd1"]))) { redirect("/ldap/newpwd/done"); } else { redirect("/ldap/newpwd"); } } } ?>