[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /***************************************************** 3 * This file is part of Agora, web based content management system. 4 * 5 * Agora is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 * 9 * Agora is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details (file "COPYING"). 13 * 14 * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière. 15 * List of authors detailed in "copyright_fr.html" file. 16 * E-mail : agora@sig.premier-ministre.gouv.fr 17 * Web site : http://www.agora.gouv.fr 18 *****************************************************/ 19 // Ajout Clever Age elebescond 20 require_once (dirname(__FILE__). "/ecrire/include/bd/inc_auteur_factory.php"); 21 /******* Ajout EXTRANET guillaume.grason@diplomatie.gouv.fr *******/ 22 require_once (dirname(__FILE__)."/ecrire/include/bd/inc_extranaute_factory.php"); 23 /******* Fin Ajout EXTRANET guillaume.grason@diplomatie.gouv.fr *******/ 24 require_once (dirname(__FILE__). "/ecrire/include/bd/inc_profil_factory.php"); 25 26 // Fin ajout 27 28 // 29 // Ce fichier ne sera execute qu'une fois 30 if (defined("_INC_LOGIN")) 31 return; 32 33 define("_INC_LOGIN", "1"); 34 35 include_once ("ecrire/inc_meta.php"); 36 include_once ("ecrire/inc_session.php"); 37 include_once ("ecrire/inc_filtres.php"); 38 include_once ("ecrire/inc_texte.php"); 39 include_once ("inc-formulaires.php"); 40 41 // gerer l'auth http 42 function auth_http ($cible, $essai_auth_http) { 43 if ($essai_auth_http == 'oui') { 44 include_once ('inc_session.php'); 45 46 if (!verifier_php_auth()) { 47 $url = urlencode($cible->getUrl()); 48 $page_erreur = "<strong>" . _T('login_connexion_refusee'). "</strong><p>" . _T( 49 'login_login_pass_incorrect'). "<p>[<a href='./'>" . _T( 50 'login_retour_site'). "</a>] [<a href='./spip_cookie.php?essai_auth_http=oui&url=$url'>" . _T('login_nouvelle_tentative'). "</a>]"; 51 52 if (ereg("ecrire/", $url)) 53 $page_erreur .= " [<a href='ecrire/'>" . _T('login_espace_prive'). "</a>]"; 54 ask_php_auth ($page_erreur); 55 } 56 else 57 @header ("Location: " . $cible->getUrl()); 58 exit; 59 } 60 // si demande logout auth_http 61 else if ($essai_auth_http == 'logout') { 62 include_ecrire ('inc_session.php'); 63 ask_php_auth ("<strong>" . _T('login_deconnexion_ok'). "</strong><p>" . _T( 64 'login_verifiez_navigateur'). "<p>[<a href='./'>" . _T( 65 'login_retour_public'). "</a>] [<a href='./spip_cookie.php?essai_auth_http=oui&redirect=ecrire'>" . _T('login_test_navigateur'). "</a>] [<a href='ecrire/'>" . _T('login_espace_prive'). "</a>]"); 66 exit; 67 } 68 } 69 70 function ouvre_login ($titre = '') { 71 $retour .= "<div>"; 72 73 if ($titre) 74 $retour .= "<h3 class='spip'>$titre</h3>"; 75 76 //$retour .= '<font size="2" face="Verdana,arial,helvetica,sans-serif">'; 77 return $retour; 78 } 79 80 function ferme_login () { 81 //$retour = "</font>"; 82 $retour .= "</div>"; 83 return $retour; 84 } 85 86 function login ($cible = '', $prive = 'prive', $message_login = '') { 87 $login = $GLOBALS['var_login']; 88 $erreur = ''; 89 $essai_auth_http = $GLOBALS['var_essai_auth_http']; 90 $logout = $GLOBALS['var_logout']; 91 92 // en cas d'echec de cookie, inc_auth a renvoye vers spip_cookie qui 93 // a tente de poser un cookie ; s'il n'est pas la, c'est echec cookie 94 // s'il est la, c'est probablement un bookmark sur bonjour=oui, 95 // et pas un echec cookie. 96 if ($GLOBALS['var_echec_cookie']) 97 /********** Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 98 $echec_cookie = ($GLOBALS[$GLOBALS['cookie_prefix']. '_session'] != 'test_echec_cookie'); 99 //$echec_cookie = ($GLOBALS['spip_session'] != 'test_echec_cookie'); 100 /********** Fin modification SPIP_COOKIE johnny.muller@ypok.com **********/ 101 102 global $auteur_session; 103 global $spip_session, $PHP_AUTH_USER, $ignore_auth_http; 104 global $spip_admin; 105 global $php_module; 106 global $clean_link; 107 108 if (!$cible) { 109 if ($GLOBALS['var_url']) 110 $cible = new Link($GLOBALS['var_url']); 111 else if ($prive) 112 $cible = new Link('ecrire/'); 113 else 114 $cible = $clean_link; 115 } 116 117 $cible->delVar('var_erreur'); 118 $cible->delVar('var_url'); 119 $clean_link->delVar('var_erreur'); 120 $clean_link->delVar('var_login'); 121 122 include_once ("ecrire/inc_session.php"); 123 verifier_visiteur(); 124 $profilMetier = &recuperer_instance_profil(); 125 $monProfil1 = $profilMetier->getProfilForIntitule('item_non_abonne'); 126 127 if (PEAR::isError($monProfil1)) { 128 die ($monProfil1->getMessage()); 129 } 130 131 $monProfil2 = $profilMetier->getProfilForIntitule('item_administrateur'); 132 133 if (PEAR::isError($monProfil2)) { 134 die ($monProfil2->getMessage()); 135 } 136 137 if ($auteur_session AND !$logout AND 138 // TODO : c quoi ce vieux residu ? 139 ($auteur_session['profil'] > $monProfil1->getPoids() - 1 AND $auteur_session['profil'] 140 <= $monProfil2->getPoids())) { 141 $url = $cible->getUrl(); 142 143 if ($url != $GLOBALS['clean_link']->getUrl()) 144 @Header ("Location: $url"); 145 146 echo "<a href='$url' title='" . _T('login_par_ici'). "'>" . _T('login_par_ici'). "</a>\n"; 147 return; 148 } 149 150 // initialisations 151 $nom_site = lire_meta('nom_site'); 152 153 if (!$nom_site) 154 $nom_site = _T('info_mon_site_spip'); 155 156 $url_site = lire_meta('adresse_site'); 157 158 if (!$url_site) 159 $url_site = "./"; 160 161 if ($GLOBALS['var_erreur'] == 'pass') 162 $erreur = _T('login_erreur_pass'); 163 164 // Le login est memorise dans le cookie d'admin eventuel 165 if (!$login) { 166 if (ereg("^@(.*)$", $spip_admin, $regs)) 167 $login = $regs[1]; 168 } 169 else if ($login == '-1') 170 $login = ''; 171 172 $flag_autres_sources = $GLOBALS['ldap_present']; 173 174 // quels sont les aleas a passer ? 175 if ($login) { 176 $login = addslashes($login); 177 $auteurMetier = &recuperer_instance_auteur(); 178 $profilMetier = &recuperer_instance_profil(); 179 $monProfil = $profilMetier->getProfilForIntitule('texte_statut_poubelle'); 180 181 if (PEAR::isError($monProfil)) { 182 die ($monProfil->getMessage()); 183 } 184 185 $allAuteurs = $auteurMetier->getAllForLoginAndNotProfil($login, $monProfil->getPoids()); 186 187 if (PEAR::isError($allAuteurs)) { 188 die ($allAuteurs->getMessage()); 189 } 190 if (list(, $monAuteur) = each($allAuteurs)) { 191 $id_auteur = $monAuteur->getAuteurId(); 192 $source_auteur = $monAuteur->getSource(); 193 $alea_actuel = $monAuteur->getAleaActuel(); 194 $alea_futur = $monAuteur->getAleaFutur(); 195 } 196 else if (!$flag_autres_sources) { 197 $erreur = _T('login_identifiant_inconnu', array('login' => $login)); 198 $login = ''; 199 @spip_setcookie("spip_admin", "", time() - 3600); 200 } 201 } 202 203 // javascript pour le focus 204 if ($login) 205 $js_focus = 'document.form_login.session_password.focus();'; 206 else 207 $js_focus = 'document.form_login.var_login.focus();'; 208 209 if ($echec_cookie == "oui") { 210 echo ouvre_login(_T('erreur_probleme_cookie')); 211 echo "<p><strong>" . _T('login_cookie_oblige'). "</strong> "; 212 echo _T('login_cookie_accepte'). "\n"; 213 } 214 else { 215 echo ouvre_login(); 216 echo "<br />$message_login<br />\n"; 217 } 218 219 if ($login) { 220 // Affiche formulaire de login en incluant le javascript MD5 221 $flag_challenge_md5 = ($source_auteur == 'spip'); 222 223 if ($flag_challenge_md5) 224 echo "<script type=\"text/javascript\" src=\"ecrire/md5.js\"></script>"; 225 226 echo "<form name='form_login' action='./spip_cookie.php' method='post'"; 227 228 if ($flag_challenge_md5) 229 echo " onSubmit='if (this.session_password.value) { 230 this.session_password_md5.value = calcMD5(\"$alea_actuel\" + this.session_password.value); 231 this.next_session_password_md5.value = calcMD5(\"$alea_futur\" + this.session_password.value); 232 this.session_password.value = \"\"; 233 }'"; 234 235 echo ">\n"; 236 echo "<div class='spip_encadrer'>"; 237 238 if ($erreur) 239 echo "<div class='reponse_formulaire'><strong>$erreur</strong></div><p>"; 240 241 if ($flag_challenge_md5) { 242 // si javascript actif, on affiche le login en 'dur', et on le passe en champ hidden 243 echo "<script type=\"text/javascript\"><!--\n" . "document.write('" . _T( 244 'login_login'). " <strong>$login</strong> <br /><font size=\\'2\\'>[<a href=\\'spip_cookie.php?cookie_admin=non&url=" . rawurlencode( 245 $clean_link->getUrl()). "\\'>" . _T('login_autre_identifiant'). "</a>]</font>');\n" . "//--></script>\n"; 246 echo "<input type='hidden' name='session_login_hidden' value='$login' />"; 247 248 // si javascript inactif, le login est modifiable (puisque le challenge n'est pas utilise) 249 echo "<noscript>"; 250 echo "<font face='Georgia, Garamond, Times, serif' size='3'>"; 251 echo _T('login_non_securise'). " <a href=\"" . $clean_link->getUrl(). "\">" . _T('login_recharger'). "</a></font>\n"; 252 } 253 254 echo "<label for=\"session_login\"><strong>" . _T('login_login2'). "</strong><br /></label>"; 255 echo "<input type='text' name='session_login' id='session_login' class='forml' value=\"$login\" size='40' />\n"; 256 257 if ($flag_challenge_md5) 258 echo "</noscript>\n"; 259 260 echo "<br /><br />\n<label for=\"session_password\"><strong>" . _T('login_pass2'). "</strong><br /></label>"; 261 echo "<input type='password' name='session_password' id='session_password' class='forml' value=\"\" size='40' />\n"; 262 echo "<input type='hidden' name='essai_login' value='oui' />\n"; 263 264 echo "<br> <input type='checkbox' name='session_remember' value='oui' id='session_remember'> "; 265 echo "<label for='session_remember'>" . _T('login_rester_identifie'). "</label>"; 266 267 $url = $cible->getUrl(); 268 echo "<input type='hidden' name='url' value='$url' />\n"; 269 echo "<input type='hidden' name='session_password_md5' value='' />\n"; 270 echo "<input type='hidden' name='next_session_password_md5' value='' />\n"; 271 echo "<div class='bouton_login'><input type='submit' class='spip_bouton' name='submit' value='" . _T('bouton_valider'). "' /></div>\n"; 272 echo "</div>"; 273 echo "</form>"; 274 } 275 else { // demander seulement le login 276 $url = $cible->getUrl(); 277 $action = $clean_link->getUrl(); 278 279 echo "<form name='form_login' action='$action' method='post'>\n"; 280 echo "<div class='spip_encadrer'>"; 281 282 if ($erreur) 283 echo "<div class='erreur_login'>$erreur</div><br />"; 284 285 echo "<label for=\"var_login\"><strong>" . _T('login_login2'). "</strong><br /></label>"; 286 echo "<input type='text' name='var_login' id='var_login' class='forml' value=\"\" size='40' />\n"; 287 288 echo "<input type='hidden' name='var_url' value='$url' />\n"; 289 echo "<div class='bouton_login'><input type='submit' class='spip_bouton' name='submit' value='" . _T('bouton_valider'). "' /></div>\n"; 290 echo "</div>"; 291 echo "</form>"; 292 } 293 294 // Gerer le focus 295 echo "<script type=\"text/javascript\"><!--\n" . $js_focus . "\n//--></script>\n"; 296 297 if ($echec_cookie == "oui" AND $php_module AND !$ignore_auth_http) { 298 echo "<form action='spip_cookie.php' method='get'>"; 299 echo "<fieldset>\n<p>"; 300 echo _T('login_preferez_refuser'). " \n"; 301 echo "<input type='hidden' name='essai_auth_http' value='oui' /> "; 302 $url = $cible->getUrl(); 303 echo "<input type='hidden' name='url' value='$url' />\n"; 304 echo "<div class='bouton_login'><input type='submit' name='submit' class='spip_bouton' value='" . _T('login_sans_cookiie'). "' /></div>\n"; 305 echo "</fieldset></form>\n"; 306 } 307 308 //echo "\n<center>"; // debut du pied de login 309 310 // Bouton s'inscrire 311 $inscriptions_ecrire = (lire_meta("accepter_inscriptions") == "oui"); 312 313 if ((!$prive AND (lire_meta('accepter_visiteurs') == 'oui')OR (lire_meta('forums_publics') 314 == 'abo'))OR ($prive AND $inscriptions_ecrire)) { 315 echo '[<a href="spip_pass.php" target="spip_pass" onclick="' . "javascript:window.open('spip_pass.php', 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=450'); return false;\">" . _T('login_sinscrire'). '</a>]'; 316 } 317 318 // Bouton oubli de mot de passe 319 include_ecrire ("inc_mail.php"); 320 321 if (tester_mail()) { 322 echo ' [<a href="spip_pass.php?oubli_pass=oui" target="spip_pass" title="' . _T( 323 'login_motpasseoublie'). '" onclick="' . "javascript:window.open('spip_pass.php?oubli_pass=oui', 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;\">" . _T( 324 'login_motpasseoublie'). '</a>]'; 325 } 326 327 // Bouton retour au site public 328 if ($prive) 329 echo " [<a href='$url_site' title='" . _T('login_retoursitepublic'). "'>" . _T( 330 'login_retoursitepublic'). "</a>]"; 331 332 //echo "</center>\n"; 333 334 echo ferme_login(); 335 } 336 /******* Ajout EXTRANET guillaume.grason@diplomatie.gouv.fr *******/ 337 function login_ex($cible = '') { 338 $login = $GLOBALS['var_login']; 339 $erreur = ''; 340 $logout = $GLOBALS['var_logout']; 341 342 if ($GLOBALS['var_echec_cookie']) 343 $echec_cookie = ($GLOBALS[$GLOBALS['cookie_prefix'].'_session_ex'] != 'test_echec_cookie'); 344 345 global $extranaute_session; 346 global $spip_session_ex; 347 global $php_module; 348 global $clean_link; 349 350 if (!$cible) { 351 if ($GLOBALS['var_url']) $cible = new Link(urldecode($GLOBALS['var_url'])); 352 else $cible = $clean_link; 353 } 354 $cible->delVar('var_erreur'); 355 $cible->delVar('var_url'); 356 $clean_link->delVar('var_erreur'); 357 $clean_link->delVar('var_login'); 358 359 include_once ("inc-session.php"); 360 verifier_visiteur_ex(); 361 if ($GLOBALS['var_erreur'] =='no_access') { 362 $url = urlencode($cible->getUrl()); 363 echo "<br />\n"; 364 echo "<div class='spip_encadrer'>\n"; 365 echo " <div class='reponse_formulaire'><strong>"._T('login_erreur_no_access')."</strong></div>\n"; 366 echo " <a href='spip_cookie_extranet.php?logout=".$extranaute_session['login']."&url=$url' title='"._T('login_autre_identite')."'>"._T('login_autre_identite')."</a>\n"; 367 echo "</div>\n"; 368 return; 369 } 370 elseif ($extranaute_session AND !$logout) { 371 $url = $cible->getUrl(); 372 if ($url != $GLOBALS['clean_link']->getUrl()) 373 @Header("Location: $url"); 374 echo "<a href='$url' title='"._T('login_par_ici')."'>"._T('login_par_ici')."</a>\n"; 375 return; 376 } 377 378 // initialisations 379 if ($GLOBALS['var_erreur'] =='pass') $erreur = _T('login_erreur_pass'); 380 381 if ($login == '-1') 382 $login = ''; 383 384 // quels sont les aleas a passer ? 385 if ($login) { 386 $login = addslashes($login); 387 $extranauteMetier = &recuperer_instance_extranaute(); 388 $allExtranautes = $extranauteMetier->getAllForLogin($login); 389 if(PEAR::isError($allExtranautes)) { 390 die($allExtranautes->getMessage()); 391 } 392 393 if (list(,$monExtranaute) = each($allExtranautes)) { 394 $id_extranaute = $monExtranaute->getExtranauteId(); 395 } else { 396 $erreur = _T('login_identifiant_inconnu', array('login' => $login)); 397 $login = ''; 398 } 399 } 400 401 // javascript pour le focus 402 if ($login) 403 $js_focus = 'document.form_login.session_password.focus();'; 404 else 405 $js_focus = 'document.form_login.var_login.focus();'; 406 407 if ($echec_cookie == "oui") { 408 echo ouvre_login (_T('erreur_probleme_cookie')); 409 echo "<p><strong>"._T('login_cookie_oblige')."</strong> "; 410 echo _T('login_cookie_accepte')."\n"; 411 } 412 else { 413 echo ouvre_login (); 414 echo "<br />$message_login<br />\n"; 415 } 416 417 if ($login) { 418 // Affiche formulaire de login en incluant le javascript MD5 419 420 echo "<script type=\"text/javascript\" src=\"ecrire/md5.js\"></script>"; 421 echo "<form name='form_login' action='./spip_cookie_extranet.php' method='post'"; 422 echo " onSubmit='if (this.session_password.value) { 423 this.session_password_md5.value = calcMD5(this.session_password.value); 424 this.next_session_password_md5.value = calcMD5(this.session_password.value); 425 this.session_password.value = \"\"; 426 }'"; 427 echo ">\n"; 428 echo "<div class='spip_encadrer'>"; 429 if ($erreur) echo "<div class='reponse_formulaire'><strong>$erreur</strong></div><p>"; 430 431 echo "<script type=\"text/javascript\"><!--\n" . 432 "document.write('"._T('login_login')." <strong>$login</strong> <br /><font size=\\'2\\'>[<a href=\\'spip_cookie_extranet.php?cookie_admin=non&url=".rawurlencode($clean_link->getUrl())."\\'>"._T('login_autre_identifiant')."</a>]</font>');\n" . 433 "//--></script>\n"; 434 echo "<input type='hidden' name='session_login_hidden' value='$login' />"; 435 436 // si jaja inactif, le login est modifiable (puisque le challenge n'est pas utilise) 437 echo "<noscript>"; 438 echo "<font face='Georgia, Garamond, Times, serif' size='3'>"; 439 echo _T('login_non_securise')." <a href=\"".$clean_link->getUrl()."\">"._T('login_recharger')."</a></font>\n"; 440 441 echo "<label for=\"session_login\"><strong>"._T('login_login2')."</strong><br /></label>"; 442 echo "<input type='text' name='session_login' id='session_login' class='forml' value=\"$login\" size='40' />\n"; 443 echo "</noscript>\n"; 444 445 echo "<br /><br />\n<label for=\"session_password\"><strong>"._T('login_pass2')."</strong><br /></label>"; 446 echo "<input type='password' name='session_password' id='session_password' class='forml' value=\"\" size='40' />\n"; 447 echo "<input type='hidden' name='essai_login' value='oui' />\n"; 448 449 echo "<br> <input type='checkbox' name='session_remember' value='oui' id='session_remember'> "; 450 echo "<label for='session_remember'>"._T('login_rester_identifie')."</label>"; 451 452 $url = $cible->getUrl(); 453 echo "<input type='hidden' name='url' value='$url' />\n"; 454 echo "<input type='hidden' name='session_password_md5' value='' />\n"; 455 echo "<input type='hidden' name='next_session_password_md5' value='' />\n"; 456 echo "<div class='bouton_login'><input type='submit' class='spip_bouton' name='submit' value='"._T('bouton_valider')."' /></div>\n"; 457 echo "</div>"; 458 echo "</form>"; 459 } 460 else { // demander seulement le login 461 462 $url = $cible->getUrl(); 463 $action = $clean_link->getUrl(); 464 465 echo "<form name='form_login' action='$action' method='post'>\n"; 466 echo "<div class='spip_encadrer'>"; 467 if ($erreur) echo "<div class='erreur_login'>$erreur</div><br />"; 468 echo "<label for=\"var_login\"><strong>"._T('login_login2')."</strong><br /></label>"; 469 echo "<input type='text' name='var_login' id='var_login' class='forml' value=\"\" size='40' />\n"; 470 471 echo "<input type='hidden' name='var_url' value='$url' />\n"; 472 echo "<div class='bouton_login'><input type='submit' class='spip_bouton' name='submit' value='"._T('bouton_valider')."' /></div>\n"; 473 echo "</div>"; 474 echo "</form>"; 475 } 476 477 // Gerer le focus 478 echo "<script type=\"text/javascript\"><!--\n" . $js_focus . "\n//--></script>\n"; 479 480 echo ferme_login(); 481 } 482 /******* Fin Ajout EXTRANET guillaume.grason@diplomatie.gouv.fr *******/ 483 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |