# Autorisations étendues Plugins pour développeur qui permet d'étendre les autorisations de SPIP. Il est compatible avec le plugin chosen ## Configuration 1. il a besoin d'une constante listant les autorisations à ajouter (dans xxx_options.php) ```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'] ] ]); ``` 2. Appeler le formulaire d'édition des autorisations. ex : ```html [(#AUTORISER{modifier,autmod}|sinon_interdire_acces)]

Gestion des autorisations

[(#FORMULAIRE_EDITER_AUTORISATIONS{#ENV{id_auteur}})]
``` ![formulaire_autorisation](./doc/formulaire_autorisations.png "Formulaire_d'autorisations") 3. Si un auteur un dans son champ **pgp = boss** => il aura tous les droits (un logo s'affiche devant son nom) 4. On peut ajouter des criteres de sélection des auteurs qui s'afficheront dans ce formulaire via le pipeline formulaire_charger. ex : ```php function prefix_formulaire_charger($flux){ if ($flux['args']['form'] === 'editer_autorisations'){ $flux['data']['pgp'] = ["guide","client"]; $flux['data']['webmestre'] = "non"; } return $flux; } ``` 5. Ces autorisations sont stockées dans un json dans un champ autorisations de la table spip_auteurs ## Utilisation des autorisations 1. Dans le fichier prefix_autorisations.php ajouter en haut du fichier : ```php include_spip('inc/tester_autorisation'); ``` 2. Puis ajouter les fonctions d'autorisation, par exemple, pour le type guide, nous avons : voir et modifier ```php 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); } ``` 3. 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) ```php 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 ```php tester_autorisation($faire, $type, $qui, false); ```