Bonjour à tous,
Pour ma première intervention je voudrais poser une question qui (s'il
vous plaît ne m'enveuillez pas) à déjà été abordée plein de fois mais à
laquelle je n'ai pas vraiment trouvé de réponse dans les archives de la
liste. Ca concerne la protection d'accès à des rubriques et des articles
pour des visiteurs abonnés mais pas rédacteurs ou admins, en utilisant
les .htaccess et .htpasswd d'Apache.
Je vais rentrer un peu dans le détail pour que vous compreniez mieux mon
problème. Un des sites dont je m'occupe est celui d'un
groupement/syndicat qui à plus de 1500 adhérents. Le site existe depuis
1999. Une partie est réservée uniquement aux adhérents. Chacun d'eux à un
login/password propre qui est déjà dans un fichier .htpasswd que je mets
à jour régulièrement. Tout le site est fait "à la main" et donc afin que
quelqu'un de ce groupement puisse mettre en ligne du contenu nous (ma
boite) leur avons proposé de passer en "dynamique".
J'ai cherché un longuement un système de publication qui réponde à ces
besoins (genre nuke & co), mais je n'ai pas trouvé un aussi souple que
Spip 1.5 (j'ai déjà une petite expérience de 2 site en Spip donc j'ai
vite vu les limitations des autres systèmes). En recherchant sur la liste
ici-présente, j'ai quand même trouvé quelques infos et idées que j'ai
adapté et que je voudrais vous soumettre afin d'avoir un avis avisé
Afin de tester mes idées, j'ai d'abord crée les mot-clés "public" et
"privé" que je mets dans chaque article et rubriques. Ensuite j'ai fait
des squelettes "article_prv" et "rubrique_prv" normaux et j'ai modifié
les squelettes publiques pour qu'ils n'affichent pas les articles privés :
<BOUCLE_article_principal(ARTICLES) {id_article} {id_mot=1}>
Puis j'ai protégé mes squelettes privés par .htaccess :
AuthType Basic
AuthName membres
AuthUserFile /lien/vers/le/fichier/.htpasswd
AuthGroupFile /dev/null
<Files rubrique_prv.php3>
Require valid-user
</Files>
<Files article_prv.php3>
Require valid-user
</Files>
Et enfin j'ai modifié le "inc-urls-standard.php3" afin qu'il écrive les
liens en fonction des deux mots clés :
function generer_url_article($id_article) {
$url = "article.php3?id_article=$id_article"; // par defaut
if (! $id_article) $id_article = 0;
$result = spip_query("SELECT id_mot FROM spip_mots_articles WHERE
id_article=$id_article");
$row = spip_fetch_array($result);
$id_rubrique = $row['id_rubrique'];
$id_mot = $row['id_mot'];
if ($id_mot == 2) $url = "article_prv.php3?id_article=$id_article";
if ($GLOBALS['recherche']) $url .=
"&var_recherche=".urlencode($GLOBALS['recherche']);
return $url;
}
function generer_url_rubrique($id_rubrique) {
$url = "rubrique.php3?id_rubrique=$id_rubrique";
if (! $id_rubrique) $id_rubrique = 0;
$result = spip_query("SELECT id_mot FROM spip_mots_rubriques WHERE
id_rubrique=$id_rubrique");
$row = spip_fetch_array($result);
$id_mot = $row['id_mot'];
if ($id_mot == 2) $url = "rubrique_prv.php3?id_rubrique=$id_rubrique";
if ($GLOBALS['recherche']) $url .=
"&var_recherche=".urlencode($GLOBALS['recherche']);
return $url;
}
J'aimerais bien savoir ce que vous pensez de cette solution avant de me
lancer dans la refonte complète du site. Avez-vous des "pour" et/ou des
"contre" ? D'après ce que j'ai pu constater, ça à l'air de marcher pas
mal. J'ai lu quelque part dans la liste que la protection de squelette
par htaccess n'était pas sûre ?
Je dois aussi trouver un moyen de "classer automatiquement" les articles,
brèves, documentation, revue bimestrielle, par réécriture des url du
genre /news/022003/, /documentation/article_machin.html ou
/journal/numero12/edito.html, etc. Mais je crois qu'il vaut mieux que
cela fasse l'objet d'un autre post. Je vais d'abord jeter un oeil sur le
"inc-urls-diplo.php3" du Monde Diplo.
Je remercie déjà tous ceux qui m'ont lu jusqu'au bout et ceux qui
voudrons bien éclairer ma lanterne.
</BOUCLE_leche_pompes>
Bien à vous,
Sacha