$desc['nom'] = $user["fullname"]; $desc['statut'] = "1comite"; $desc['login'] = $login; $desc['source'] = 'ldap'; $desc['pass'] = ''; $r = sql_insertq('spip_auteurs', $desc); $result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'"); } $row_auteur = spip_fetch_array($result); ### DBG fich_debug("DBG >> statut :".$row_auteur['statut']."\n"); if ($row_auteur['statut'] == '0minirezo') $cookie_admin = "@".$session_login; $var_f = charger_fonction('session', 'inc'); $cookie_session = $var_f($row_auteur); ### DBG fich_debug("DBG >> $cookie_session\n"); // On poste le cookie de session spip_setcookie('spip_session', $cookie_session); // On loge l'authentification spip_log("login de $login depuis LCS"); ////////////// test de recup des zones/groupes ////////////// // dans un premier temps on ne s'occupe que des groupes principaux // pour les groupes secondaire, des verifs supplementaires seront a effectuer // # // # - on teste l'existence d'une zone d'acces restreint intitulee Profs ou Administratifs // # - on recupere les groupe d'appartenance du user // # - on verifie l'appartenance du user a la/les zone/s de meme intitule que le/les groupe/s // # - si il n'est pas dans la zone on l'ajoute
/** * Ajoute un utilisateur dans l'annuaire LDAP * @Parametres * @Return */ function add_user($uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber){ // Recuperer le gidNumber par defaut -> lcs-users (1000) ou slis (600) global $defaultgid,$domain,$defaultshell,$domainsid,$uidPolicy; global $attribut_pseudo; global $liste_caracteres_accentues, $liste_caracteres_desaccentues; fich_debug("================\n"); fich_debug("add_user:\n"); fich_debug("\$defaultgid=$defaultgid\n"); fich_debug("\$domain=$domain\n"); fich_debug("\$defaultshell=$defaultshell\n"); fich_debug("\$domainsid=$domainsid\n"); fich_debug("\$uidPolicy=$uidPolicy\n"); global $pathscripts; fich_debug("\$pathscripts=$pathscripts\n"); // crob_init(); Ne sert a rien !!!! //$nom=ereg_replace("[^a-z_-]","",strtolower(strtr(ereg_replace("Æ","AE",ereg_replace("æ","ae",ereg_replace("¼","OE",ereg_replace("½","oe","$nom"))))," 'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","__AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))); //$prenom=ereg_replace("[^a-z_-]","",strtolower(strtr(ereg_replace("Æ","AE",ereg_replace("æ","ae",ereg_replace("¼","OE",ereg_replace("½","oe","$prenom"))))," 'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","__AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))); //$nom=ereg_replace("[^a-z_ -]","",strtolower(strtr(ereg_replace("Æ","AE",ereg_replace("æ","ae",ereg_replace("¼","OE",ereg_replace("½","oe","$nom")))),"'ÂÄÀÁÃÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕئÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõø¨ûüùúýÿ¸","_AAAAAACEEEEIIIINOOOOOOSUUUUYYZaaaaaaceeeeiiiinooooooosuuuuyyz"))); //$prenom=ereg_replace("[^a-z_ -]","",strtolower(strtr(ereg_replace("Æ","AE",ereg_replace("æ","ae",ereg_replace("¼","OE",ereg_replace("½","oe","$prenom")))),"'ÂÄÀÁÃÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕئÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõø¨ûüùúýÿ¸","_AAAAAACEEEEIIIINOOOOOOSUUUUYYZaaaaaaceeeeiiiinooooooosuuuuyyz"))); $nom=preg_replace("/[^a-z_ -]/","",strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$nom")))),"'$liste_caracteres_accentues","_$liste_caracteres_desaccentues"))); $prenom=preg_replace("/[^a-z_ -]/","",strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$prenom")))),"'$liste_caracteres_accentues","_$liste_caracteres_desaccentues"))); $nom=ucfirst(strtolower($nom)); $prenom=ucfirst(strtolower($prenom)); fich_debug("\$nom=$nom\n"); fich_debug("\$prenom=$prenom\n"); // Recuperer un uidNumber: //$uidNumber=get_first_free_uidNumber(); if(!get_first_free_uidNumber()){return false;exit();} $uidNumber=get_first_free_uidNumber(); $rid=2*$uidNumber+1000; // On n'utilise plus ce $pgrid: on passe à 513 $pgrid=2*$defaultgid+1001; fich_debug("\$uidNumber=$uidNumber\n"); // Faut-il interdire les espaces dans le password? les apostrophes? // Comment le script ntlmpass.pl prend-il le parametre sans les apostrophes? //$ntlmpass=explode(" ",exec("$pathscripts/ntlmpass.pl '$password'")); echo "Preparation du mot de passe pour $nom $prenom\n"; $ntlmpass=explode(" ",exec("export LC_ALL=\"fr_FR.UTF-8\";$pathscripts/ntlmpass.pl '$password'")); $sambaLMPassword=$ntlmpass[0]; $sambaNTPassword=$ntlmpass[1]; //$userPassword=exec("$pathscripts/unixPassword.pl '$password'"); $userPassword=exec("export LC_ALL=\"fr_FR.UTF-8\";$pathscripts/unixPassword.pl '$password'"); $attribut=array(); $attribut["uid"]="$uid"; $attribut["cn"]="$prenom $nom"; //$attribut["givenName"]=strtolower($prenom).strtoupper(substr($nom,0,1)); $attribut["givenName"]=ucfirst(strtolower($prenom)); //$attribut["$attribut_pseudo"]=strtolower($prenom).strtoupper(substr($nom,0,1)); $attribut["$attribut_pseudo"]=preg_replace("/ /","_",strtolower($prenom).strtoupper(substr($nom,0,1))); $attribut["sn"]="$nom"; $attribut["mail"]="$uid@$domain"; //$attribut["objectClass"]="top"; /* // Comme la cle est toujours objectClass, cela pose un probleme: un seul attribut objectClass est ajoute (le dernier defini) $attribut["objectClass"]="posixAccount"; $attribut["objectClass"]="shadowAccount"; $attribut["objectClass"]="person"; $attribut["objectClass"]="inetOrgPerson"; $attribut["objectClass"]="sambaSamAccount"; */ $attribut["objectClass"][0]="top"; $attribut["objectClass"][1]="posixAccount"; $attribut["objectClass"][2]="shadowAccount"; $attribut["objectClass"][3]="person"; $attribut["objectClass"][4]="inetOrgPerson"; $attribut["objectClass"][5]="sambaSamAccount"; $attribut["loginShell"]="$defaultshell"; $attribut["uidNumber"]="$uidNumber"; $attribut["gidNumber"]="$defaultgid"; $attribut["homeDirectory"]="/home/$uid"; $attribut["gecos"]="$prenom $nom,$naissance,$sexe,N"; $attribut["sambaSID"]="$domainsid-$rid"; //$attribut["sambaPrimaryGroupSID"]="$domainsid-$pgrid"; $attribut["sambaPrimaryGroupSID"]="$domainsid-513"; $attribut["sambaPwdMustChange"]="2147483647"; $attribut["sambaPwdLastSet"]="1"; $attribut["sambaAcctFlags"]="[U ]"; $attribut["sambaLMPassword"]="******"; $attribut["sambaNTPassword"]="******"; $attribut["userPassword"]="******"; // IL faut aussi l'employeeNumber if("$employeeNumber"!=""){ $attribut["employeeNumber"]="$employeeNumber"; } $result=add_entry("uid=$uid","people",$attribut); if($result){ /* // Reste a ajouter les autres attributs objectClass unset($attribut); $attribut=array(); $attribut["objectClass"]="posixAccount"; if(modify_attribut("uid=$uid","people", $attribut, "add")){ unset($attribut); $attribut=array(); $attribut["objectClass"]="shadowAccount"; if(modify_attribut("uid=$uid","people", $attribut, "add")){ unset($attribut); $attribut=array(); $attribut["objectClass"]="person"; if(modify_attribut("uid=$uid","people", $attribut, "add")){ unset($attribut); $attribut=array(); $attribut["objectClass"]="inetOrgPerson"; if(modify_attribut("uid=$uid","people", $attribut, "add")){ unset($attribut); $attribut=array(); $attribut["objectClass"]="sambaSamAccount"; if(modify_attribut("uid=$uid","people", $attribut, "add")) return true; else return false; } else return false; } else return false; } else return false; } else return false; */ return true; } else return false; }
fich_debug("DBG >> $cookie_session\n"); // On poste le cookie de session spip_setcookie('spip_session', $cookie_session); // On loge l'authentification spip_log("login de $login depuis LCS"); } } elseif ( $action=="logout" ) { close_session($idpers); @define('_DIR_RESTREINT_ABS', 'ecrire/'); include_once _DIR_RESTREINT_ABS.'inc_version.php'; include_spip('inc/cookie'); include_once _DIR_RESTREINT_ABS.'auth/ldap.php'; include_spip('inc/session'); $result = spip_query("SELECT id_auteur FROM spip_auteurs WHERE login='******' AND source='ldap'"); $row_auteur = spip_fetch_array($result); ### DBG fich_debug("DBG >> id auteur : ".$row_auteur['id_auteur']."\n"); supprimer_sessions($row_auteur['id_auteur']); spip_setcookie('spip_session', '', 0); } else fich_debug("DBG >> No login No logout\n"); #On redirige vesr la page d'accueil dans tous les cas echo "<script language=\"JavaScript\" type=\"text/javascript\">\n"; echo "<!--\n"; echo "top.location.href = '../lcs/index.php?url_redirect=accueil.php';\n"; echo "//-->\n"; echo "</script>\n"; ?>