No description
Find a file
2020-02-11 22:02:38 +01:00
base champ pas utilise 2020-02-11 22:02:38 +01:00
content ajout autorisation 2020-02-11 17:19:03 +01:00
css amelioration visuelle + recup id_aut_modele dans le formualire 2020-02-11 18:43:16 +01:00
doc Debut de maj de la doc 2020-02-11 21:14:40 +01:00
formulaires amelioration visuelle + recup id_aut_modele dans le formualire 2020-02-11 18:43:16 +01:00
img amelioration visuelle + recup id_aut_modele dans le formualire 2020-02-11 18:43:16 +01:00
inc Maintenant que le plugin ajoute un champ boss dans spip_auteurs et une 2020-02-11 21:53:20 +01:00
inclure divers corrections, notamment, on ne peut pas modifier les droits si on a un modele associé 2020-02-11 15:25:44 +01:00
lang sortie de la fabrique + ajout champ autorisations 2020-02-10 11:37:27 +01:00
prive les png de la fabriques sont faux, on ajoute le champ autorisations dans spip_auteurs 2020-02-10 11:51:14 +01:00
associer_aut_modele.html amelioration visuelle + recup id_aut_modele dans le formualire 2020-02-11 18:43:16 +01:00
auted_administrations.php on n'utilise plus le champ pgp = boss mais on ajoute un champ boss => oui 2020-02-11 17:13:48 +01:00
auted_autorisations.php Ménage dans les autorisations, on utilise en plus le champ boss et on ajoute l'autorisation boss 2020-02-11 17:14:29 +01:00
auted_fonctions.php sortie de la fabrique + ajout champ autorisations 2020-02-10 11:37:27 +01:00
auted_options.php sortie de la fabrique + ajout champ autorisations 2020-02-10 11:37:27 +01:00
auted_pipelines.php on remplace fa => png 2020-02-10 12:43:31 +01:00
paquet.xml up de y pour finaliser ces gros changements 2020-02-11 22:01:10 +01:00
README.md Finalisation de la doc 2020-02-11 21:54:43 +01:00

Autorisations étendues

Plugins pour développeur qui permet d'étendre les autorisations de SPIP. Il est compatible avec le plugin chosen

Configuration

  1. Le plugin 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']
	]
]);
  1. 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;
}

Formulaire de gestion des autorisations

  1. Appeler le formulaire d'édition des autorisations, dans une page de votre choix. ex :
[(#AUTORISER{modifier,autmodele}|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>

formulaire_autorisation

  1. Si un auteur un dans son champ boss = oui => il aura tous les droits (un logo s'affiche devant son nom) : ex Emilie
  2. Devant le nom d'un auteur, une petite icone verte (modèle) permet de sélectionner un modèle d'autorisation.
  3. 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).
  4. Ces autorisations sont stockées dans un json dans un 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'autorisation

On peut créer des modèles d'autorisation

formulaire_modeles_autorisations

Utilisation des autorisations

  1. Dans le fichier prefix_autorisations.php ajouter en haut du fichier :
include_spip('inc/tester_autorisation');
  1. 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);
}
  1. 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
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

tester_autorisation($faire, $type, $qui, false);