Commit 191cd743 authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Nouveau privilège pour permettre de saisir sur référentiel sur n'importe quelle composante

parent e524faab
......@@ -113,12 +113,13 @@ return [
'referentiel' => [
'libelle' => 'Référentiel',
'privileges' => [
'visualisation' => 'Visualisation',
'edition' => 'Édition',
'validation' => 'Validation',
'admin-edition' => 'Administration - Édition',
'devalidation' => 'Dévalidation',
'admin-visualisation' => 'Administration - Visualisation',
'visualisation' => 'Visualisation',
'edition' => 'Édition',
'validation' => 'Validation',
'admin-edition' => 'Administration - Édition',
'devalidation' => 'Dévalidation',
'admin-visualisation' => 'Administration - Visualisation',
'saisie-toutes-composantes' => 'Saisie sans contrainte de composante',
],
],
......
......@@ -34,7 +34,6 @@ class ServiceAssertion extends AbstractAssertion
use TypeVolumeHoraireServiceAwareTrait;
/* ---- Routage général ---- */
public function __invoke(array $page) // gestion des visibilités de menus
{
......@@ -284,23 +283,23 @@ class ServiceAssertion extends AbstractAssertion
protected function assertServiceReferentielEdition(Role $role, ServiceReferentiel $serviceReferentiel)
{
$structure = $role->getStructure();
$asserts = [];
if ($structure) {
$structureAffectation = $serviceReferentiel->getIntervenant() ? $serviceReferentiel->getIntervenant()->getStructure() : null;
$structureEnseignement = $serviceReferentiel->getStructure();
if ($structureAffectation && $structureEnseignement) {
// cas d'un intervenant d'une autre structure prenant un enseignement dans une autre structure
$asserts[] = $structure == $structureAffectation || $structure == $structureEnseignement; // le service doit avoir un lien avec la structure
} elseif ($structureAffectation && !$structureEnseignement) {
// cas d'un intervenant prenant des enseignements à l'extérieur
$asserts[] = $structure == $structureAffectation;
} elseif (!$structureAffectation && $structureEnseignement) {
// cas d'un intervenant extérieur prenant des enseignements de la composante
$asserts[] = $structure == $structureEnseignement;
if (!$role->hasPrivilege(Privileges::REFERENTIEL_SAISIE_TOUTES_COMPOSANTES)) {
// Si on n'a pas le privilège pour pouvoir du référentiel dans toutes les composantes sans restriction
if ($structure = $role->getStructure()) {
$structureAffectation = $serviceReferentiel->getIntervenant() ? $serviceReferentiel->getIntervenant()->getStructure() : null;
$structureEnseignement = $serviceReferentiel->getStructure();
if ($structureAffectation && $structureEnseignement) {
// cas d'un intervenant d'une autre structure prenant un enseignement dans une autre structure
$asserts[] = $structure == $structureAffectation || $structure == $structureEnseignement; // le service doit avoir un lien avec la structure
} elseif ($structureAffectation && !$structureEnseignement) {
// cas d'un intervenant prenant des enseignements à l'extérieur
$asserts[] = $structure == $structureAffectation;
} elseif (!$structureAffectation && $structureEnseignement) {
// cas d'un intervenant extérieur prenant des enseignements de la composante
$asserts[] = $structure == $structureEnseignement;
}
}
}
......
......@@ -184,5 +184,6 @@ class Privileges extends \UnicaenAuth\Provider\Privilege\Privileges
const UNICAEN_TBL_UPDATE_ACTUPROC = 'unicaen-tbl-update-actuproc';
const WORKFLOW_DEPENDANCES_EDITION = 'workflow-dependances-edition';
const WORKFLOW_DEPENDANCES_VISUALISATION = 'workflow-dependances-visualisation';
const REFERENTIEL_SAISIE_TOUTES_COMPOSANTES = 'referentiel-saisie-toutes-composantes';
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment