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

nouveau privileges

parent bcd7de39
Loading
Loading
Loading
Loading
+11 −0
Changes for documentation/release/3.2.3.md: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@ Version 3.2.3 (XX/XX/2023)
- [Fix] : ajout d'une garde pour les campagnes null sur les pages des structures (bug AMU)
- Ajout de paramètre pour le filtrage des agents de la page structure/agents (temoins d'affectations et temoins de statuts)
- Exploitation de la clef de config [unicaen-app][app_infos][contact][mail] 
- Ajout de privilege pour l'affichage de l'onglet 'Missions spécifique' de la structure
- Modification des privilèges de convocation et gestion de la convocation

Modification en BD
---
@@ -54,6 +56,15 @@ WITH d(code, lib, ordre) AS (
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN unicaen_privilege_categorie cp ON cp.CODE = 'missionspecifiqueaffectation';

INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'entretienpro_convoquer', 'Convoquer ou modifier une convocation', 5
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN unicaen_privilege_categorie cp ON cp.CODE = 'entretienpro';
delete from unicaen_privilege_privilege where code='entretienpro_ajouter';
```

Evolution des librairies 
+2 −2
Changes for module/EntretienProfessionnel/config/merged/entretien.config.php: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ return [
                        'privileges' => [
                            EntretienproPrivileges::ENTRETIENPRO_AFFICHER,
                            EntretienproPrivileges::ENTRETIENPRO_EXPORTER,
                            EntretienproPrivileges::ENTRETIENPRO_AJOUTER,
                            EntretienproPrivileges::ENTRETIENPRO_CONVOQUER,
                            EntretienproPrivileges::ENTRETIENPRO_MODIFIER,
                            EntretienproPrivileges::ENTRETIENPRO_HISTORISER,
                            EntretienproPrivileges::ENTRETIENPRO_VALIDER_AGENT,
@@ -108,7 +108,7 @@ return [
                        'creer',
                        'modifier',
                    ],
                    'privileges' => EntretienproPrivileges::ENTRETIENPRO_AJOUTER,
                    'privileges' => EntretienproPrivileges::ENTRETIENPRO_CONVOQUER,
                    'assertion' => EntretienProfessionnelAssertion::class,
                ],
                [
+14 −1
Changes for module/EntretienProfessionnel/src/EntretienProfessionnel/Assertion/EntretienProfessionnelAssertion.php: 14 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ use Laminas\Permissions\Acl\Resource\ResourceInterface;
use Structure\Provider\Role\RoleProvider;
use Structure\Service\Structure\StructureServiceAwareTrait;
use UnicaenPrivilege\Assertion\AbstractAssertion;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieServiceAwareTrait;
use UnicaenPrivilege\Service\Privilege\PrivilegeServiceAwareTrait;
use UnicaenUtilisateur\Entity\Db\Role;
use UnicaenUtilisateur\Entity\Db\RoleInterface;
use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
@@ -28,6 +30,8 @@ class EntretienProfessionnelAssertion extends AbstractAssertion {
    use EntretienProfessionnelServiceAwareTrait;
    use UserServiceAwareTrait;
    use StructureServiceAwareTrait;
    use PrivilegeServiceAwareTrait;
    use PrivilegeCategorieServiceAwareTrait;

    private ?Agent $lastAgent = null;
    private ?EntretienProfessionnel $lastEntretien = null;
@@ -80,6 +84,15 @@ class EntretienProfessionnelAssertion extends AbstractAssertion {
        $user = $this->getUserService()->getConnectedUser();
        $agent = $this->getAgentService()->getAgentByUser($user);

        //todo QUESTION : pourquoi devoir faire cela c'est pas normal !!!
        [$catCode, $priCode] = explode('-', $privilege);
        $categorie = $this->getPrivilegeCategorieService()->findByCode($catCode);
        $pprivilege = $this->getPrivilegeService()->findByCode($priCode, $categorie->getId());
        if ($pprivilege === null) return false;
        $listings = $pprivilege->getRoles()->toArray();
        if (!in_array($role, $listings)) return false;
        //todo FIN BIZARERIE ...


        $isAgent = ($agent === $entity->getAgent());

@@ -110,7 +123,7 @@ class EntretienProfessionnelAssertion extends AbstractAssertion {
                        return false;
                }
            case EntretienproPrivileges::ENTRETIENPRO_AFFICHER :
            case EntretienproPrivileges::ENTRETIENPRO_AJOUTER :
            case EntretienproPrivileges::ENTRETIENPRO_CONVOQUER :
            case EntretienproPrivileges::ENTRETIENPRO_MODIFIER :
                switch ($role->getRoleId()) {
                    case AppRoleProvider::ADMIN_FONC:
+10 −0
Changes for module/EntretienProfessionnel/src/EntretienProfessionnel/Assertion/EntretienProfessionnelAssertionFactory.php: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@ use Laminas\Mvc\Application;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Structure\Service\Structure\StructureService;
use UnicaenPrivilege\Service\Privilege\PrivilegeCategorieService;
use UnicaenPrivilege\Service\Privilege\PrivilegeService;
use UnicaenUtilisateur\Service\User\UserService;

class EntretienProfessionnelAssertionFactory {
@@ -30,6 +32,8 @@ class EntretienProfessionnelAssertionFactory {
         * @var EntretienProfessionnelService $entretienProfessionnelService
         * @var StructureService $structureService
         * @var UserService $userService
         * @var PrivilegeService $privilegeService
         * @var PrivilegeCategorieService $categorieService
         */
        $agentService = $container->get(AgentService::class);
        $agentAutoriteService = $container->get(AgentAutoriteService::class);
@@ -38,6 +42,9 @@ class EntretienProfessionnelAssertionFactory {
        $structureService = $container->get(StructureService::class);
        $userService = $container->get(UserService::class);

        $privilegeService = $container->get(PrivilegeService::class);
        $categorieService = $container->get(PrivilegeCategorieService::class);

        /** @var EntretienProfessionnelAssertion $assertion */
        $assertion = new EntretienProfessionnelAssertion();
        $assertion->setAgentService($agentService);
@@ -47,6 +54,9 @@ class EntretienProfessionnelAssertionFactory {
        $assertion->setStructureService($structureService);
        $assertion->setUserService($userService);

        $assertion->setPrivilegeService($privilegeService);
        $assertion->setPrivilegeCategorieService($categorieService);

        /* @var $application Application */
        $application = $container->get('Application');
        $mvcEvent    = $application->getMvcEvent();
+2 −1
Changes for module/EntretienProfessionnel/src/EntretienProfessionnel/Provider/Privilege/EntretienproPrivileges.php: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -10,7 +10,8 @@ class EntretienproPrivileges extends Privileges
    const ENTRETIENPRO_MESENTRETIENS = 'entretienpro-entretienpro_mesentretiens';
    const ENTRETIENPRO_AFFICHER     = 'entretienpro-entretienpro_afficher';
    const ENTRETIENPRO_EXPORTER     = 'entretienpro-entretienpro_exporter';
    const ENTRETIENPRO_AJOUTER      = 'entretienpro-entretienpro_ajouter';

    const ENTRETIENPRO_CONVOQUER    = 'entretienpro-entretienpro_convoquer';
    const ENTRETIENPRO_MODIFIER     = 'entretienpro-entretienpro_modifier';
    const ENTRETIENPRO_HISTORISER   = 'entretienpro-entretienpro_historiser';
    const ENTRETIENPRO_DETRUIRE     = 'entretienpro-entretienpro_detruire';
Loading