Plugins pour développeur qui permet d'étendre les autorisations de SPIP.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
tofulm 296eb9b75a fix: evite warning si constante pas définie à l'installation 4 weeks ago
action ajout de la suppression d'un modele d'autorisation 3 years ago
base P.O.C d'un plugin permettant d'étendre les autorisations de SPIP, la doc est dans le README.md 3 years ago
content on rend compatible avec la nouvelle modalbox 2 years ago
css utilisation systématique de |balise_svg pour l'affichage des icônes et remise au normes SPIP des SVG 1 year ago
doc P.O.C d'un plugin permettant d'étendre les autorisations de SPIP, la doc est dans le README.md 3 years ago
formulaires utilisation systématique de |balise_svg pour l'affichage des icônes et remise au normes SPIP des SVG 1 year ago
img utilisation systématique de |balise_svg pour l'affichage des icônes et remise au normes SPIP des SVG 1 year ago
inc compatibilité PHP 8 1 year ago
inclure on laisse le parent mettre sa classe container de son choix 2 years ago
lang ajout d'un menu dans Configuration 3 years ago
prive [ui] nouveau logo: on réserve la clé pour les plugins d'authentifacation/login. on prend donc pour autorité/autorisation le picto illuminati (cf autorité) et pour étendu les coins (cf auteurs_partout) 1 year ago
README.md compatibilité PHP 8 1 year ago
auted_administrations.php select2 passe en necessite 2 years ago
auted_autorisations.php compat PHP 8 1 year ago
auted_options.php fix: evite warning si constante pas définie à l'installation 4 weeks ago
auted_pipelines.php Adaptation au fix 4633 du core, qui supprime le sql_quote() sur la date du pipeline optimiser_base_disparus. Cf spip/spip#105 2 years ago
paquet.xml compat PHP 8 1 year ago

README.md

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 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

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, $id, $qui);
}
function autoriser_guide_modifier_dist($faire, $type, $id, $qui, $opt) {
	return tester_autorisation($faire, $type, $id, $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", $id, $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 boss=oui, de l'auteur qui demande l'autorisation
function prefixe_super_autorisation($qui){
	if ($qui['boss'] === 'oui') {
		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, $id, $qui, false);