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);
}
Example #3
0
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);
}