From cc0b187fc7e6bf1d620d282e4655f13a053b605c Mon Sep 17 00:00:00 2001 From: Christophe Date: Tue, 21 Jul 2020 20:52:34 +0200 Subject: [PATCH] =?UTF-8?q?MAJ=20de=20la=20doc=20avant=20archivage=20de=20?= =?UTF-8?q?ce=20plugin,=20qui=20est=20maintenant=20d=C3=A9velopp=C3=A9=20s?= =?UTF-8?q?ur=20git.spip.net?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 96 ++----------------------------------------------------- 1 file changed, 2 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index 8ff4b2b..5eb1b55 100644 --- a/README.md +++ b/README.md @@ -1,99 +1,7 @@ # Autorisations étendues -Plugins pour développeur qui permet d'étendre les autorisations de SPIP. -Il est compatible avec le plugin chosen + +le projet est migré vers SPIP : https://git.spip.net/spip-contrib-extensions/autorisations_etendues -## Configuration -1. Le plugin 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. 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; -} -``` - -## Formulaire de gestion des autorisations -1. Appeler le formulaire d'édition des autorisations, dans une page de votre choix. ex : -```html -[(#AUTORISER{modifier,autmodele}|sinon_interdire_acces)] -
-
-

Gestion des autorisations

-
-
- [(#FORMULAIRE_EDITER_AUTORISATIONS{#ENV{id_auteur}})] -
-
-``` -![formulaire_autorisation](./doc/formulaire_autorisations.png "Formulaire_d'autorisations") - -2. Si un auteur un dans son champ **boss = oui** => il aura tous les droits (un logo s'affiche devant son nom) : ex Emilie -3. Devant le nom d'un auteur, une petite icone verte (modèle) permet de sélectionner un modèle d'autorisation. -4. Quand un modèle d'autorisation est sélectionné, ex: pour Frédéric -> modèle Secrétaire, il récupère les autorisations définies dans le modèle **Secrétaire** et on ne peut donc plus modifier ses autorisations. Dans ce cas, on peut soit changer de modèle (icone modèle noire) soit dissocier le modèle (cadenas ouvert rouge). -5. Ces autorisations sont stockées en json dans le champ **autorisations** de la table spip_auteurs, on stocke aussi le nom du modèle le cas échant dans le champ **aut_nom** - -## Gestion des modèles d'autorisations -> On peut créer des modèles d'autorisations - -![formulaire_modeles_autorisations](./doc/formulaire_modeles_autorisations.png "Formulaire_modèles_d'autorisations") - - -## 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** et pour les auteurs avec le champ **boss=oui**. -Elle ajoute un pipeline : `super_autorisation` qui permet de modifier le retour. -Exemple, renvoyer toujours true pour les boss définis dans le champ 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 ou le test $qui['boss'] === 'oui' en appelant notre fonction `tester_autorisation()` avec false en 4e arg -```php -tester_autorisation($faire, $type, $qui, false); -```