Commit 207c9f51 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

ajout des filtres sur la page d'accueil du module et ajout d'un lien vers Admission dans le menu

parent b58e3e04
Loading
Loading
Loading
Loading
+0 −2
Changes for config/autoload/global.php: 0 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -910,8 +910,6 @@ const CONFIG_SYNCHROS = [
            'source_code_column' => 'source_code',
            'id_strategy' => 'SEQUENCE',
            'id_sequence' => null,
            'undelete_enabled_column' => 'synchro_undelete_enabled', // pour ne pas que les substitués soient déhistorisés
            'update_on_deleted_enabled_column' => 'synchro_update_on_deleted_enabled', // pour activer la màj des substitués (historisés)
        ],
    ],
    ////////////////////////////////////////////// INDIVIDU //////////////////////////////////////////////
+25 −2
Changes for module/Admission/Sql/admission.sql: 25 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -1095,8 +1095,31 @@ from data
                                           'GEST_ED',
                                           'RESP_UR',
                                           'RESP_ED',
                                           'D',
                                           'K'
                                           'D', -- Directeur
                                           'K', -- Co-directeur
                                           'BDD' -- Maison du Doctorat
    )
         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);

-- ajout des privilèges communs au profil GEST_ED, RESP_UR, RESP_ED, D, K
INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (select 'admission', 'admission-afficher-son-dossier-admission'
                           union
                           select 'admission', 'admission-lister-mes-dossiers-admission'
                           union
                           select 'admission', 'admission-telecharger-son-document'
                           union
                           select 'admission', 'admission-acceder-commentaires'
                           union
                           select 'admission', 'admission-convention-formation-generer'
                           union
                           select 'admission', 'admission-afficher-son-dossier-admission-dans-liste')
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in (
    'BDD' -- Maison du Doctorat
    )
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
+101 −4
Changes for module/Admission/config/module.config.php: 101 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@ use Admission\Config\ModuleConfig;
use Admission\Config\ModuleConfigFactory;
use Admission\Controller\AdmissionController;
use Admission\Controller\AdmissionControllerFactory;
use Admission\Controller\AdmissionRechercheController;
use Admission\Controller\AdmissionRechercheControllerFactory;
use Admission\Controller\Validation\AdmissionValidationController;
use Admission\Controller\Validation\AdmissionValidationControllerFactory;
use Admission\Event\AdmissionEventListener;
@@ -48,6 +50,8 @@ use Admission\Hydrator\Validation\AdmissionValidationHydratorFactory;
use Admission\Hydrator\Verification\VerificationHydrator;
use Admission\Hydrator\Verification\VerificationHydratorFactory;
use Admission\Provider\Privilege\AdmissionPrivileges;
use Admission\Service\Admission\AdmissionRechercheService;
use Admission\Service\Admission\AdmissionRechercheServiceFactory;
use Admission\Service\Admission\AdmissionService;
use Admission\Service\Admission\AdmissionServiceFactory;
use Admission\Service\ConventionFormationDoctorale\ConventionFormationDoctoraleService;
@@ -68,8 +72,10 @@ use Admission\Service\Url\UrlService;
use Admission\Service\Url\UrlServiceFactory;
use Admission\Service\Verification\VerificationService;
use Admission\Service\Verification\VerificationServiceFactory;
use Application\Navigation\ApplicationNavigationFactory;
use Doctrine\ORM\Mapping\Driver\XmlDriver;
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenAuth\Guard\PrivilegeController;
use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider;
@@ -201,19 +207,32 @@ return array(
                    ],
                    'assertion' => AdmissionAssertion::class,
                ],
                [
                    'controller' => AdmissionRechercheController::class,
                    'action' => [
                        'index',
                        'filters',
                    ],
                    'privileges' => [
                        AdmissionPrivileges::ADMISSION_AFFICHER_SON_DOSSIER_ADMISSION,
                        AdmissionPrivileges::ADMISSION_LISTER_MES_DOSSIERS_ADMISSION,
                        AdmissionPrivileges::ADMISSION_INITIALISER_ADMISSION
                    ],
                    'assertion' => AdmissionAssertion::class,
                ],
            ]
        ],
    ],
    'router' => [
        'routes' => [
            'admission' => [
                'type' => Segment::class,
                'type' => Literal::class,
                'may_terminate' => true,
                'options' => [
                    'route' => '/admission',
                    'defaults' => [
                        'action' => 'index',
                        'controller' => AdmissionController::class,
                        'controller' => AdmissionRechercheController::class,
                    ],
                ],
                'child_routes' => [
@@ -222,6 +241,10 @@ return array(
                        'options' => [
                            'route' => '/:action/:individu',
                            'constraints' => [
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'admission' => '[0-9]*'
                            ],
                            'defaults' => [
                                /**
                                 * @see AdmissionController::etudiantAction()
                                 * @see AdmissionController::inscriptionAction()
@@ -230,8 +253,7 @@ return array(
                                 * @see AdmissionController::enregistrerAction()
                                 * @see AdmissionController::supprimerAction()
                                 */
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'admission' => '[0-9]*'
                                'controller' => AdmissionController::class,
                            ],
                        ],
                    ],
@@ -297,14 +319,88 @@ return array(
                            ],
                        ],
                    ],
                    'recherche' => [
                        'type' => 'Literal',
                        'options' => [
                            'route' => '/recherche',
                            'defaults' => [
                                'controller' => AdmissionRechercheController::class,
                                'action' => 'index',
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'filters' => [
                                'type' => 'Literal',
                                'options' => [
                                    'route' => '/filters',
                                    'defaults' => [
                                        'action' => 'filters',
                                        'controller' => AdmissionRechercheController::class,
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
    'navigation' => [
        'default' => [
            // DEPTH = 0
            'home' => [
                'pages' => [
                    /**
                     * Page pour le Candidat.
                     */
                    // DEPTH = 1
                    ApplicationNavigationFactory::MON_ADMISSION_PAGE_ID => [
                        'order' => -200,
                        'label' => 'Admission',
                        'route' => 'admission',
                        'resource' => PrivilegeController::getResourceId(AdmissionRechercheController::class, 'index'),
                        'pages' => [
                        ],
                    ],

                    /**
                     * Page pour Dir, Codir.
                     */
                    ApplicationNavigationFactory::MES_ADMISSIONS_PAGE_ID => [
                        'order' => -200,
                        'label' => 'Mes admissions',
                        'route' => 'admission',
                        'resource' => PrivilegeController::getResourceId(AdmissionRechercheController::class, 'index'),
                        'pages' => [
                        ],
                    ],

                    /**
                     * Page pour Gest/Resp ED, Gest/Resp UR, Maison du Doctorat.
                     */
                    // DEPTH = 1
                    ApplicationNavigationFactory::NOS_THESES_PAGE_ID => [
                        'pages' => [
                            // DEPTH = 2
                            'ADMISSIONS' => [
                                'label' => '(Rapports activité Structure)',
                                'route' => 'admission',
                                'resource' => PrivilegeController::getResourceId(AdmissionRechercheController::class, 'index'),
                                'privilege' => [
                                    AdmissionPrivileges::ADMISSION_LISTER_MES_DOSSIERS_ADMISSION,
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'factories' => [
            AdmissionController::class => AdmissionControllerFactory::class,
            AdmissionRechercheController::class => AdmissionRechercheControllerFactory::class
        ],
    ],

@@ -341,6 +437,7 @@ return array(
            TypeValidationService::class => TypeValidationServiceFactory::class,
            DocumentService::class => DocumentServiceFactory::class,
            VerificationService::class => VerificationServiceFactory::class,
            AdmissionRechercheService::class => AdmissionRechercheServiceFactory::class,

            AdmissionEventListener::class => AdmissionEventListenerFactory::class,

+4 −4
Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 4 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -144,8 +144,6 @@ class AdmissionAssertion extends AbstractAssertion implements UserContextService
            switch ($privilege) {
                case AdmissionPrivileges::ADMISSION_MODIFIER_TOUS_DOSSIERS_ADMISSION:
                case AdmissionPrivileges::ADMISSION_MODIFIER_SON_DOSSIER_ADMISSION:
                case AdmissionPrivileges::ADMISSION_SUPPRIMER_TOUS_DOSSIERS_ADMISSION:
                case AdmissionPrivileges::ADMISSION_SUPPRIMER_SON_DOSSIER_ADMISSION:
                case AdmissionPrivileges::ADMISSION_TELEVERSER_TOUT_DOCUMENT:
                case AdmissionPrivileges::ADMISSION_TELEVERSER_SON_DOCUMENT:
                case AdmissionPrivileges::ADMISSION_SUPPRIMER_TOUT_DOCUMENT:
@@ -224,6 +222,7 @@ class AdmissionAssertion extends AbstractAssertion implements UserContextService
        $roleUniteRecherche = $this->userContextService->getSelectedRoleUniteRecherche();
        $roleDirecteurThese = $this->userContextService->getSelectedRoleDirecteurThese();
        $roleCoDirecteurThese = $this->userContextService->getSelectedRoleCodirecteurThese();
        $roleMaisonDoctorat = $this->userContextService->getSelectedRoleBDD();

        if ($role->getRoleId() === Role::ROLE_ID_USER ||
            $role->getRoleId() === Role::ROLE_ID_ADMISSION_DIRECTEUR_THESE ||
@@ -233,7 +232,8 @@ class AdmissionAssertion extends AbstractAssertion implements UserContextService
            $roleEcoleDoctorale ||
            $roleUniteRecherche ||
            $roleDirecteurThese ||
            $roleCoDirecteurThese) {
            $roleCoDirecteurThese ||
            $roleMaisonDoctorat) {
            return;
        }else{
            throw new FailedAssertionException("Vous ne pouvez pas accéder au module admission");
@@ -321,7 +321,7 @@ class AdmissionAssertion extends AbstractAssertion implements UserContextService
            } else {
                throw new FailedAssertionException($message);
            }
        }else if($role->getCode() !== Role::CODE_ADMIN_TECH){
        }else if($role->getCode() !== Role::CODE_ADMIN_TECH && $role->getCode() !== Role::CODE_BDD){
            throw new FailedAssertionException("Vous ne pouvez pas accéder au module admission");
        }
    }
+2 −0
Changes for module/Admission/src/Admission/Controller/AdmissionController.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -81,6 +81,8 @@ class AdmissionController extends AdmissionAbstractController {

    public function indexAction(): ViewModel|Response
    {
        return $this->redirect()->toRoute('admission/recherche', [], [], true);

        $request = $this->getRequest();
        if($request->isPost()){
            $individu = $request->getPost('individuId');
Loading