function inc_auth_dist() { global $connect_login ; $row = auth_mode(); if ($row) return auth_init_droits($row); if (!$connect_login) return auth_a_loger(); // Cas ou l'auteur a ete identifie mais on n'a pas d'info sur lui // C'est soit parce que la base est inutilisable, // soit parce que la table des auteurs a changee (restauration etc) // Pas la peine d'insister. // Renvoyer le nom fautif et une URL de remise a zero if (spip_connect()) return array('login' => $connect_login, 'site' => generer_url_public('', "action=logout&logout=prive")); $n = intval(sql_errno()); spip_log("Erreur base de donnees $n " . sql_error()); return $n ? $n : 1; }
/** * Loger un auteur suite a son identification * * @param array $auteur * @return bool */ function auth_loger($auteur) { if (!is_array($auteur) or !count($auteur)) { return false; } // initialiser et poser le cookie de session unset($_COOKIE['spip_session']); auth_init_droits($auteur); // initialiser les prefs $p = $GLOBALS['visiteur_session']['prefs']; $p['cnx'] = $auteur['cookie'] == 'oui' ? 'perma' : ''; sql_updateq('spip_auteurs', array('prefs' => serialize($p)), "id_auteur=" . $auteur['id_auteur']); // Si on est admin, poser le cookie de correspondance include_spip('inc/cookie'); if ($auteur['statut'] == '0minirezo') { spip_setcookie('spip_admin', '@' . $auteur['login'], time() + 7 * 24 * 3600); } else { spip_setcookie('spip_admin', '', 1); } // bloquer ici le visiteur qui tente d'abuser de ses droits verifier_visiteur(); return true; }