source: spip-zone/_plugins_/acces_restreint/trunk/formulaires/configurer_accesrestreint.php @ 67731

Last change on this file since 67731 was 67731, checked in by cedric@…, 8 years ago

Amelioration de la gestion des URLs de documents protégés :

Si apache le permet on se contente d'une unique .htaccess dans IMG/ qui rewrite les urls des documents
Quand la protection est activée

  • on génère des urls de la forme IMG/png/truc.png?12/abe345 qui contiennent l'id et le hash pour des questions de performance (revient a mettre l'autorisation en cache au lieu de la calculer sur chaque hit de l'image).
  • neanmoins les urls IMG/png/truc.png sont aussi fonctionnelles, via le calcul d'autorisation explicite au moment du hit

Cela permet de ne pas casser les urls lorsqu'on active ou desactive la protection de document : dans les deux cas les urls qui existaient auparavant restent fonctionnelles, et s'adaptent à la nouvelle strategie de protection.

Si apache ne permet pas le rewrite rule (testé par un recuperer_page sur une url improbable IMG/test/.test/0/1 donc soumis aussi à la possibilité de faire une requete http) on se rabat sur la strategie antérieure avec un deny all dans chaque sous repertoire, et des urls de la forme /docrestreint.api/12/abe345/png/truc.png

File size: 1.2 KB
Line 
1<?php
2/**
3 * Plugin Acces Restreint 3.0 pour Spip 2.0
4 * Licence GPL (c) 2006-2008 Cedric Morin
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10function formulaires_configurer_accesrestreint_charger_dist(){
11        $valeurs = array(
12                'accesrestreint_proteger_documents' => isset($GLOBALS['meta']["accesrestreint_proteger_documents"])?$GLOBALS['meta']["accesrestreint_proteger_documents"]:'non',
13                'creer_htpasswd' => $GLOBALS['meta']["creer_htpasswd"]?$GLOBALS['meta']["creer_htpasswd"]:'non',
14        );
15
16        return $valeurs;
17}
18
19function formulaires_configurer_accesrestreint_traiter_dist(){
20
21        $champs = array('accesrestreint_proteger_documents','creer_htpasswd');
22        $current = $GLOBALS['meta']["accesrestreint_proteger_documents"];
23
24        foreach($champs as $c)
25                ecrire_meta($c,_request($c)=='oui'?'oui':'non');
26
27        // generer/supprimer les fichiers htaccess qui vont bien
28        include_spip("inc/accesrestreint_documents");
29        accesrestreint_gerer_htaccess($GLOBALS['meta']["accesrestreint_proteger_documents"]=="oui");
30
31        // si le reglage du htaccess a change, purger le cache
32        if ($GLOBALS['meta']["accesrestreint_proteger_documents"]!==$current) {
33                $purger = charger_fonction("purger","action");
34                $purger("cache");
35        }
36
37        return array('message_ok'=>_T('config_info_enregistree'),'editable'=>true);
38}
Note: See TracBrowser for help on using the repository browser.