/** * @return bool */ function create_session($name, $role, $policies) { if (isset($_SESSION["valid_user"])) { close_session(); } set_session_key("valid_user", TRUE); set_session_key("name", $name); set_session_key("role", $role); set_session_key("policies", $policies); return TRUE; }
$sql = get_guest_details($fetchid); $result2 = $db->execute($sql); $user = $db->fetch_array($result2); $about_name = create_guest_username($user['userid'], $user['guest_name']); $about_avatar = $base_url . AC_FOLDER_ADMIN . "/images/img-no-avatar.gif"; } else { $sql = get_user_details($fetchid); $result3 = $db->execute($sql); $user = $db->fetch_array($result3); $about_name = $user['username']; $about_avatar = get_avatar($user['avatar'], $fetchid); } $reports[] = array('id' => $row['id'], 'from' => $from_name, 'from_pic' => $from_avatar, 'about' => $about_name, 'about_pic' => $about_avatar, 'time' => relative_time($row['report_time']), 'about_num' => $row['COUNT(id)']); } $result = $db->execute("\n\t\t\tSELECT COUNT(id)\n\t\t\tFROM arrowchat_reports\n\t\t\tWHERE (working_time < (" . time() . " - 600)\n\t\t\t\t\t\tOR working_by = '" . $db->escape_string($userid) . "')\n\t\t\t\tAND completed_time = 0\n\t\t"); if ($row = $db->fetch_array($result)) { $total_reports = $row['COUNT(id)']; } else { $total_reports = 0; } $response['total_reports'] = array('count' => $total_reports); $response['reports'] = $reports; } else { echo 1; close_session(); exit; } header('Content-type: application/json; charset=UTF-8'); echo json_encode($response); close_session(); exit;
function bail($epitaph) { my_disconnect(); close_session(); echo "\n<P>Sorry, your session has been closed due to an error. " . "<A HREF=\"./login.php\"><BUTTON TYPE=button> Login again </BUTTON></A>\n"; die("\n<P>\n(Fatal: " . $epitaph . ")\n</BODY></HTML>\n"); }
function gestion_session($TAB_PROFILS_AUTORISES) { if(!isset($_COOKIE[SESSION_NOM])) { // 1. Aucune session transmise open_new_session(); init_session(); if(!$TAB_PROFILS_AUTORISES['public']) { // 1.1. Demande d'accès à une page réservée, donc besoin d'identification if(isset($_GET['verif_cookie'])) { // 1.1.1. En fait l'utilisateur vient déjà de s'identifier : c'est donc anormal, le cookie de session n'a pas été trouvé car le navigateur client n'enregistre pas les cookies affich_message_exit($titre='Problème de cookies',$contenu='Session non retrouvée !<br />Configurez votre navigateur pour qu\'il accepte les cookies.'); } else { // 1.1.2. Session perdue ou expirée, ou demande d'accès direct (lien profond) : redirection pour une nouvelle identification redirection_SSO_ou_message_exit(); // Si SSO au prochain coup on ne passera plus par là. } } else { // 1.2 Accès à une page publique : RAS } } else { // 2. id de session transmis open_old_session(); if(!isset($_SESSION['USER_PROFIL'])) { // 2.1. Pas de session retrouvée (sinon cette variable serait renseignée) if(!$TAB_PROFILS_AUTORISES['public']) { // 2.1.1. Session perdue ou expirée et demande d'accès à une page réservée : redirection pour une nouvelle identification close_session(); open_new_session(); init_session(); redirection_SSO_ou_message_exit(); // On peut initialiser la session avant car si SSO au prochain coup on ne passera plus par là. } else { // 2.1.2. Session perdue ou expirée et page publique : création d'une nouvelle session, pas de message d'alerte pour indiquer que la session perdue close_session();open_new_session();init_session(); } } elseif($_SESSION['USER_PROFIL'] == 'public') { // 2.2. Session retrouvée, utilisateur non identifié if(!$TAB_PROFILS_AUTORISES['public']) { // 2.2.1. Espace non identifié => Espace identifié : redirection pour identification redirection_SSO_ou_message_exit(); // Pas d'initialisation de session sinon la redirection avec le SSO tourne en boucle. } else { // 2.2.2. Espace non identifié => Espace non identifié : RAS } } else { // 2.3. Session retrouvée, utilisateur identifié if($TAB_PROFILS_AUTORISES[$_SESSION['USER_PROFIL']]) { // 2.3.1. Espace identifié => Espace identifié identique : RAS } elseif($TAB_PROFILS_AUTORISES['public']) { // 2.3.2. Espace identifié => Espace non identifié : création d'une nouvelle session vierge, pas de message d'alerte pour indiquer que la session perdue // A un moment il fallait tester que ce n'était pas un appel ajax,pour éviter une déconnexion si appel au calendrier qui était dans l'espace public, mais ce n'est plus le cas... // Par contre il faut conserver la session de SimpleSAMLphp pour laisser à l'utilisateur la choix de se déconnecter ou non de son SSO. $SimpleSAMLphp_SESSION = ( ($_SESSION['CONNEXION_MODE']=='gepi') && (isset($_SESSION['SimpleSAMLphp_SESSION'])) ) ? $_SESSION['SimpleSAMLphp_SESSION'] : FALSE ; // isset() pour le cas où l'admin vient de cocher le mode Gepi mais c'est connecté sans juste avant close_session();open_new_session();init_session(); if($SimpleSAMLphp_SESSION) { $_SESSION['SimpleSAMLphp_SESSION'] = $SimpleSAMLphp_SESSION; } } elseif(!$TAB_PROFILS_AUTORISES['public']) // (forcément) { // 2.3.3. Espace identifié => Autre espace identifié incompatible : redirection pour une nouvelle identification // Pas de redirection SSO sinon on tourne en boucle (il faudrait faire une déconnexion SSO préalable). affich_message_exit($titre='Page interdite avec votre profil',$contenu='Vous avez appelé une page inaccessible avec votre identification actuelle !<br />Déconnectez-vous ou retournez à la page précédente.'); } } } }
<?php /* 'Logout' feature interface */ include './include/util.php'; include './include/session.php'; include './include/exception.php'; $sessionUid = is_string($_GET["sessionUid"]) ? $_GET["sessionUid"] : ""; try { if (!$sessionUid) { throw new Exceptioni("emptyRequest"); } $dbLink = db_init(); if (!close_session($dbLink, $sessionUid)) { throw new Exceptioni("invalidUid"); } } catch (Exceptioni $e) { $error = $e->getCode(); } catch (DbException $e) { $error = "internalException"; } finally { db_close($dbLink); $responce = []; if ($error) { $responce["status"] = "error"; $responce["error"] = $error; } else { $responce["status"] = "ok"; } respond_json($responce); }
### 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"); } } 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");