You cannot 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
PHP
56 lines
1.9 KiB
PHP
<?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;
|
|
} |