Commit c87496e8 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Privilèges associés aux compléments d'individus

parent 83ec0edc
Loading
Loading
Loading
Loading
+59 −0
Changes for doc/release-notes/v4.0.4.md: 59 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ git fetch --tags && git checkout --force 4.0.4 && bash ./install.sh

## 2. Dans la base de données

- Creation de la table contenant les compléments d'individu : email, établissement, unité de recherche 

```SQL
create table individu_compl
(
@@ -32,3 +34,60 @@ create table individu_compl
);
create unique index individu_compl_id_uindex on individu_compl (id);
```

- Ajout des privilèges 
```SQL
insert into categorie_privilege (code, libelle, ordre) values ('individu', 'Gestion des individus', 500);
INSERT INTO privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'individucompl_index',       'Accéder à l''index des compléments d''individu', 10 UNION
    SELECT 'individucompl_afficher',    'Afficher un complément d''individu', 20 UNION
    SELECT 'individucompl_modifier',    'Modifier un complément d''individu', 30 UNION
    SELECT 'individucompl_supprimer',   'Suppression un complément d''individu', 40
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN categorie_privilege cp ON cp.CODE = 'individu';
```

- Accord les privilèges : Admin, Mdd, doctorant, directeur, co-directeurs

```SQL
INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
  select 'individu'::text, 'individucompl_index'::text 
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
       join PROFIL on profil.ROLE_ID in ('ADMIN_TECH', 'BDD')
       join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
       join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
  select 'individu'::text, 'individucompl_afficher'::text UNION
  select 'individu'::text, 'individucompl_modifier'::text UNION
  select 'individu'::text, 'individucompl_supprimer'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
       join PROFIL on profil.ROLE_ID in ('ADMIN_TECH', 'BDD', 'DOCTORANT', 'D', 'K')
       join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
       join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
  ) ;

insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID)
select p2r.ROLE_ID, pp.PRIVILEGE_ID
from PROFIL_TO_ROLE p2r
       join profil pr on pr.id = p2r.PROFIL_ID
       join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = pr.id
where not exists (
        select * from role_privilege where role_id = p2r.role_id and privilege_id = pp.privilege_id
  )
;
``` 
 No newline at end of file
+29 −2
Changes for module/Application/config/others/individu-compl.config.php: 29 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ use Application\Form\IndividuCompl\IndividuComplForm;
use Application\Form\IndividuCompl\IndividuComplFormFactory;
use Application\Form\IndividuCompl\IndividuComplHydrator;
use Application\Form\IndividuCompl\IndividuComplHydratorFactory;
use Application\Provider\Privilege\IndividuPrivileges;
use Application\Service\IndividuCompl\IndividuComplService;
use Application\Service\IndividuCompl\IndividuComplServiceFactory;
use Laminas\Router\Http\Literal;
@@ -23,15 +24,41 @@ return [
                    'controller' => IndividuComplController::class,
                    'action'     => [
                        'index',
                    ],
                    'privilege' => [
                        IndividuPrivileges::INDIVIDU_COMPLMENT_INDEX,
                    ],
                ],
                [
                    'controller' => IndividuComplController::class,
                    'action'     => [
                        'afficher',
                    ],
                    'privilege' => [
                        IndividuPrivileges::INDIVIDU_COMPLMENT_AFFICHER,
                    ],
                ],
                [
                    'controller' => IndividuComplController::class,
                    'action'     => [
                        'gerer',
                        'ajouter',
                        'modifier',
                        'historiser',
                        'restaurer',
                        'restaurer'
                    ],
                    'privilege' => [
                        IndividuPrivileges::INDIVIDU_COMPLMENT_AFFICHER,
                    ],
                ],
                [
                    'controller' => IndividuComplController::class,
                    'action'     => [
                        'detruire',
                    ],
                    'role' => [],
                    'privilege' => [
                        IndividuPrivileges::INDIVIDU_COMPLMENT_SUPPRIMER,
                    ],
                ],
            ],
        ],
+14 −0
Changes for module/Application/src/Application/Provider/Privilege/IndividuPrivileges.php: 14 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Provider\Privilege;

use UnicaenAuth\Provider\Privilege\Privileges;

class IndividuPrivileges extends Privileges
{
    /** Gestion des complements d'individus */
    const INDIVIDU_COMPLMENT_INDEX          = 'individu-individucompl_index';
    const INDIVIDU_COMPLMENT_AFFICHER       = 'individu-individucompl_afficher';
    const INDIVIDU_COMPLMENT_MODIFIER       = 'individu-individucompl_modifier';
    const INDIVIDU_COMPLMENT_SUPPRIMER      = 'individu-individucompl_supprimer';
}
 No newline at end of file
+9 −6
Changes for module/Application/view/application/individu-compl/index.phtml: 9 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -5,13 +5,16 @@
 * @var array $complements
 */

use Application\Entity\Db\IndividuCompl;$this->headTitle("Liste des compléments d'individu");
use Application\Entity\Db\IndividuCompl;
use Application\Provider\Privilege\IndividuPrivileges;

$canAfficher = true;
$canAjouter = true;
$canModifier = true;
$canHistoriser = true;
$canDetruire = true;
$this->headTitle("Liste des compléments d'individu");

$canAfficher        = $this->isAllowed(IndividuPrivileges::getResourceId(IndividuPrivileges::INDIVIDU_COMPLMENT_AFFICHER));
$canAjouter         = $this->isAllowed(IndividuPrivileges::getResourceId(IndividuPrivileges::INDIVIDU_COMPLMENT_MODIFIER));
$canModifier        = $canAjouter;
$canHistoriser      = $canAjouter;
$canDetruire        = $this->isAllowed(IndividuPrivileges::getResourceId(IndividuPrivileges::INDIVIDU_COMPLMENT_SUPPRIMER));;

?>