diff --git a/README.md b/README.md index 5aae5bc..25f5d01 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,90 @@ # 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); +``` diff --git a/doc/formulaire_autorisations.png b/doc/formulaire_autorisations.png new file mode 100644 index 0000000..b45088f Binary files /dev/null and b/doc/formulaire_autorisations.png differ diff --git a/formulaires/editer_autorisations.html b/formulaires/editer_autorisations.html index 45c0686..4cf75d7 100644 --- a/formulaires/editer_autorisations.html +++ b/formulaires/editer_autorisations.html @@ -27,7 +27,7 @@ [(#PGP|=={boss}|oui) boss ] - #NOM #PRENOM + #NOM