function informer_auteur($bof) { include_spip('inc/json'); include_spip('formulaires/login'); include_spip('inc/auth'); $login = strval(_request('var_login')); $row = auth_informer_login($login); if ($row AND is_array($row)) unset($row['id_auteur']); else { // generer de fausses infos, mais credibles, pour eviter une attaque // http://core.spip.org/issues/1758 include_spip('inc/securiser_action'); $fauxalea1 = md5('fauxalea'.secret_du_site().$login.floor(date('U')/86400)); $fauxalea2 = md5('fauxalea'.secret_du_site().$login.ceil(date('U')/86400)); $row = array('login' => $login, 'cnx' => 0, 'logo' => "", 'alea_actuel' => substr_replace($fauxalea1,'.',24,0), 'alea_futur' => substr_replace($fauxalea2,'.',24,0) ); } return json_export($row); }
function informer_auteur($bof) { include_spip('inc/json'); include_spip('formulaires/login'); include_spip('inc/auth'); $login = strval(_request('var_login')); $row = auth_informer_login($login); if ($row and is_array($row)) { unset($row['id_auteur']); } else { // permettre d'autoriser l'envoi de password non crypte lorsque // l'auteur n'est pas (encore) declare dans SPIP, par exemple pour les cas // de premiere authentification via SPIP a une autre application. if (defined('_AUTORISER_AUTH_FAIBLE') and _AUTORISER_AUTH_FAIBLE) { $row = array(); } elseif ($n = sql_countsel('spip_auteurs', "login<>''")) { $n = abs(crc32($login)) % $n; $row = auth_informer_login(sql_getfetsel('login', 'spip_auteurs', "login<>''", '', '', "{$n},1")); if ($row and is_array($row)) { unset($row['id_auteur']); $row['login'] = $login; } } else { $row = array(); } } return json_export($row); }
function formulaires_login_charger_dist($cible = "", $login = "", $prive = null) { $erreur = _request('var_erreur'); if (!$login) { $login = strval(_request('var_login')); } // si on est deja identifie if (!$login and isset($GLOBALS['visiteur_session']['login'])) { $login = $GLOBALS['visiteur_session']['login']; } // ou si on a un cookie admin if (!$login) { if (isset($_COOKIE['spip_admin']) and preg_match(",^@(.*)\$,", $_COOKIE['spip_admin'], $regs)) { $login = $regs[1]; } } include_spip('inc/auth'); $row = auth_informer_login($login); // Construire l'environnement du squelette // Ne pas proposer de "rester connecte quelques jours" // si la duree de l'alea est inferieure a 12 h (valeur par defaut) $valeurs = array('var_login' => $login, 'editable' => !$row, 'cnx' => isset($row['cnx']) ? $row['cnx'] : '', 'auth_http' => login_auth_http(), 'rester_connecte' => _RENOUVELLE_ALEA < 12 * 3600 ? '' : ' ', '_logo' => isset($row['logo']) ? $row['logo'] : '', '_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '', '_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '', '_pipeline' => 'affiche_formulaire_login'); if ($erreur or !isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) { $valeurs['editable'] = true; } if (is_null($prive) ? is_url_prive($cible) : $prive) { include_spip('inc/autoriser'); $loge = autoriser('ecrire'); } else { $loge = (isset($GLOBALS['visiteur_session']['auth']) and $GLOBALS['visiteur_session']['auth'] != ''); } // Si on est connecte, appeler traiter() // et lancer la redirection si besoin if (!$valeurs['editable'] and $loge) { $traiter = charger_fonction('traiter', 'formulaires/login'); $res = $traiter($cible, $login, $prive); $valeurs = array_merge($valeurs, $res); if (isset($res['redirect']) and $res['redirect']) { include_spip('inc/headers'); # preparer un lien pour quand redirige_formulaire ne fonctionne pas $valeurs['_deja_loge'] = inserer_attribut("<a>" . _T('login_par_ici') . "</a>{$m}", 'href', $res['redirect']); $m = redirige_formulaire($res['redirect']); } } // en cas d'echec de cookie, inc_auth a renvoye vers le script de // pose de cookie ; s'il n'est pas la, c'est echec cookie // s'il est la, c'est probablement un bookmark sur bonjour=oui, // et pas un echec cookie. if ($erreur == 'cookie') { $valeurs['echec_cookie'] = ' '; } elseif ($erreur) { // une erreur d'un SSO indique dans la redirection vers ici // mais il faut se proteger de toute tentative d'injection malveilante include_spip('inc/texte'); $valeurs['message_erreur'] = safehtml($erreur); } return $valeurs; }
function informer_auteur($bof) { include_spip('inc/json'); include_spip('formulaires/login'); include_spip('inc/auth'); $login = strval(_request('var_login')); $row = auth_informer_login($login); if ($row and is_array($row)) { unset($row['id_auteur']); } else { if (defined('_AUTORISER_AUTH_FAIBLE') and _AUTORISER_AUTH_FAIBLE) { $row = array(); } else { include_spip('inc/securiser_action'); $fauxalea1 = md5('fauxalea' . secret_du_site() . $login . floor(date('U') / 86400)); $fauxalea2 = md5('fauxalea' . secret_du_site() . $login . ceil(date('U') / 86400)); $row = array('login' => $login, 'cnx' => 0, 'logo' => "", 'alea_actuel' => substr_replace($fauxalea1, '.', 24, 0), 'alea_futur' => substr_replace($fauxalea2, '.', 24, 0)); } } return json_export($row); }