No description
|
||
---|---|---|
action | ||
base | ||
css | ||
doc | ||
formulaires | ||
img | ||
inc | ||
inclure | ||
lang | ||
prive | ||
auted_administrations.php | ||
auted_autorisations.php | ||
auted_fonctions.php | ||
auted_options.php | ||
auted_pipelines.php | ||
paquet.xml | ||
README.md |
Autorisations étendues
Plugins pour développeur qui permet d'étendre les autorisations de SPIP. Il est compatible avec le plugin chosen
Configuration
- il a besoin d'une constante listant les autorisations à ajouter (dans xxx_options.php)
define('_AUTH_MODELE', [
'produit' => [
'label' => 'Produit / Stage',
'type' => 'produit',
'faire' => ['voir','creer', 'modifier', 'supprimer']
],
'guide' => [
'label' => 'Guide',
'type' => 'guide',
'faire' => ['voir', 'modifier']
],
'client' => [
'label' => 'Client',
'type' => 'client',
'faire' => ['voir', 'modifier']
]
]);
- Appeler le formulaire d'édition des autorisations. ex :
[(#AUTORISER{modifier,autmod}|sinon_interdire_acces)]
<div class="inner">
<header>
<h1 class="txtcenter">Gestion des autorisations</h1>
</header>
<div class="">
[(#FORMULAIRE_EDITER_AUTORISATIONS{#ENV{id_auteur}})]
</div>
</div>
-
Si un auteur un dans son champ pgp = boss => il aura tous les droits (un logo s'affiche devant son nom)
-
On peut ajouter des criteres de sélection des auteurs qui s'afficheront dans ce formulaire via le pipeline formulaire_charger. ex :
function prefix_formulaire_charger($flux){
if ($flux['args']['form'] === 'editer_autorisations'){
$flux['data']['pgp'] = ["guide","client"];
$flux['data']['webmestre'] = "non";
}
return $flux;
}
- Ces autorisations sont stockées dans un json dans un champ autorisations de la table spip_auteurs
Utilisation des autorisations
- Dans le fichier prefix_autorisations.php ajouter en haut du fichier :
include_spip('inc/tester_autorisation');
- Puis ajouter les fonctions d'autorisation, par exemple, pour le type guide, nous avons : voir et modifier
function autoriser_guide_voir_dist($faire, $type, $id, $qui, $opt) {
return tester_autorisation($faire, $type, $qui);
}
function autoriser_guide_modifier_dist($faire, $type, $id, $qui, $opt) {
return tester_autorisation($faire, $type, $qui);
}
// comme nos guides sont des auteurs, pour utiliser les crayons, nous surchargeons la fonction de SPIP
function autoriser_auteur_modifier($faire, $type, $id, $qui, $opt) {
return tester_autorisation($faire, "guide", $qui);
}
- Cette fonction : tester_autorisation(), renvoie toujours true pour les webmestres
Elle ajoute un pipeline :
super_autorisation
qui permet de modifier le retour. Exemple, renvoyer toujours true pour les boss (pgp=boss, de l'auteur qui demande l'autorisation)
function prefex_super_autorisation($qui){
if ($qui['pgp'] === 'boss') {
return true;
}
return false;
}
On peut exeptionnellement interdire le passage dans ce pipeline en appelant notre fonction tester_autorisation()
avec false en 4e arg
tester_autorisation($faire, $type, $qui, false);