Commit 32cc5876 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Ajout d'un privilège 'Enseignement - Edition en masse' pour pouvoir...

Ajout d'un privilège 'Enseignement - Edition en masse' pour pouvoir différencier l'affichage du bouton 'Saisi d'un nouvel enseignement' dans la partie gestion service, de la partie feuille de route de l'intervenant (#36390)
parent 979d4e2d
Loading
Loading
Loading
Loading
+104 −0
Original line number Diff line number Diff line
<?php


use BddAdmin\Bdd;

class MigrationPrivilegesServiceEditionMasse extends AbstractMigration
{
    protected $contexte = self::CONTEXTE_POST;



    public function description(): string
    {
        return "Ajout du privileges edition des services en masse au niveau des rôles nécessaires";
    }



    public function utile(): bool
    {
        //test si le privilege edition-masse existe
        $bdd = $this->manager->getBdd();
        $sql = "SELECT 
                  p.id 
                FROM privilege p
                JOIN categorie_privilege cp ON cp.id = p.categorie_id AND cp.code = 'enseignement'
                WHERE p.code = 'edition-masse'";

        $privilege = $bdd->select($sql);

        if (!empty($privilege)) {
            return false;
        }

        return true;
    }



    public function action(string $contexte)
    {
        if ($contexte == self::CONTEXTE_PRE) {
            $this->before();
        } else {
            $this->after();
        }
    }



    protected function before()
    {

    }



    protected function after()
    {

        $oa      = $this->manager->getOseAdmin();
        $bdd     = $this->manager->getBdd();
        $console = $this->manager->getOseAdmin()->getConsole();


        $sqlPrivilegeEditionMasse = "
            SELECT
                p.id   id,
                p.code code
                
            FROM
                privilege p 
            JOIN 
                categorie_privilege cp ON p.categorie_id = cp.id
            WHERE
                cp.code = 'enseignement'
            AND 
                p.code = 'edition-masse'
        ";

        $privilege   = $bdd->select($sqlPrivilegeEditionMasse, [], ['fetch' => Bdd::FETCH_ONE]);
        $privilegeId = $privilege['ID'];


        if (!empty($privilegeId)) {

            $sql = "
                INSERT INTO role_privilege rp (role_id, privilege_id)
                SELECT r.id, $privilegeId FROM  role r 
	            JOIN role_privilege rp ON rp.role_id = r.id AND rp.privilege_id = (
		            SELECT p.id FROM privilege p
		            JOIN categorie_privilege cp ON cp.id = p.categorie_id AND cp.code = 'enseignement'
		            WHERE p.code = 'edition') 
            ";

            $bdd->exec($sql);
            $console->println("Privilege 'Edition en masse' ajouté sur les rôles nécessaires", CONSOLE::COLOR_GREEN);
        } else {
            $console->println("Privilege 'Edition en masse' non trouvé en base", CONSOLE::COLOR_GREEN);
        }
        //Clear cache car on a modifié les privileges donc les entity en cache ne doivent plus servir
        $oa->run('clear-cache');
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ return [
        'privileges' => [
            'visualisation'                          => 'Visualisation',
            'edition'                                => 'Édition',
            'edition-masse'                          => 'Édition en masse',
            'exterieur'                              => 'Saisie de service dans une autre autre université',
            'validation'                             => 'Validation',
            'devalidation'                           => 'Dévalidation',
+1 −1
Original line number Diff line number Diff line
@@ -213,7 +213,7 @@ class ServiceController extends AbstractController
        $intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervernant');
        /* @var $intervenant Intervenant */

        $canAddService = $this->isAllowed(Privileges::getResourceId(Privileges::ENSEIGNEMENT_EDITION));
        $canAddService = $this->isAllowed(Privileges::getResourceId(Privileges::ENSEIGNEMENT_EDITION_MASSE));
        $annee         = $this->getServiceContext()->getAnnee();
        $action        = $this->getRequest()->getQuery('action', null);
        $tri           = null;
+1 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ class Privileges extends \UnicaenAuth\Provider\Privilege\Privileges
    const DROIT_AFFECTATION_VISUALISATION                     = 'droit-affectation-visualisation';
    const ENSEIGNEMENT_DEVALIDATION                           = 'enseignement-devalidation';
    const ENSEIGNEMENT_EDITION                                = 'enseignement-edition';
    const ENSEIGNEMENT_EDITION_MASSE                          = 'enseignement-edition-masse';
    const ENSEIGNEMENT_EXPORT_CSV                             = 'enseignement-export-csv';
    const ENSEIGNEMENT_EXPORT_PDF                             = 'enseignement-export-pdf';
    const ENSEIGNEMENT_EXTERIEUR                              = 'enseignement-exterieur';