You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
56 lines
1.9 KiB
<?php |
|
/** |
|
* Plugin Acces Restreint 3.0 pour Spip 2.0 |
|
* Licence GPL (c) 2006-2008 Cedric Morin |
|
* |
|
*/ |
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) { |
|
return; |
|
} |
|
|
|
|
|
if (isset($GLOBALS['meta']['accesrestreint_base_version'])) { |
|
// Si on n'est pas connecte, aucune autorisation n'est disponible |
|
// pas la peine de sortir la grosse artillerie |
|
if (!isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
$GLOBALS['accesrestreint_zones_autorisees'] = ''; |
|
} else { |
|
// Pipeline : calculer les zones autorisees, sous la forme '1,2,3' |
|
// TODO : avec un petit cache pour eviter de solliciter la base de donnees |
|
$GLOBALS['accesrestreint_zones_autorisees'] = |
|
pipeline('accesrestreint_liste_zones_autorisees', ''); |
|
} |
|
|
|
// Ajouter un marqueur de cache pour le differencier selon les autorisations |
|
if (!isset($GLOBALS['marqueur'])) { |
|
$GLOBALS['marqueur'] = ''; |
|
} |
|
$GLOBALS['marqueur'] .= ':accesrestreint_zones_autorisees=' |
|
.$GLOBALS['accesrestreint_zones_autorisees']; |
|
} |
|
|
|
/** |
|
* Calcul unifié et centralisé du hash associé à un document |
|
* @param int $id_document |
|
* @param string $fichier |
|
* @return string |
|
*/ |
|
function accesrestreint_calculer_cle_document($id_document, $fichier) { |
|
if (!function_exists('calculer_cle_action')) { |
|
include_spip('inc/securiser_action'); |
|
} |
|
|
|
$sign = array($id_document, $fichier); |
|
|
|
// si _ACCESRESTREINT_SECRET_SIGNATURE_DOCUMENTS est definie, on l'ajoute : cela permet d'invalider les cles dans la nature est d'en regenerer de nouvelles |
|
// ie on peut avoir des urls temporaires en liant ce secret a la date (mais cache a gerer, car il n'y a pas de recouvrement, le changement est brutal) |
|
if (defined('_ACCESRESTREINT_SECRET_SIGNATURE_DOCUMENTS') and _ACCESRESTREINT_SECRET_SIGNATURE_DOCUMENTS) { |
|
$sign[] = _ACCESRESTREINT_SECRET_SIGNATURE_DOCUMENTS; |
|
} |
|
|
|
// cette url doit etre publique ! |
|
$cle = calculer_cle_action(implode(',', $sign)); |
|
|
|
return $cle; |
|
} |