function delete_user($login) { $sql = "SELECT source FROM " . TABLE_PREFIX . "_utilisateurs\n\t WHERE login LIKE '{$login}'"; $res = grr_sql_query($sql); $row = grr_sql_row($res, 0); $source = $row[0]; if ($source == 'ext') { // Si l'utilisateur avait été créé automatiquement, on le // supprime // Cf. admin_user.php l99 et l203 $sql = "DELETE FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(1, "<p>" . grr_sql_error()); } else { grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_mailuser_room WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_area WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_room WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'"); } // Fin de la session grr_closeSession($_GET['auto']); } // sinon c'est source="local": on le garde et il y a toujours accès // classique login/mot de passe). }
grr_sql_query("DELETE from ".TABLE_PREFIX."_setting where NAME = 'maj196_qui_peut_reserver_pour'"); grr_sql_query("INSERT INTO ".TABLE_PREFIX."_setting VALUES ('maj196_qui_peut_reserver_pour', '1');"); $result .= "<b>Mise à jour du champs qui_peut_reserver_pour : </b><span style=\"color:green;\">Ok !</span><br /><br />"; } // Mise à jour du numéro de version $req = grr_sql_query1("SELECT VALUE FROM ".TABLE_PREFIX."_setting WHERE NAME='version'"); if ($req == -1) { $result_inter .= traite_requete("INSERT INTO ".TABLE_PREFIX."_setting VALUES ('version', '".$version_grr."');"); } else { $result_inter .= traite_requete("UPDATE ".TABLE_PREFIX."_setting SET VALUE='".$version_grr."' WHERE NAME='version';"); } // Mise à jour du numéro de RC $req = grr_sql_command("DELETE FROM ".TABLE_PREFIX."_setting WHERE NAME='versionRC'"); $result_inter .= traite_requete("INSERT INTO ".TABLE_PREFIX."_setting VALUES ('versionRC', '".$version_grr_RC."');"); //Re-Chargement des valeurs de la table settingS if (!loadSettings()) { die("Erreur chargement settings"); } affiche_pop_up(get_vocab("maj_good"),"force"); } // Numéro de version effective $version_old = getSettingValue("version"); if ($version_old == "") $version_old = "1.3"; // Numéro de RC $version_old_RC = getSettingValue("versionRC");
/** NettoyerTablesJointure() * * Supprime les lignes inutiles dans les tables de liaison * */ function NettoyerTablesJointure() { $nb = 0; // Table grr_j_mailuser_room $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_mailuser_room j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login IS NULL)"; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $nb++; grr_sql_command("delete from " . TABLE_PREFIX . "_j_mailuser_room where login='******'"); } } // Table grr_j_user_area $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_user_area j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login IS NULL)"; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $nb++; grr_sql_command("delete from " . TABLE_PREFIX . "_j_user_area where login='******'"); } } // Table grr_j_user_room $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_user_room j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login IS NULL)"; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $nb++; grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_room WHERE login='******'"); } } // Table grr_j_useradmin_area $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_useradmin_area j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login IS NULL)"; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $nb++; grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'"); } } // Table grr_j_useradmin_site $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_useradmin_site j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login IS NULL)"; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $nb++; grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'"); } } // Suppression effective echo "<hr />\n"; echo "<p class='avertissement'>" . get_vocab("tables_liaison") . get_vocab("deux_points") . $nb . get_vocab("entres_supprimees") . "</p>\n"; }
$test_statut = grr_sql_query1("SELECT statut FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'user_del'] . "'"); if ($test_statut == "gestionnaire_utilisateur" || $test_statut == "administrateur") { $can_delete = "no"; } } if ($temp != getUserName() && $can_delete == "yes") { $temp = str_replace('\\', '\\\\', $temp); $sql = "DELETE FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(1, "<p>" . grr_sql_error()); } else { grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_mailuser_room WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_area WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_room WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'"); $msg = get_vocab("del_user_succeed"); } } } if (isset($mess) && $mess != "") { echo "<p>" . $mess . "</p>"; } echo "<h2>" . get_vocab('admin_user.php') . "</h2>"; if (empty($display)) { $display = 'actifs'; } if (empty($order_by)) { $order_by = 'nom,prenom'; } ?>
/** NettoyerTablesJointure() * Supprime les lignes inutiles dans les tables de liaison. */ function NettoyerTablesJointure() { $nb = 0; // Table grr_j_mailuser_room $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_mailuser_room j LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login WHERE (u.login IS NULL)'; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); ++$i) { ++$nb; grr_sql_command('delete from ' . TABLE_PREFIX . "_j_mailuser_room where login='******'"); } } // Table grr_j_user_area $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_user_area j LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login WHERE (u.login IS NULL)'; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); ++$i) { ++$nb; grr_sql_command('delete from ' . TABLE_PREFIX . "_j_user_area where login='******'"); } } // Table grr_j_user_room $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_user_room j LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login WHERE (u.login IS NULL)'; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); ++$i) { ++$nb; grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_user_room WHERE login='******'"); } } // Table grr_j_useradmin_area $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_useradmin_area j LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login WHERE (u.login IS NULL)'; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); ++$i) { ++$nb; grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'"); } } // Table grr_j_useradmin_site $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_useradmin_site j LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login WHERE (u.login IS NULL)'; $res = grr_sql_query($req); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); ++$i) { ++$nb; grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'"); } } // Suppression effective echo "<hr />\n"; echo "<p class='avertissement'>" . get_vocab('tables_liaison') . get_vocab('deux_points') . $nb . get_vocab('entres_supprimees') . "</p>\n"; }
$clef = 0; $upd = "UPDATE " . TABLE_PREFIX . "_entry SET clef='{$clef}' WHERE id = '" . $id . "'"; if (grr_sql_command($upd) < 0) { fatal_error(0, grr_sql_error()); } } if (isset($_GET['courrier'])) { $courrier = 1; $upd = "UPDATE " . TABLE_PREFIX . "_entry SET courrier='{$courrier}' WHERE id = '" . $id . "'"; if (grr_sql_command($upd) < 0) { fatal_error(0, grr_sql_error()); } } else { $courrier = 0; $upd = "UPDATE " . TABLE_PREFIX . "_entry SET courrier='{$courrier}' WHERE id = '" . $id . "'"; if (grr_sql_command($upd) < 0) { fatal_error(0, grr_sql_error()); } } if (isset($_GET["envoyer_mail"]) && Settings::get("automatic_mail") == 'yes') { $_SESSION['session_message_error'] = send_mail($id, 7, $dformat); if ($_SESSION['session_message_error'] == "") { $_SESSION['displ_msg'] = "yes"; $_SESSION["msg_a_afficher"] = get_vocab("un email envoye") . " " . $_GET["mail_exist"]; } } header("Location: " . $_GET['back'] . ""); die; } } if (!isset($day) || !isset($month) || !isset($year)) {
$n = mktime(0,0,0,$month,$day,$year); if (isset($_POST[$n])) { // Le jour a été selectionné dans le calendrier $starttime = mktime($morningstarts, 0, 0, $month, $day , $year); $endtime = mktime($eveningends, 0, $resolution, $month, $day, $year); // Pour toutes les dates bon précédement enregistrées, on efface toutes les résa en conflit if (!in_array($n,$day_old)) { $sql = "select id from ".TABLE_PREFIX."_room"; $res = grr_sql_query($sql); if ($res) for ($i = 0; ($row = grr_sql_row($res, $i)); $i++) $result += grrDelEntryInConflict($row[0], $starttime, $endtime, 0, 0, 1); } // On enregistre la valeur dans ".TABLE_PREFIX."_calendar $sql = "INSERT INTO ".TABLE_PREFIX."_calendar set DAY='".$n."'"; if (grr_sql_command($sql) < 0) fatal_error(0, "<p>" . grr_sql_error()); } $day++; } $month++; if ($month == 13) { $year++; $month = 1; } } } echo "\n<p>".get_vocab("les_journees_cochees_sont_ignorees")."</p>"; echo "\n<table cellpadding=\"3\">\n"; $basetime = mktime(12,0,0,6,11+$weekstarts,2000);
function delete_site($id) { if (!(isset($_GET['confirm']))) { echo '<h2>'.get_vocab('supprimer site').'</h2>'; echo '<h2 style="text-align:center;">' . get_vocab('sure') . '</h2>'; echo '<h2 style="text-align:center;"><a href="admin_site.php?action=delete&id='.$id.'&confirm=yes">' . get_vocab('YES') . '!</a> <a href="admin_site.php?action=delete&id='.$id.'&confirm=no">' . get_vocab('NO') . '!</a></h2>'; } else { if ($_GET['confirm']=='yes') { grr_sql_command("delete from ".TABLE_PREFIX."_site where id='".$_GET['id']."'"); grr_sql_command("delete from ".TABLE_PREFIX."_j_site_area where id_site='".$_GET['id']."'"); grr_sql_command("delete from ".TABLE_PREFIX."_j_useradmin_site where id_site='".$_GET['id']."'"); grr_sql_command("update ".TABLE_PREFIX."_utilisateurs set default_site = '-1' where default_site='".$_GET['id']."'"); $test = grr_sql_query1("select VALUE from ".TABLE_PREFIX."_setting where NAME='default_site'"); if ($test==$_GET['id']) grr_sql_command("delete from ".TABLE_PREFIX."_setting where NAME='default_site'"); // On affiche le tableau des sites read_sites(); } else { // On affiche le tableau des sites read_sites(); } } }
grrDelOverloadFromEntries($id_overload); $sql = "DELETE FROM " . TABLE_PREFIX . "_overload WHERE id={$id_overload};"; grr_sql_command($sql); } //OK, nothing there, lets blast it away grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_area WHERE id={$id_area}"); grr_sql_command("update " . TABLE_PREFIX . "_utilisateurs set default_area = '-1', default_room = '-1' WHERE default_area='" . $id_area . "'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_area_periodes WHERE id_area={$id_area}"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE id_area={$id_area}"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_type_area WHERE id_area={$id_area}"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_area WHERE id_area={$id_area}"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_site_area WHERE id_area={$id_area}"); $test = grr_sql_query1("select VALUE from " . TABLE_PREFIX . "_setting WHERE NAME='default_area'"); if ($test == $id_area) { grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_setting WHERE NAME='default_area'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_setting WHERE NAME='default_room'"); // Settings require_once "./include/settings.class.php"; //Chargement des valeurs de la table settingS if (!Settings::load()) { die("Erreur chargement settings"); } } //Redirect back to the admin page header("Location: admin_room.php?id_site={$id_site}"); die; } else { //There are rooms left in the area //print the page header print_header("", "", "", $type = "with_session"); //print_banner("", "", "", "", $type = "with_session", $page = "admin");
} // On fait l'action si l'id/area a été validé. if ( $arearight == True ) { $sql = "update ".TABLE_PREFIX."_overload set fieldname='".protect_data_sql($fieldname)."', fieldtype='".protect_data_sql($fieldtype)."', obligatoire='".$obligatoire."', confidentiel='".$confidentiel."', affichage='".$affichage."', overload_mail='".$overload_mail."', fieldlist='".protect_data_sql($fieldlist)."' where id=$id_overload;"; if (grr_sql_command($sql) < 0) fatal_error(0, "$sql \n\n" . grr_sql_error()); } } // X- On affiche la première ligne du tableau avec les libelles. $html = get_vocab("explication_champs_additionnels")."\n"; $html .= "<form method=\"post\" action=\"admin_overload.php\" >\n<table border=\"0\">"; $html .= "<tr><td>".get_vocab("match_area").get_vocab("deux_points")."</td>\n"; $html .= "<td>".get_vocab("fieldname").get_vocab("deux_points")."</td>\n"; $html .= "<td>".get_vocab("fieldtype").get_vocab("deux_points")."</td>\n"; $html .= "<td><span class='small'>".get_vocab("champ_obligatoire")."</span></td>\n"; $html .= "<td><span class='small'>".get_vocab("affiche_dans_les vues")."</span></td>\n"; $html .= "<td><span class='small'>".get_vocab("affiche_dans_les mails")."</span></td>\n"; $html .= "<td><span class='small'>".get_vocab("champ_confidentiel")."</span></td>\n"; $html .= "<td> </td></tr>\n";
$verif_display_email = verif_display_email(getUserName(), $room_id); if ($verif_display_email) $option_affiche_nom_prenom_email = "withmail"; else $option_affiche_nom_prenom_email = "nomail"; // Si l'utilisateur est administrateur, possibilité de modifier le statut de la réservation (en cours / libérée) if (($fin_session == 'n') and (getUserName()!='') and (authGetUserLevel(getUserName(),$room_id) >= 3) and (isset($_GET['ok']))) { if (!$was_del) { if ($reg_statut_id != "") { $upd1 = "update ".TABLE_PREFIX."_entry set statut_entry='-' where room_id = '".$room_id."'"; if (grr_sql_command($upd1) < 0) return 0; $upd2 = "update ".TABLE_PREFIX."_entry set statut_entry='$reg_statut_id' where id = '".$id."'"; if (grr_sql_command($upd2) < 0) return 0; } if ((isset($_GET["envoyer_mail"])) and (getSettingValue("automatic_mail") == 'yes')) { $_SESSION['session_message_error'] = send_mail($id,7,$dformat); if ($_SESSION['session_message_error'] == "") { $_SESSION['displ_msg'] = "yes"; $_SESSION["msg_a_afficher"] = get_vocab("un email envoye")." ".$_GET["mail_exist"]; } } header("Location: ".$_GET['back'].""); die(); } } #If we dont know the right date then make it up if(!isset($day) or !isset($month) or !isset($year))
/** mrbsCreateRepeatEntry() * * Creates a repeat entry in the data base * * $starttime - Start time of entry * $endtime - End time of entry * $rep_type - The repeat type * $rep_enddate - When the repeating ends * $rep_opt - Any options associated with the entry * $room_id - Room ID * $beneficiaire - beneficiaire * $beneficiaire_ext - beneficiaire extérieur * $creator - celui aui a créé ou modifié la réservation. * $name - Name * $type - Type (Internal/External) * $description - Description *$rep_jour_c - Le jour cycle d'une réservation, si aucun 0 * * Returns: * 0 - An error occured while inserting the entry * non-zero - The entry's ID */ function mrbsCreateRepeatEntry($starttime, $endtime, $rep_type, $rep_enddate, $rep_opt, $room_id, $creator, $beneficiaire, $beneficiaire_ext, $name, $type, $description, $rep_num_weeks,$overload_data, $rep_jour_c) { $overload_data_string = ""; $area_id = mrbsGetAreaIdFromRoomId($room_id); $overload_fields_list = mrbsOverloadGetFieldslist($area_id); foreach ($overload_fields_list as $field=>$fieldtype) { $id_field = $overload_fields_list[$field]["id"]; if (array_key_exists($id_field,$overload_data)) { // $begin_string = "<".$id_field.">"; //tructruc // $end_string = "</".$id_field.">"; //tructruc $begin_string = "@".$id_field."@"; $end_string = "@/".$id_field."@"; // $overload_data_string .= $begin_string.base64_encode($overload_data[$id_field]).$end_string; // tructruc $overload_data_string .= $begin_string.urlencode($overload_data[$id_field]).$end_string; // tructruc } } $sql = "INSERT INTO ".TABLE_PREFIX."_repeat ( start_time, end_time, rep_type, end_date, rep_opt, room_id, create_by, beneficiaire, beneficiaire_ext, type, name, description, rep_num_weeks, overload_desc, jours) VALUES ($starttime, $endtime, $rep_type, $rep_enddate, '$rep_opt', $room_id, '".protect_data_sql($creator)."','".protect_data_sql($beneficiaire)."','".protect_data_sql($beneficiaire_ext)."', '".protect_data_sql($type)."', '".protect_data_sql($name)."', '".protect_data_sql($description)."', '$rep_num_weeks','".protect_data_sql($overload_data_string)."',".$rep_jour_c.")"; if (grr_sql_command($sql) < 0) { return 0; } return grr_sql_insert_id("".TABLE_PREFIX."_repeat", "id"); }
// // Suppression d'un type de réservation // if ((isset($_GET['action_del'])) and ($_GET['js_confirmed'] ==1) and ($_GET['action_del']='yes')) { // faire le test si il existe une réservation en cours avec ce type de réservation $type_id = grr_sql_query1("select type_letter from ".TABLE_PREFIX."_type_area where id = '".$_GET['type_del']."'"); $test1 = grr_sql_query1("select count(id) from ".TABLE_PREFIX."_entry where type= '".$type_id."'"); $test2 = grr_sql_query1("select count(id) from ".TABLE_PREFIX."_repeat where type= '".$type_id."'"); if (($test1 != 0) or ($test2 != 0)) { $msg = "Suppression impossible : des réservations ont été enregistrées avec ce type."; } else { $sql = "DELETE FROM ".TABLE_PREFIX."_type_area WHERE id='".$_GET['type_del']."'"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} $sql = "DELETE FROM ".TABLE_PREFIX."_j_type_area WHERE id_type='".$_GET['type_del']."'"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} } } affiche_pop_up($msg,"admin"); echo "<h2>".get_vocab('admin_type.php')."</h2>"; echo get_vocab('admin_type_explications'); echo "<br />\n"; echo "<br />\n"; echo "| <a href=\"admin_type_modify.php?id=0\">".get_vocab("display_add_type")."</a> |\n"; echo "<br />\n"; echo "<br />\n"; $sql = "SELECT id, type_name, order_display, couleur, type_letter, disponible FROM ".TABLE_PREFIX."_type_area ORDER BY order_display,type_letter"; $res = grr_sql_query($sql);
$res = grr_sql_query1($sql); if ($res == -1) { $sql = "insert into ".TABLE_PREFIX."_j_useradmin_area (login, id_area) values ('$reg_admin_login',$id_area)"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} else {$msg=get_vocab("add_user_succeed");} } else { $msg = get_vocab("warning_exist"); } } } if ($action) { if ($action == "del_admin") { unset($login_admin); $login_admin = $_GET["login_admin"]; $sql = "DELETE FROM ".TABLE_PREFIX."_j_useradmin_area WHERE (login='******' and id_area = '$id_area')"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} else {$msg=get_vocab("del_user_succeed");} } } echo "<h2>".get_vocab('admin_right_admin.php').grr_help("aide_grr_administateur_restreint")."</h2>\n"; echo "<p><i>".get_vocab("admin_right_admin_explain")."</i></p>\n"; // Affichage d'un pop-up affiche_pop_up($msg,"admin"); # Table with areas. echo "<table><tr>\n"; $this_area_name = ""; # Show all areas echo "<td ><p><b>".get_vocab("areas")."</b></p>\n"; $out_html = "<form id=\"area\" action=\"admin_right_admin.php\" method=\"post\"><div><select name=\"area\" onchange=\"area_go()\">\n";
/** * Open a new session * * Check the provided login and password * Register data from the database to the session cookie * Log the session * * Returns 1 if login succeeded, >= 1 otherwise * * @param string _login * @param string _password * @return string */ function grr_opensession($_login, $_password, $_user_ext_authentifie = '', $tab_login = array(), $tab_groups = array()) { // Initialisation de $auth_ldap $auth_ldap = 'no'; // Initialisation de $auth_imap $auth_imap = 'no'; // Initialisation de $est_authentifie_sso $est_authentifie_sso = FALSE; if ($_user_ext_authentifie != '') { $est_authentifie_sso = TRUE; // Statut par défaut $_statut = ""; $sso = Settings::get("sso_statut"); if ($sso == "cas_visiteur") { $_statut = "visiteur"; } else { if ($sso == "cas_utilisateur") { $_statut = "utilisateur"; } else { if ($sso == "lemon_visiteur") { $_statut = "visiteur"; } else { if ($sso == "lemon_utilisateur") { $_statut = "utilisateur"; } else { if ($sso == "http_visiteur") { $_statut = "visiteur"; } else { if ($sso == "http_utilisateur") { $_statut = "utilisateur"; } else { if ($sso == "lasso_visiteur") { $_statut = "visiteur"; } else { if ($sso == "lasso_utilisateur") { $_statut = "utilisateur"; } else { if ($sso == "lcs") { if ($_user_ext_authentifie == "lcs_eleve") { $_statut = Settings::get("lcs_statut_eleve"); } if ($_user_ext_authentifie == "lcs_non_eleve") { $_statut = Settings::get("lcs_statut_prof"); } $temoin_grp_ok = "non"; if (trim(Settings::get("lcs_liste_groupes_autorises")) == "") { $temoin_grp_ok = "oui"; } else { $tab_grp_autorise = explode(";", Settings::get("lcs_liste_groupes_autorises")); $tot = count($tab_grp_autorise); for ($i = 0; $i < $tot; $i++) { if (in_array($tab_grp_autorise[$i], $tab_groups)) { $temoin_grp_ok = "oui"; } } } // Si l'utilisateur n'appartient pas aux groupes LCS autorisés if ($temoin_grp_ok != 'oui') { return "5"; } } } } } } } } } } $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\t\tfrom " . TABLE_PREFIX . "_utilisateurs\n\t\twhere login = '******' and "; if ($_user_ext_authentifie != 'lasso') { $sql .= " password = '' and "; } $sql .= " etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // L'utilisateur est présent dans la base locale if ($sso == "lcs") { // Mise à jour des données $nom_user = $tab_login["nom"]; $email_user = $tab_login["email"]; $prenom_user = $tab_login["fullname"]; // On met à jour $sql = "UPDATE " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\t\tnom='" . protect_data_sql($nom_user) . "',\n\t\t\t\tprenom='" . protect_data_sql($prenom_user) . "',\n\t\t\t\temail='" . protect_data_sql($email_user) . "'\n\t\t\t\twhere login='******'"; } else { if ($_user_ext_authentifie == "cas") { if (Settings::get("ldap_statut") != '' && @function_exists("ldap_connect") && @file_exists("include/config_ldap.inc.php")) { $auth_ldap = 'yes'; } $nom_user = $tab_login["user_nom"]; $email_user = $tab_login["user_email"]; $prenom_user = $tab_login["user_prenom"]; if ($nom_user != '') { // On détecte si Nom, Prénom ou Email ont changé, // Si c'est le cas, on met à jour les champs $req = grr_sql_query("SELECT nom, prenom, email from " . TABLE_PREFIX . "_utilisateurs where login ='******'"); $res = mysqli_fetch_array($req); $nom_en_base = $res[0]; $prenom_en_base = $res[1]; $email_en_base = $res[2]; if (strcmp($nom_en_base, $nom_user) != 0 || strcmp($prenom_en_base, $prenom_user) != 0 || strcmp($email_en_base, $email_user) != 0) { // Si l'un des champs est différent, on met à jour les champs $sql = "UPDATE " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\t\t\t\tnom='" . protect_data_sql($nom_user) . "',\n\t\t\t\t\t\tprenom='" . protect_data_sql($prenom_user) . "',\n\t\t\t\t\t\temail='" . protect_data_sql($email_user) . "'\n\t\t\t\t\t\twhere login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); } //Comme les données de la base on été changés, on doit remettre à jour la variable $row, //Pour que les données mises en sessions soient les bonnes //on récupère les données de l'utilisateur $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\t\t\t\t\t\tFROM " . TABLE_PREFIX . "_utilisateurs\n\t\t\t\t\t\tWHERE login = '******' and\n\t\t\t\t\t\tsource = 'ext' and\n\t\t\t\t\t\tetat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row != 1) { return "2"; } } } } } if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); } // on récupère les données de l'utilisateur dans $row $row = grr_sql_row($res_user, 0); } else { // L'utilisateur n'est pas présent dans la base locale ou est inactif // ou possède un mot de passe (utilisateur local GRR) // On teste si un utilisateur porte déjà le même login $test = grr_sql_query1("SELECT login FROM " . TABLE_PREFIX . "_utilisateurs WHERE login = '******'"); if ($test != '-1') { return "3"; } else { //Aucun utilisateur dans la base locale ne porte le même login. On peut continuer la procédure d'importation //1er cas : LCS. if ($sso == "lcs") { if ($_statut == 'aucun') { return "5"; } else { $nom_user = $tab_login["nom"]; $email_user = $tab_login["email"]; $prenom_user = $tab_login["fullname"]; } //2ème cas : SSO lasso. } else { if ($sso == "lasso_visiteur" or $sso == "lasso_utilisateur") { if (!empty($tab_login)) { $nom_user = $tab_login["nom"]; $email_user = $tab_login["email"]; $prenom_user = $tab_login["fullname"]; } //CAS d'un LDAP avec SSO CAS ou avec SSO Lemonldap //on tente de récupérer des infos dans l'annuaire avant d'importer le profil dans GRR } else { if (Settings::get("ldap_statut") != '' && @function_exists("ldap_connect") && @file_exists("include/config_ldap.inc.php") && $_user_ext_authentifie == 'cas') { // On initialise au cas où on ne réussisse pas à récupérer les infos dans l'annuaire. $l_nom = $_login; $l_email = ''; $l_prenom = ''; include "config_ldap.inc.php"; // Connexion à l'annuaire $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $ldap_login, $ldap_pwd, $use_tls); $user_dn = grr_ldap_search_user($ds, $ldap_base, Settings::get("ldap_champ_recherche"), $_login, $ldap_filter, "no"); // Test with login and password of the user if (!$ds) { $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $_login, $_password, $use_tls); } if ($ds) { $result = @ldap_read($ds, $user_dn, "objectClass=*", array(Settings::get("ldap_champ_nom"), Settings::get("ldap_champ_prenom"), Settings::get("ldap_champ_email"))); } if ($result) { // Recuperer les donnees de l'utilisateur $info = @ldap_get_entries($ds, $result); if (is_array($info)) { for ($i = 0; $i < $info["count"]; $i++) { $val = $info[$i]; if (is_array($val)) { if (isset($val[Settings::get("ldap_champ_nom")][0])) { $l_nom = ucfirst($val[Settings::get("ldap_champ_nom")][0]); } else { $l_nom = iconv("ISO-8859-1", "utf-8", "Nom à préciser"); } if (isset($val[Settings::get("ldap_champ_prenom")][0])) { $l_prenom = ucfirst($val[Settings::get("ldap_champ_prenom")][0]); } else { $l_prenom = iconv("ISO-8859-1", "utf-8", "Prénom à préciser"); } if (isset($val[Settings::get("ldap_champ_email")][0])) { $l_email = $val[Settings::get("ldap_champ_email")][0]; } else { $l_email = ''; } } } } // Convertir depuis UTF-8 (jeu de caracteres par defaut) if (function_exists("utf8_decode") && Settings::get("ConvertLdapUtf8toIso") == "y") { $l_email = utf8_decode($l_email); $l_nom = utf8_decode($l_nom); $l_prenom = utf8_decode($l_prenom); } } $nom_user = $l_nom; $email_user = $l_email; $prenom_user = $l_prenom; //4ème cas : SSO CAS. } else { if ($_user_ext_authentifie == "cas" && !empty($tab_login)) { // Cas d'une authentification CAS $nom_user = $tab_login["user_nom"]; $email_user = $tab_login["user_email"]; $prenom_user = $tab_login["user_prenom"]; $code_fonction_user = $tab_login["user_code_fonction"]; $libelle_fonction_user = $tab_login["user_libelle_fonction"]; $language_user = $tab_login["user_language"]; $default_style_user = $tab_login["user_default_style"]; if (Settings::get("sso_ac_corr_profil_statut") == 'y') { $_statut = effectuer_correspondance_profil_statut($code_fonction_user, $libelle_fonction_user); } //CAS ou : //LDAP n'est pas configuré, //il peut s'agit d'une authentification "SSO CAS", "SSO Lemonldap" mais ce n'est alors pas normal //ou bien il s'agit d'une authentification "HTTP" } else { //definition du nom $nom_user = ""; if (Settings::get("http_champ_nom") != "") { $_nom_user = Settings::get("http_champ_nom"); if (isset($_SERVER["{$_nom_user}"])) { $nom_user = $_SERVER["{$_nom_user}"]; } } if ($nom_user == "") { $nom_user = $_login; } //definition email : $email_user = ""; if (Settings::get("http_champ_email")) { $_email_user = Settings::get("http_champ_email"); if (isset($_SERVER["{$_email_user}"])) { $email_user = $_SERVER["{$_email_user}"]; } //on verifie le statut si domain statut est actif : if ($email_user != "") { if (Settings::get("http_sso_domain") && Settings::get("http_sso_domain") != "") { //explode du mail : $domaine = explode("@", $email_user); if (isset($domaine[1])) { if ($domaine[1] == Settings::get("http_sso_domain")) { if (Settings::get("http_sso_statut_domaine") != "") { $_statut = Settings::get("http_sso_statut_domaine"); } } } } } } //definition du prenom : $prenom_user = ""; if (Settings::get("http_champ_prenom")) { $_prenom_user = Settings::get("http_champ_prenom"); if (isset($_SERVER["{$_prenom_user}"])) { $prenom_user = $_SERVER["{$_prenom_user}"]; } } } } } } // On insère le nouvel utilisateur $sql = "INSERT INTO " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\t\tnom='" . protect_data_sql($nom_user) . "',\n\t\t\t\tprenom='" . protect_data_sql($prenom_user) . "',\n\t\t\t\tlogin='******',\n\t\t\t\tpassword='',\n\t\t\t\tstatut='" . $_statut . "',\n\t\t\t\temail='" . protect_data_sql($email_user) . "',\n\t\t\t\tetat='actif',"; if (isset($default_style_user) and $default_style_user != "") { $sql .= "default_style='" . $default_style_user . "',"; } if (isset($language_user) and $language_user != "") { $sql .= "default_language='" . $language_user . "',"; } $sql .= "source='ext'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; } // on récupère les données de l'utilisateur $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\t\t\tfrom " . TABLE_PREFIX . "_utilisateurs\n\t\t\twhere login = '******' and\n\t\t\tsource = 'ext' and\n\t\t\tetat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { $row = grr_sql_row($res_user, 0); } else { return "2"; } } } //On traite le cas NON SSO //-> LDAP sans SSO // -> Imap } else { $passwd_md5 = md5($_password); $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\tfrom " . TABLE_PREFIX . "_utilisateurs\n\twhere login = '******' and\n\tpassword = '******'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); //On est toujours dans le cas NON SSO - L'utilisateur n'est pas présent dans la base locale if ($num_row != 1) { if (Settings::get("ldap_statut") != '' && @function_exists("ldap_connect") && @file_exists("include/config_ldap.inc.php")) { //$login_search = ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login); $login_search = preg_replace("/[^\\-@._[:space:]a-zA-Z0-9]/", "", $_login); if ($login_search != $_login) { return "6"; } $user_dn = grr_verif_ldap($_login, $_password); if ($user_dn == "error_1") { return "7"; } else { if ($user_dn == "error_2") { return "8"; } else { if ($user_dn == "error_3") { return "9"; } else { if ($user_dn) { $auth_ldap = 'yes'; } else { return "4"; } } } } } elseif (Settings::get("imap_statut") != '' and @function_exists("imap_open") and @file_exists("include/config_imap.inc.php")) { // $login_search = ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login); $login_search = preg_replace("/[^\\-@._[:space:]a-zA-Z0-9]/", "", $_login); if ($login_search != $_login) { return "6"; } $user_imap = grr_verif_imap($_login, $_password); if ($user_imap) { $auth_imap = 'yes'; imap_close($user_imap); } else { return "10"; } } else { return "2"; } } else { $row = grr_sql_row($res_user, 0); // S'il s'agit d'un utilisateur inactif, on s'arrête là if ($row[12] == 'inactif') { return "5"; } } // Fin du cas NON SSO } // Cette partie ne concerne que les utilisateurs pour lesquels l'authentification ldap ci-dessus a réussi // On tente d'interroger la base ldap pour obtenir des infos sur l'utilisateur if ($auth_ldap == 'yes') { // Cas particulier des serveur SE3 // se3_liste_groupes_autorises est vide -> pas de restriction if (trim(Settings::get("se3_liste_groupes_autorises")) == "") { $temoin_grp_ok = "oui"; } else { // se3_liste_groupes_autorises n'est pas vide -> on teste si le $_login appartient à un des groupes $temoin_grp_ok = "non"; //S'assurer que le fichier est inclus (il existe dans tous les cas où $auth_ldap==yes) if (!isset($ldap_group_user_field)) { include "config_ldap.inc.php"; } //Aller chercher l'info pour faire la comparaison $member_search = $_login; if ($ldap_group_user_field != 'uid') { $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $ldap_login, $ldap_pwd, $use_tls); $user_dn = grr_ldap_search_user($ds, $ldap_base, Settings::get("ldap_champ_recherche"), $_login, $ldap_filter, "no"); // Test with login and password of the user if (!$ds) { $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $_login, $_password, $use_tls); } if ($ds) { $result = @ldap_read($ds, $user_dn, "objectClass=*", array(Settings::get("ldap_champ_nom"), Settings::get("ldap_champ_prenom"), Settings::get("ldap_champ_email"))); } if ($result) { // Recuperer les donnees de l'utilisateur $info = @ldap_get_entries($ds, $result); if (is_array($info) && isset($info[0][$ldap_group_user_field])) { $member_search = $info[0][$ldap_group_user_field]; } } } $tab_grp_autorise = explode(";", Settings::get("se3_liste_groupes_autorises")); $total = count($tab_grp_autorise); for ($i = 0; $i < $total; $i++) { if (se3_grp_members($tab_grp_autorise[$i], $member_search) == "oui") { $temoin_grp_ok = "oui"; } } } if ($temoin_grp_ok != "oui") { return "5"; } // Fin cas particulier des serveur SE3 // on regarde si un utilisateur ldap ayant le même login existe déjà $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\tFROM " . TABLE_PREFIX . "_utilisateurs\n\tWHERE login = '******' and\n\tsource = 'ext' and\n\tetat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // un utilisateur ldap ayant le même login existe déjà // Lire les infos sur l'utilisateur depuis LDAP $user_info = grr_getinfo_ldap($user_dn, $_login, $_password); // Update GRR database $user_info[0] = utf8_encode($user_info[0]); $user_info[1] = utf8_encode($user_info[1]); $user_info[2] = utf8_encode($user_info[2]); $sql2 = "UPDATE " . TABLE_PREFIX . "_utilisateurs SET\n\t\tnom='" . protect_data_sql($user_info[0]) . "',\n\t\tprenom='" . protect_data_sql($user_info[1]) . "',\n\t\temail='" . protect_data_sql($user_info[2]) . "'\n\t\tWHERE login='******'"; if (grr_sql_command($sql2) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); } // on récupère les données de l'utilisateur dans $row $res_user = grr_sql_query($sql); $row = grr_sql_row($res_user, 0); } else { // pas d'utilisateur ldap ayant le même login dans la base GRR // Lire les infos sur l'utilisateur depuis LDAP $user_info = grr_getinfo_ldap($user_dn, $_login, $_password); // On teste si un utilisateur porte déjà le même login $test = grr_sql_query1("SELECT login FROM " . TABLE_PREFIX . "_utilisateurs WHERE login = '******'"); if ($test != '-1') { return "3"; } else { $user_info[0] = utf8_encode($user_info[0]); $user_info[1] = utf8_encode($user_info[1]); $user_info[2] = utf8_encode($user_info[2]); // On insère le nouvel utilisateur $sql = "INSERT INTO " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\tnom='" . protect_data_sql($user_info[0]) . "',\n\t\t\tprenom='" . protect_data_sql($user_info[1]) . "',\n\t\t\tlogin='******',\n\t\t\tpassword='',\n\t\t\tstatut='" . Settings::get("ldap_statut") . "',\n\t\t\temail='" . protect_data_sql($user_info[2]) . "',\n\t\t\tetat='actif',\n\t\t\tsource='ext'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); } $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\t\t\tFROM " . TABLE_PREFIX . "_utilisateurs\n\t\t\tWHERE login = '******' and\n\t\t\tsource = 'ext' and\n\t\t\tetat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // on récupère les données de l'utilisateur dans $row $row = grr_sql_row($res_user, 0); } else { return "2"; } } } } if ($auth_imap == 'yes') { // on regarde si un utilisateur imap ayant le meme login existe deja $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\tFROM " . TABLE_PREFIX . "_utilisateurs\n\tWHERE login = '******' and\n\tsource = 'ext' and\n\tetat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // un utilisateur imap ayant le meme login existe deja // on recupere les donnees de l'utilisateur dans $row $row = grr_sql_row($res_user, 0); } else { // pas d'utilisateur imap ayant le m?me login dans la base GRR // Lire les infos sur l'utilisateur depuis imap include "config_imap.inc.php"; // Connexion ? l'annuaire $conn_imap = grr_connect_imap($imap_adresse, $imap_port, $_login, $_password, $imap_type, $imap_ssl, $imap_cert, $imap_tls); if ($conn_imap) { // Test with login and password of the user $l_nom = ""; $l_prenom = ""; $l_email = $_login . "@" . $imap_domaine; imap_close($conn_imap); } // On teste si un utilisateur porte déjà le même login $test = grr_sql_query1("SELECT login from " . TABLE_PREFIX . "_utilisateurs where login = '******'"); if ($test != '-1') { return "3"; } else { // On insère le nouvel utilisateur $sql = "INSERT INTO " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\tnom='" . protect_data_sql($l_nom) . "',\n\t\t\tprenom='" . protect_data_sql($l_prenom) . "',\n\t\t\tlogin='******',\n\t\t\tpassword='',\n\t\t\tstatut='" . Settings::get("imap_statut") . "',\n\t\t\temail='" . protect_data_sql($l_email) . "',\n\t\t\tetat='actif',\n\t\t\tsource='ext'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); } $sql = "SELECT upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site\n\t\t\tfrom " . TABLE_PREFIX . "_utilisateurs\n\t\t\twhere login = '******' and\n\t\t\tsource = 'ext' and\n\t\t\tetat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // on r?cup?re les donn?es de l'utilisateur dans $row $row = grr_sql_row($res_user, 0); } else { return "2"; } } } } // On teste si la connexion est active ou non if (Settings::get("disable_login") == 'yes' and $row[4] != "administrateur") { return "2"; } // // A ce stade, on dispose dans tous les cas d'un tableau $row contenant les informations nécessaires à l'établissment d'une session // // Session starts now session_name(SESSION_NAME); @session_start(); // Is this user already connected ? $sql = "SELECT SESSION_ID from " . TABLE_PREFIX . "_log where SESSION_ID = '" . session_id() . "' and LOGIN = '******' and now() between START and END"; $res = grr_sql_query($sql); $num_row = grr_sql_count($res); if ($num_row > 0 and isset($_SESSION['start'])) { $sql = "UPDATE " . TABLE_PREFIX . "_log set END = now() + interval " . Settings::get("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'"; // $sql = "update ".TABLE_PREFIX."_log set END = now() + interval " . Settings::get("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "'"; $res = grr_sql_query($sql); if (!$res) { fatal_error(0, 'erreur mysql' . grr_sql_error()); } return "1"; } else { session_unset(); // session_destroy(); } // reset $_SESSION $_SESSION = array(); $_SESSION['login'] = $row[0]; $_SESSION['password'] = $row[1]; $_SESSION['prenom'] = $row[2]; $_SESSION['nom'] = $row[3]; $_SESSION['statut'] = $row[4]; $_SESSION['start'] = $row[5]; $_SESSION['maxLength'] = Settings::get("sessionMaxLength"); if ($row[6] > 0) { $_SESSION['default_area'] = $row[6]; } else { $_SESSION['default_area'] = Settings::get("default_area"); } if ($row[7] > 0) { $_SESSION['default_room'] = $row[7]; } else { $_SESSION['default_room'] = Settings::get("default_room"); } if ($row[8] != '') { $_SESSION['default_style'] = $row[8]; } else { $_SESSION['default_style'] = Settings::get("default_css"); } if ($row[9] != '') { $_SESSION['default_list_type'] = $row[9]; } else { $_SESSION['default_list_type'] = Settings::get("area_list_format"); } if ($row[10] != '') { $_SESSION['default_language'] = $row[10]; } else { $_SESSION['default_language'] = Settings::get("default_language"); } if ($row[13] > 0) { $_SESSION['default_site'] = $row[13]; } else { $_SESSION['default_site'] = Settings::get("default_site"); } $_SESSION['source_login'] = $row[11]; if ($est_authentifie_sso) { // Variable de session qui permet de savoir qu'un utilisateur est authentifié à un SSO $_SESSION['est_authentifie_sso'] = "y"; } // It's a new connection, insert into log if (isset($_SERVER["HTTP_REFERER"])) { $httpreferer = substr($_SERVER["HTTP_REFERER"], 0, 254); } else { $httpreferer = ''; } $ua = $_SERVER['HTTP_USER_AGENT']; $ua = explode(' ', $ua); $count = count($ua); for ($i = 0; $i < $count; $i++) { if (strncmp($ua[$i], '(Windows', 8) == 0) { $os = "Windows "; $i += 2; switch ($ua[$i]) { case '6.1;': $os .= "7"; break; case '6.2;': $os .= "8"; break; case '6.3;': $os .= "8.1"; break; default: $os .= ""; break; } } if (strncmp($ua[$i], 'Trident', 7) == 0) { $brow = "Internet Explorer "; $i += 1; $b = explode(':', $ua[$i]); $brow .= trim($b[1], ")"); } if (strncmp($ua[$i], 'Firefox', 7) == 0) { $b = explode('/', $ua[$i]); $brow = $b[0] . ' ' . $b[1]; } if (strncmp($ua[$i], 'Chrome', 6) == 0) { $b = explode('/', $ua[$i]); $brow = $b[0] . ' ' . $b[1]; } } if (isset($os) && isset($brow)) { $useragent = $os . ' ' . $brow; } else { $useragent = substr($_SERVER['HTTP_USER_AGENT'], 0, 254); } $sql = "INSERT INTO " . TABLE_PREFIX . "_log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values (\n\t'" . protect_data_sql($_SESSION['login']) . "',\n\t'" . $_SESSION['start'] . "',\n\t'" . session_id() . "',\n\t'" . $_SERVER['REMOTE_ADDR'] . "',\n\t'" . $useragent . "',\n\t'" . $httpreferer . "',\n\t'1',\n\t'" . $_SESSION['start'] . "' + interval " . Settings::get("sessionMaxLength") . " minute\n\t)\n;"; grr_sql_query($sql); /* Fonctionnalité SE3 (Palissy - Saintes - philippe.duval@ac-poitiers.fr) : Utilisation du LDAP pour inscrire automatiquement les utilisateurs dans les groupes administration, accès et gestion Ce code est associé à une nouvelle table : CREATE TABLE ".TABLE_PREFIX."_j_groupe_se3 (groupe varchar(40) NOT NULL default '',id_area_room int(11) NOT NULL default '0', statut varchar(20) NOT NULL default '', PRIMARY KEY (`groupe`,`id_area_room`)); Par ailleurs, pour que cette fonctionnalité soit complète et dans l'esprit de GRR, il faudra développer une "petite" interface dans GRR pour gérer les entrées dans cette table. */ // Début de la fonctionnalité SE3 $grp = @grr_sql_query("SELECT groupe, id_area_room, statut FROM " . TABLE_PREFIX . "_j_groupe_se3"); if ($grp) { // si la table ".TABLE_PREFIX."_j_groupe_se3 est implantée et non vide //A modifier recalcul a chaque boucle while ($resgrp = @mysqli_fetch_array($grp)) { // balaye tous les groupes présents dans la table ".TABLE_PREFIX."_j_groupadmin_area $statut_se3 = $resgrp['statut']; $area_se3 = $resgrp['id_area_room']; if ($statut_se3 == 'administrateur') { $table_user_se3 = "" . TABLE_PREFIX . "_j_useradmin_area"; $type_res = 'id_area'; } if ($statut_se3 == 'acces_restreint') { $table_user_se3 = "" . TABLE_PREFIX . "_j_user_area"; $type_res = 'id_area'; } if ($statut_se3 == 'gestionnaire') { $table_user_se3 = "" . TABLE_PREFIX . "_j_user_room"; $type_res = 'id_room'; } if (se3_grp_members($resgrp['groupe'], $_login) == "oui") { @grr_sql_query("INSERT INTO `" . $table_user_se3 . "` (login, " . $type_res . ") values('" . $_login . "'," . $area_se3 . ")"); } else { @grr_sql_query("DELETE FROM `" . $table_user_se3 . "` WHERE `login`='" . $_login . "' AND `" . $type_res . "`=" . $area_se3); } } } // Note : Il reste à gérer finement l'interface graphique et à déduire l'incompatibilité éventuelle entre le domaine par défaut et les domaines autorisés pour chaque utilisateur // Fin de la fonctionnalité SE3 /* Application du patch en production depuis la rentrée à Palissy : Zéro problème (ci-dessous, l'extraction de la table via phpmyadmin) CREATE TABLE `".TABLE_PREFIX."_j_groupe_se3` ( `groupe` varchar(40) NOT NULL default '', `id_area_room` int(11) NOT NULL default '0', `statut` varchar(20) NOT NULL default '', PRIMARY KEY (`groupe`,`id_area_room`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `".TABLE_PREFIX."_j_groupe_se3` (`groupe`, `id_area_room`, `statut`) VALUES ('GRR_ADMIN_SALLES_REUNIONS', 1, 'administrateur'), ('GRR_ADMIN_SALLES_PEDAGOGIQUES', 2, 'administrateur'), ('GRR_ADMIN_LABOS_LANGUES', 3, 'administrateur'), ('GRR_SALLES_REUNIONS', 1, 'acces_restreint'), ('GRR_SALLES_PEDAGOGIQUES', 2, 'acces_restreint'), ('GRR_LABOS_LANGUES', 3, 'acces_restreint'), ('GRR_GESTION_SALLE_A01', 1, 'gestionnaire'), ('GRR_GESTION_SALLE_A03', 2, 'gestionnaire'), ('GRR_GESTION_SALLE_A314', 3, 'gestionnaire'), ('GRR_GESTION_SALLE_A409', 4, 'gestionnaire'), ('GRR_GESTION_SALLE_D05', 5, 'gestionnaire'), ('GRR_GESTION_SALLE_A301E', 6, 'gestionnaire'); */ return "1"; }
VerifyModeDemo(); unset($user_login); $user_login = isset($_POST["user_login"]) ? $_POST["user_login"] : ($user_login = isset($_GET["user_login"]) ? $_GET["user_login"] : NULL); $valid = isset($_POST["valid"]) ? $_POST["valid"] : NULL; $msg = ''; if ($valid == "yes") { unset($reg_password1); $reg_password1 = unslashes($_POST["reg_password1"]); unset($reg_password2); $reg_password2 = unslashes($_POST["reg_password2"]); $reg_password_c = md5($reg_password1); if ($reg_password1 != $reg_password2 || strlen($reg_password1) < $pass_leng) { $msg = get_vocab("passwd_error"); } else { $sql = "UPDATE " . TABLE_PREFIX . "_utilisateurs SET password='******' WHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab('update_pwd_failed') . grr_sql_error()); } else { $msg = get_vocab('update_pwd_succeed'); } } } $user_nom = ''; $user_prenom = ''; $user_source = ''; // On appelle les informations de l'utilisateur if (isset($user_login) && $user_login != '') { $sql = "SELECT nom,prenom, source FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"; $res = grr_sql_query($sql); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) {
grrDelOverloadFromEntries($id_overload); $sql = "delete from ".TABLE_PREFIX."_overload where id=$id_overload;"; grr_sql_command($sql); } # OK, nothing there, lets blast it away grr_sql_command("delete from ".TABLE_PREFIX."_area where id=$id_area"); grr_sql_command("update ".TABLE_PREFIX."_utilisateurs set default_area = '-1', default_room = '-1' where default_area='".$id_area."'"); grr_sql_command("DELETE FROM ".TABLE_PREFIX."_area_periodes WHERE id_area=$id_area"); grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_useradmin_area WHERE id_area=$id_area"); grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_type_area WHERE id_area=$id_area"); grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_user_area WHERE id_area=$id_area"); grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_site_area WHERE id_area=$id_area"); $test = grr_sql_query1("select VALUE from ".TABLE_PREFIX."_setting where NAME='default_area'"); if ($test==$id_area) { grr_sql_command("delete from ".TABLE_PREFIX."_setting where NAME='default_area'"); grr_sql_command("delete from ".TABLE_PREFIX."_setting where NAME='default_room'"); // Settings require_once("./include/settings.inc.php"); //Chargement des valeurs de la table settingS if (!loadSettings()) die("Erreur chargement settings"); } # Redirect back to the admin page header("Location: admin_room.php?id_site=$id_site"); } else { # There are rooms left in the area # print the page header print_header("","","","",$type="with_session", $page="admin");