security_check();
if ($resultat_session == 'c') {
header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
die();
} else if ($resultat_session == '0') {
header("Location: ../logout.php?auto=1");
die();
}
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
function add_user($_login, $_nom, $_prenom, $_sexe, $_statut, $_email) {
// Fonction d'ajout de l'utilisateur
if ($_sexe == "M") {
$_civilite = "M.";
} else {
$_civilite = "Mme";
}
// Si l'utilisateur existe déjà, on met simplement à jour ses informations...
$test = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM utilisateurs WHERE login = '" . $_login . "'");
if (mysqli_num_rows($test) > 0) {
$record = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET
nom = '" . $_nom . "',
prenom = '" . $_prenom . "',
civilite = '" . $_civilite . "',
email = '" . $_email . "',
statut = '" . $_statut . "',
etat = 'actif',
auth_mode='sso'
WHERE login = '" . $_login . "'");
} else {
$query = "INSERT into utilisateurs SET
login= '" . $_login . "',
nom = '" . $_nom . "',
prenom = '" . $_prenom . "',
password = '',
salt='',
civilite = '" . $_civilite . "',
email = '" . $_email . "',
statut = '" . $_statut . "',
etat ='actif',
auth_mode='sso',
change_mdp = 'n'";
$record = mysqli_query($GLOBALS["mysqli"], $query);
}
if ($record) {
return true;
} else {
return false;
}
}
// Initialisation
$lcs_ldap_people_dn = 'ou=people,'.$lcs_ldap_base_dn;
$lcs_ldap_groups_dn = 'ou=groups,'.$lcs_ldap_base_dn;
//**************** EN-TETE *****************
$titre_page = "Outil d'initialisation de l'année : Importation des professeurs";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************
echo "
Retour
";
if (isset($_POST['is_posted'])) {
check_token();
// L'admin a validé la procédure, on procède donc...
// On se connecte au LDAP
$ds = connect_ldap($lcs_ldap_host,$lcs_ldap_port,"","");
// LDAP attribute
$ldap_people_attr = array(
"uid", // login
"cn", // Prenom Nom
"sn", // Nom
"givenname", // Pseudo
"mail", // Mail
"homedirectory", // Home directory personnal web space
"description",
"loginshell",
"gecos" // Date de naissance,Sexe (F/M),
);
echo "\n| Login Professeur | Nom | Prénom | Sexe | Email |
\n";
// On commence par récupérer tous les profs depuis le LDAP
$attr[] = "memberuid";
$result = ldap_read ( $ds, "cn=Profs,".$lcs_ldap_groups_dn, "(objectclass=*)",$attr);
// On met tous les professeurs en état inactif
$update = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET etat='inactif' WHERE statut='professeur'");
$info = ldap_get_entries ( $ds, $result );
if ( $info["count"]) {
for($i=0;$i<$info[0]["memberuid"]["count"];$i++) {
$uid = $info[0]["memberuid"][$i];
if (($uid != "etabw") and ($uid!="webmaster.etab") and ($uid!="spip.manager")) {
// Extraction des infos sur le professeur :
$result2 = @ldap_read ( $ds, "uid=".$uid.",".$lcs_ldap_people_dn, "(objectclass=posixAccount)", $ldap_people_attr );
if ($result2) {
$info2 = @ldap_get_entries ( $ds, $result2 );
if ( $info2["count"]) {
// Traitement du champ gecos pour extraction de date de naissance, sexe
$gecos = $info2[0]["gecos"][0];
$tmp = split ("[\,\]",$info2[0]["gecos"][0],4);
$ret_people = array (
"nom" => stripslashes($info2[0]["sn"][0]),
"fullname" => stripslashes($info2[0]["cn"][0]),
"email" => $info2[0]["mail"][0],
"sexe" => $tmp[2],
);
$long = mb_strlen($ret_people["fullname"]) - mb_strlen($ret_people["nom"]);
$prenom = mb_substr($ret_people["fullname"], 0, $long) ;
}
@ldap_free_result ( $result2 );
}
// On ajoute l'utilisateur. La fonction s'occupe toute seule de vérifier que
// le login n'existe pas déjà dans la base. S'il existe, on met simplement à jour
// les informations
// function add_user($_login, $_nom, $_prenom, $_statut) {
$add = add_user($uid,$ret_people["nom"],$prenom,$ret_people["sexe"],"professeur",$ret_people["email"]);
echo "| ".$uid." | ".$ret_people["nom"]." | ".$prenom." | ".$tmp[2]." | ".$ret_people["email"]." |
\n";
}
}
echo "";
}
echo "Opération effectuée.
";
echo "Vous pouvez vérifier l'importation en allant sur la page de gestion des utilisateurs.
";
} else {
echo "L'opération d'importation des professeurs depuis le LDAP de LCS va effectuer les opérations suivantes :
";
echo "";
echo "- Passage à l'état 'inactif' de tous les professeurs déjà présents dans la base Gepi.
";
echo "- Tentative d'ajout de chaque utilisateur 'professeur' présent dans l'annuaire LDAP de LCS.
";
echo "- Si l'utilisateur n'existe pas, il est créé et est directement utilisable.
";
echo "- Si l'utilisateur existe déjà, ses informations de base sont mises à jour et il passe en état 'actif', devenant directement utilisable.
";
echo "
";
echo "";
}
require("../lib/footer.inc.php");
?>