[spip-dev] .htaccess et espace privé

Bonjour,

  J'ai repéré ce que je crois être un bug (v 1.6). Je voulais faire un site SPIP dont la partie publique est protégé par un .htaccess/.htpasswd. Problème, SPIP ne me donne plus accès à la partie privée : j'ai droit à une page m'indiquant « Connexion refusée » avec en dessous le lien « [réessayer] ».

  En furetant dans les fichier, j'ai réperé le bout de code qui aboutit à cet affichage dans inc_auth.php3 :

  // Peut-etre sommes-nous en auth http?
  if ($PHP_AUTH_USER && $PHP_AUTH_PW) {
    if (verifier_php_auth()) {
      $auth_login = $PHP_AUTH_USER;
      $auth_pass_ok = true;
      $auth_can_disconnect = true;
    }
    else // normalement on n'arrive pas la sauf changement de mot de passe dans la base...
    if ($PHP_AUTH_USER != 'root') // ... mais quelques serveurs forcent cette valeur
    {
      $auth_login = '';
      echo "<p><b>"._T('info_connexion_refusee')."</b></p>";
      echo "[<a href='../spip_cookie.php3?essai_auth_http=oui'>"._T('lien_reessayer')."</a>]";
      exit;
    }
    $PHP_AUTH_PW = '';
    $_SERVER['PHP_AUTH_PW'] = '';
    $HTTP_SERVER_VARS['PHP_AUTH_PW'] = '';
  }

Le premier if ne devrait-il pas s'écrire plutôt :

  if (lire_meta('creer_htpasswd ') == 'oui' && $PHP_AUTH_USER && $PHP_AUTH_PW) {

ou quelque chose du genre ?

Cordialement

@ Jean-Luc Béchennec <jean-luc.bechennec@tiscali.fr> :

  J'ai repéré ce que je crois être un bug (v 1.6). Je voulais faire un
site SPIP dont la partie publique est protégé par un
.htaccess/.htpasswd. Problème, SPIP ne me donne plus accès à la partie
privée : j'ai droit à une page m'indiquant « Connexion refusée » avec
en dessous le lien « [réessayer] ».

.../...

Le premier if ne devrait-il pas s'écrire plutôt :
  if (lire_meta('creer_htpasswd ') == 'oui' && $PHP_AUTH_USER &&
$PHP_AUTH_PW) {
ou quelque chose du genre ?

Non, le $PHP_AUTH_USER peut être là parce que l'utilisateur a refusé les
cookies et "préféré" s'authentifier par la méthode classique (http_auth).

Dans la version CVS, tu trouveras dans inc_version un drapeau
"ignore_auth_http" qui te permettra de faire ce que tu veux (pour
l'utiliser, crée un fichier ecrire/mes_options.php3 contenant :

<?php
    $ignore_auth_http = true; // pour ignorer les données dues à PHP_AUTH_USER
    $ignore_remote_user = true; // pour ignorer les données dues à .htaccess
?>

-- Fil