New file |
0,0 → 1,264 |
<?php |
|
// |
// Ce fichier ne sera execute qu'une fois |
if (defined("_INC_LOGIN")) return; |
define("_INC_LOGIN", "1"); |
|
|
include_ecrire ("inc_meta.php3"); |
include_ecrire ("inc_session.php3"); |
include_ecrire ("inc_filtres.php3"); |
include_ecrire ("inc_texte.php3"); |
include_local ("inc-formulaires.php3"); |
|
// gerer l'auth http |
function auth_http($cible, $essai_auth_http) { |
if ($essai_auth_http == 'oui') { |
include_ecrire('inc_session.php3'); |
if (!verifier_php_auth()) { |
$url = urlencode($cible->getUrl()); |
$page_erreur = "<b>"._T('login_connexion_refusee')."</b><p>"._T('login_login_pass_incorrect')."<p>[<a href='./'>"._T('login_retour_site')."</a>] [<a href='./spip_cookie.php3?essai_auth_http=oui&url=$url'>"._T('login_nouvelle_tentative')."</a>]"; |
if (ereg("ecrire/", $url)) |
$page_erreur .= " [<a href='ecrire/'>"._T('login_espace_prive')."</a>]"; |
ask_php_auth($page_erreur); |
} |
else |
@header("Location: " . $cible->getUrl() ); |
exit; |
} |
// si demande logout auth_http |
else if ($essai_auth_http == 'logout') { |
include_ecrire('inc_session.php3'); |
ask_php_auth("<b>"._T('login_deconnexion_ok')."</b><p>"._T('login_verifiez_navigateur')."<p>[<a href='./'>"._T('login_retour_public')."</a>] [<a href='./spip_cookie.php3?essai_auth_http=oui&redirect=ecrire'>"._T('login_test_navigateur')."</a>] [<a href='ecrire/'>"._T('login_espace_prive')."</a>]"); |
exit; |
} |
} |
|
function ouvre_login($titre='') { |
|
$retour .= "<div>"; |
|
if ($titre) $retour .= "<h3 class='spip'>$titre</h3>"; |
|
$retour .= '<font size="2" face="Verdana,arial,helvetica,sans-serif">'; |
return $retour; |
} |
|
function ferme_login() { |
$retour = "</font>"; |
$retour .= "</div>"; |
return $retour; |
} |
|
function login($cible = '', $prive = 'prive', $message_login='') { |
$login = $GLOBALS['var_login']; |
$erreur = ''; |
$essai_auth_http = $GLOBALS['var_essai_auth_http']; |
$logout = $GLOBALS['var_logout']; |
|
// en cas d'echec de cookie, inc_auth a renvoye vers spip_cookie qui |
// a tente de poser un 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 ($GLOBALS['var_echec_cookie']) |
$echec_cookie = ($GLOBALS['spip_session'] != 'test_echec_cookie'); |
|
global $auteur_session; |
global $spip_session, $PHP_AUTH_USER, $ignore_auth_http; |
global $spip_admin; |
global $php_module; |
global $clean_link; |
|
if (!$cible) { |
if ($GLOBALS['var_url']) $cible = new Link($GLOBALS['var_url']); |
else if ($prive) $cible = new Link('ecrire/'); |
else $cible = $clean_link; |
} |
|
$cible->delVar('var_erreur'); |
$cible->delVar('var_url'); |
$clean_link->delVar('var_erreur'); |
$clean_link->delVar('var_login'); |
|
include_ecrire("inc_session.php3"); |
verifier_visiteur(); |
if ($auteur_session AND !$logout AND |
($auteur_session['statut']=='0minirezo' OR $auteur_session['statut']=='1comite')) { |
$url = $cible->getUrl(); |
if ($url != $GLOBALS['clean_link']->getUrl()) |
@Header("Location: $url"); |
echo "<a href='$url'>"._T('login_par_ici')."</a>\n"; |
return; |
} |
|
// initialisations |
$nom_site = lire_meta('nom_site'); |
if (!$nom_site) $nom_site = _T('info_mon_site_spip'); |
$url_site = lire_meta('adresse_site'); |
if (!$url_site) $url_site = "./"; |
if ($GLOBALS['var_erreur'] =='pass') $erreur = _T('login_erreur_pass'); |
|
// Le login est memorise dans le cookie d'admin eventuel |
if (!$login) { |
if (ereg("^@(.*)$", $spip_admin, $regs)) |
$login = $regs[1]; |
} else if ($login == '-1') |
$login = ''; |
|
$flag_autres_sources = $GLOBALS['ldap_present']; |
|
if ($login) { |
$statut_login = 0; // statut inconnu |
$login = addslashes($login); |
$query = "SELECT * FROM spip_auteurs WHERE login='$login'"; |
$result = spip_query($query); |
if ($row = spip_fetch_array($result)) { |
if ($row['statut'] == '5poubelle' OR ($source == 'spip' AND $row['pass'] == '')) { |
$statut_login = -1; // refus |
} else { |
|
$statut_login = 1; // login connu |
|
// Quels sont les aleas a passer pour le javascript ? |
if ($row['source'] == 'spip') { |
$id_auteur = $row['id_auteur']; |
$source_auteur = $row['source']; |
$alea_actuel = $row['alea_actuel']; |
$alea_futur = $row['alea_futur']; |
} |
|
// Bouton duree de connexion |
if ($row['prefs']) { |
$prefs = unserialize($row['prefs']); |
$rester_checked = ($prefs['cnx'] == 'perma' ? ' checked':''); |
} |
} |
} |
|
// login inconnu (sauf LDAP) ou refuse |
if ($statut_login == -1 OR ($statut_login == 0 AND !$flag_autres_sources)) { |
$erreur = _T('login_identifiant_inconnu', array('login' => htmlspecialchars($login))); |
$login = ''; |
@spip_setcookie("spip_admin", "", time() - 3600); |
} |
} |
|
// javascript pour le focus |
if ($login) |
$js_focus = 'document.form_login.session_password.focus();'; |
else |
$js_focus = 'document.form_login.var_login.focus();'; |
|
if ($echec_cookie == "oui") { |
echo ouvre_login (_T('erreur_probleme_cookie')); |
echo "<p><b>"._T('login_cookie_oblige')."</b> "; |
echo _T('login_cookie_accepte')."\n"; |
} |
else { |
echo ouvre_login (); |
if (strlen($message_login) > 0) echo "<br>$message_login<br>\n"; |
} |
|
if ($login) { |
// Affiche formulaire de login en incluant le javascript MD5 |
$flag_challenge_md5 = ($source_auteur == 'spip'); |
|
if ($flag_challenge_md5) echo "<script type=\"text/javascript\" src=\"ecrire/md5.js\"></script>"; |
echo "<form name='form_login' action='./spip_cookie.php3' method='post'"; |
if ($flag_challenge_md5) echo " onSubmit='if (this.session_password.value) { |
this.session_password_md5.value = calcMD5(\"$alea_actuel\" + this.session_password.value); |
this.next_session_password_md5.value = calcMD5(\"$alea_futur\" + this.session_password.value); |
this.session_password.value = \"\"; |
}'"; |
echo ">\n"; |
echo "<div class='spip_encadrer' style='text-align:".$GLOBALS["spip_lang_left"].";'>"; |
if ($erreur) echo "<div class='reponse_formulaire'><b>$erreur</b></div><p>"; |
|
if ($flag_challenge_md5) { |
// si jaja actif, on affiche le login en 'dur', et on le passe en champ hidden |
echo "<script type=\"text/javascript\"><!--\n" . |
"document.write('".addslashes(_T('login_login'))." <b>$login</b> <br><font size=\\'2\\'>[<a href=\\'spip_cookie.php3?cookie_admin=non&url=".rawurlencode($clean_link->getUrl())."\\'>".addslashes(_T('login_autre_identifiant'))."</a>]</font>');\n" . |
"//--></script>\n"; |
echo "<input type='hidden' name='session_login_hidden' value='$login'>"; |
|
// si jaja inactif, le login est modifiable (puisque le challenge n'est pas utilise) |
echo "<noscript>"; |
echo "<font face='Georgia, Garamond, Times, serif' size='3'>"; |
echo _T('login_non_securise')." <a href=\"".$clean_link->getUrl()."\">"._T('login_recharger')."</a>.<p></font>\n"; |
} |
echo "<label><b>"._T('login_login2')."</b><br></label>"; |
echo "<input type='text' name='session_login' class='forml' value=\"$login\" size='40'>\n"; |
if ($flag_challenge_md5) echo "</noscript>\n"; |
|
echo "<br><br>\n<label><b>"._T('login_pass2')."</b><br></label>"; |
echo "<input type='password' name='session_password' class='forml' value=\"\" size='40'>\n"; |
echo "<input type='hidden' name='essai_login' value='oui'>\n"; |
|
echo "<br> <input type='checkbox' name='session_remember' value='oui' id='session_remember'$rester_checked> "; |
echo "<label for='session_remember'>"._T('login_rester_identifie')."</label>"; |
|
$url = $cible->getUrl(); |
echo "<input type='hidden' name='url' value='$url'>\n"; |
echo "<input type='hidden' name='session_password_md5' value=''>\n"; |
echo "<input type='hidden' name='next_session_password_md5' value=''>\n"; |
echo "<div align='right'><input type='submit' class='spip_bouton' name='submit' value='"._T('bouton_valider')."'></div>\n"; |
echo "</div>"; |
echo "</form>"; |
} |
else { // demander seulement le login |
|
$url = $cible->getUrl(); |
$action = $clean_link->getUrl(); |
|
echo "<form name='form_login' action='$action' method='post'>\n"; |
echo "<div class='spip_encadrer'>"; |
if ($erreur) echo "<font color=red><b>$erreur</b></font><p>"; |
echo "<label><b>"._T('login_login2')."</b><br></label>"; |
echo "<input type='text' name='var_login' class='forml' value=\"\" size='40'>\n"; |
|
echo "<input type='hidden' name='var_url' value='$url'>\n"; |
echo "<div align='right'><input type='submit' class='spip_bouton' name='submit' value='"._T('bouton_valider')."'></div>\n"; |
echo "</div>"; |
echo "</form>"; |
} |
|
// Gerer le focus |
echo "<script type=\"text/javascript\"><!--\n" . $js_focus . "\n//--></script>\n"; |
|
if ($echec_cookie == "oui" AND $php_module AND !$ignore_auth_http) { |
echo "<form action='spip_cookie.php3' method='get'>"; |
echo "<fieldset>\n<p>"; |
echo _T('login_preferez_refuser')." \n"; |
echo "<input type='hidden' name='essai_auth_http' value='oui'> "; |
$url = $cible->getUrl(); |
echo "<input type='hidden' name='url' value='$url'>\n"; |
echo "<div align='right'><input type='submit' name='submit' class='spip_bouton' value='"._T('login_sans_cookiie')."'></div>\n"; |
echo "</fieldset></form>\n"; |
} |
|
echo "\n<center>"; // debut du pied de login |
|
// Bouton s'inscrire |
$inscriptions_ecrire = (lire_meta("accepter_inscriptions") == "oui"); |
if ((!$prive AND (lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo')) OR ($prive AND $inscriptions_ecrire)) { |
echo '[<a href="spip_pass.php3" target="spip_pass" onclick="' |
."javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=450'); return false;\">" |
._T('login_sinscrire').'</a>]'; |
} |
// Bouton oubli de mot de passe |
include_ecrire ("inc_mail.php3"); |
if (tester_mail()) { |
echo ' [<a href="spip_pass.php3?oubli_pass=oui" target="spip_pass" onclick="' |
."javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;\">" |
._T('login_motpasseoublie').'</a>]'; |
} |
// Bouton retour au site public |
if ($prive) echo " [<a href='$url_site'>"._T('login_retoursitepublic')."</a>]"; |
|
echo "</center>\n"; |
|
echo ferme_login(); |
} |
|
?> |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |