Loading doc/release-notes/8.6.0/01_admission.sql +85 −0 Changes for doc/release-notes/8.6.0/01_admission.sql: 85 added lines, 0 removed lines. Original line number Diff line number Diff line -- Changement de la taille de la colonne ALTER TABLE admission_etudiant ALTER COLUMN adresse_cp_ville_etrangere TYPE VARCHAR(38) -- Renommage de la validation UPDATE admission_type_validation SET libelle = 'Validation par les gestionnaires' WHERE code = 'VALIDATION_GESTIONNAIRE'; -- Macro Renderer INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name) VALUES ('Url#AccueilAdmission', '<p>Permet de récupérer l''url de l''accueil du module admission</p>', 'Url', 'getAccueilAdmission'); -- ajout de la colonne pour le financement complémentaire alter table admission_financement ADD column if not exists financement_compl_id bigint REFERENCES origine_financement (id); -- déplacement du numero_candidature de admission_etudiant vers admission_admission ALTER TABLE admission_admission ADD COLUMN numero_candidature VARCHAR(10); UPDATE admission_admission aa SET numero_candidature = ae.numero_candidat FROM admission_etudiant ae WHERE aa.id = ae.admission_id; ALTER TABLE admission_etudiant DROP COLUMN numero_candidat; -- Nouveau nature de fichier pour la charte du doctorat signée INSERT INTO nature_fichier (id, code, libelle) VALUES (220, 'ADMISSION_CHARTE_DOCTORAT_SIGNEE', 'Charte du doctorat signée') ON CONFLICT DO NOTHING; --Création d'une nouvelle table utile pour l'export vers pégase create table if not exists admission_transmission ( id bigserial primary key, admission_id bigint references admission_admission, code_voeu varchar(25), code_periode varchar(25), histo_createur_id bigint not null references utilisateur, histo_creation timestamp default ('now'::text)::timestamp without time zone not null, histo_modificateur_id bigint references utilisateur, histo_modification timestamp, histo_destructeur_id bigint references utilisateur, histo_destruction timestamp ); --Ajout d'un nouveau privilège concernant l'ajout de données nécessaires pour l'export vers Pégase (par exemple) insert into PRIVILEGE(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE) with d(ordre, code, lib) as (select 30, 'admission-ajouter-donnees-export', 'Ajouter des données nécessaires à l''export vers Pégase (par exemple)') select nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre from d join CATEGORIE_PRIVILEGE cp on cp.CODE = 'admission' WHERE NOT EXISTS (SELECT 1 FROM PRIVILEGE p WHERE p.CODE = d.code); -- ajout des privilèges au profil GEST_ED et ADMIN_TECH INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID) with data(categ, priv) as (select 'admission', 'admission-ajouter-donnees-export') select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID from data join PROFIL on profil.ROLE_ID in ( 'GEST_ED', 'ADMIN_TECH') 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 module/Admission/config/module.config.php +2 −2 Changes for module/Admission/config/module.config.php: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ use Admission\Service\Document\DocumentServiceFactory; use Admission\Service\Etudiant\EtudiantService; use Admission\Service\Etudiant\EtudiantServiceFactory; use Admission\Service\Exporter\Admission\AdmissionExporter; use Admission\Service\Exporter\Admission\AdmissionExporterFactory; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterFactory; use Admission\Service\Financement\FinancementService; Loading @@ -66,7 +67,6 @@ use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; Loading Loading @@ -423,7 +423,7 @@ return array( UrlService::class => UrlServiceFactory::class, RecapitulatifExporter::class => RecapitulatifExporterFactory::class, AdmissionExporter::class => InvokableFactory::class, AdmissionExporter::class => AdmissionExporterFactory::class, ExtractionEmailRule::class => ExtractionEmailRuleFactory::class ], Loading module/Admission/config/others/transmission.config.php 0 → 100644 +85 −0 Changes for module/Admission/config/others/transmission.config.php: 85 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Admission; use Admission\Assertion\AdmissionAssertion; use Admission\Controller\Transmission\TransmissionController; use Admission\Controller\Transmission\TransmissionControllerFactory; use Admission\Form\Transmission\TransmissionForm; use Admission\Form\Transmission\TransmissionFormFactory; use Admission\Provider\Privilege\AdmissionPrivileges; use Admission\Service\Transmission\TransmissionService; use Admission\Service\Transmission\TransmissionServiceFactory; use Laminas\Router\Http\Segment; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; return array( 'bjyauthorize' => [ 'rule_providers' => [ PrivilegeRuleProvider::class => [ 'allow' => [ [ 'privileges' => [ AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT, ], 'resources' => ['Admission'], 'assertion' => AdmissionAssertion::class, ], ], ], ], 'guards' => [ PrivilegeController::class => [ [ 'controller' => TransmissionController::class, 'action' => [ 'ajouter-transmission', ], 'privileges' => [ AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT, ], 'assertion' => AdmissionAssertion::class, ], ] ], ], 'router' => [ 'routes' => [ 'admission' => [ 'child_routes' => [ 'ajouter-transmission' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/transmission/ajouter/:admission', 'defaults' => [ 'controller' => TransmissionController::class, 'action' => 'ajouter-transmission', /* @see TransmissionController::ajouterTransmissionAction() */ ], ], ], ] ] ] ], 'controllers' => [ 'factories' => [ TransmissionController::class => TransmissionControllerFactory::class, ], ], 'form_elements' => [ 'factories' => [ TransmissionForm::class => TransmissionFormFactory::class ], ], 'service_manager' => [ 'factories' => [ TransmissionService::class => TransmissionServiceFactory::class, ], ], ); module/Admission/src/Admission/Assertion/AdmissionAbstractAssertion.php +1 −1 Changes for module/Admission/src/Admission/Assertion/AdmissionAbstractAssertion.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ class AdmissionAbstractAssertion extends AbstractAssertion if (empty($admission)) { if (($routeMatch = $this->getRouteMatch()) && $id = $routeMatch->getParam('admission')) { $admission = $this->admissionService->getRepository()->findOneById($id); $admission = $this->admissionService->getRepository()->find($id); } } Loading module/Admission/src/Admission/Assertion/AdmissionAssertion.php +7 −0 Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ use Application\Entity\Db\Role; use Application\Service\UserContextServiceAwareInterface; use Application\Service\UserContextServiceAwareTrait; use Doctrine\Common\Collections\Collection; use Fichier\Entity\Db\NatureFichier; use Individu\Service\IndividuServiceAwareTrait; use Laminas\Permissions\Acl\Resource\ResourceInterface; use UnicaenApp\Service\MessageCollectorAwareInterface; Loading Loading @@ -83,6 +84,7 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte case 'notifier-dossier-complet': case 'generer-recapitulatif': case 'ajouter-convention-formation' : case 'ajouter-transmission' : if ($this->admission !== null) { $this->assertAppartenanceAdmission($this->admission); } Loading Loading @@ -175,6 +177,7 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte case AdmissionPrivileges::ADMISSION_TELECHARGER_SON_DOCUMENT: case AdmissionPrivileges::ADMISSION_VERIFIER: case AdmissionPrivileges::ADMISSION_NOTIFIER_DOSSIER_INCOMPLET: case AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT: $this->assertAppartenanceAdmission($this->admission); } Loading Loading @@ -266,6 +269,10 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte $admission->getEtat()->getCode() == (Admission::ETAT_EN_COURS_VALIDATION || Admission::ETAT_VALIDE || Admission::ETAT_REJETE), "Le dossier d'admission doit être en cours de validation / être validé / être rejeté" ); }elseif($codeNatureFichier === NatureFichier::CODE_ADMISSION_CHARTE_DOCTORAT_SIGNEE){ if(!($this->userContextService->getSelectedIdentityRole()->getRoleId() === Role::ROLE_ID_ADMISSION_CANDIDAT)){ throw new FailedAssertionException("Seul le candidat peut gérer ce document"); } }else{ $this->assertTrue( $admission->getEtat()->getCode() == Admission::ETAT_EN_COURS_SAISIE, Loading Loading
doc/release-notes/8.6.0/01_admission.sql +85 −0 Changes for doc/release-notes/8.6.0/01_admission.sql: 85 added lines, 0 removed lines. Original line number Diff line number Diff line -- Changement de la taille de la colonne ALTER TABLE admission_etudiant ALTER COLUMN adresse_cp_ville_etrangere TYPE VARCHAR(38) -- Renommage de la validation UPDATE admission_type_validation SET libelle = 'Validation par les gestionnaires' WHERE code = 'VALIDATION_GESTIONNAIRE'; -- Macro Renderer INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name) VALUES ('Url#AccueilAdmission', '<p>Permet de récupérer l''url de l''accueil du module admission</p>', 'Url', 'getAccueilAdmission'); -- ajout de la colonne pour le financement complémentaire alter table admission_financement ADD column if not exists financement_compl_id bigint REFERENCES origine_financement (id); -- déplacement du numero_candidature de admission_etudiant vers admission_admission ALTER TABLE admission_admission ADD COLUMN numero_candidature VARCHAR(10); UPDATE admission_admission aa SET numero_candidature = ae.numero_candidat FROM admission_etudiant ae WHERE aa.id = ae.admission_id; ALTER TABLE admission_etudiant DROP COLUMN numero_candidat; -- Nouveau nature de fichier pour la charte du doctorat signée INSERT INTO nature_fichier (id, code, libelle) VALUES (220, 'ADMISSION_CHARTE_DOCTORAT_SIGNEE', 'Charte du doctorat signée') ON CONFLICT DO NOTHING; --Création d'une nouvelle table utile pour l'export vers pégase create table if not exists admission_transmission ( id bigserial primary key, admission_id bigint references admission_admission, code_voeu varchar(25), code_periode varchar(25), histo_createur_id bigint not null references utilisateur, histo_creation timestamp default ('now'::text)::timestamp without time zone not null, histo_modificateur_id bigint references utilisateur, histo_modification timestamp, histo_destructeur_id bigint references utilisateur, histo_destruction timestamp ); --Ajout d'un nouveau privilège concernant l'ajout de données nécessaires pour l'export vers Pégase (par exemple) insert into PRIVILEGE(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE) with d(ordre, code, lib) as (select 30, 'admission-ajouter-donnees-export', 'Ajouter des données nécessaires à l''export vers Pégase (par exemple)') select nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre from d join CATEGORIE_PRIVILEGE cp on cp.CODE = 'admission' WHERE NOT EXISTS (SELECT 1 FROM PRIVILEGE p WHERE p.CODE = d.code); -- ajout des privilèges au profil GEST_ED et ADMIN_TECH INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID) with data(categ, priv) as (select 'admission', 'admission-ajouter-donnees-export') select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID from data join PROFIL on profil.ROLE_ID in ( 'GEST_ED', 'ADMIN_TECH') 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
module/Admission/config/module.config.php +2 −2 Changes for module/Admission/config/module.config.php: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ use Admission\Service\Document\DocumentServiceFactory; use Admission\Service\Etudiant\EtudiantService; use Admission\Service\Etudiant\EtudiantServiceFactory; use Admission\Service\Exporter\Admission\AdmissionExporter; use Admission\Service\Exporter\Admission\AdmissionExporterFactory; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterFactory; use Admission\Service\Financement\FinancementService; Loading @@ -66,7 +67,6 @@ use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; Loading Loading @@ -423,7 +423,7 @@ return array( UrlService::class => UrlServiceFactory::class, RecapitulatifExporter::class => RecapitulatifExporterFactory::class, AdmissionExporter::class => InvokableFactory::class, AdmissionExporter::class => AdmissionExporterFactory::class, ExtractionEmailRule::class => ExtractionEmailRuleFactory::class ], Loading
module/Admission/config/others/transmission.config.php 0 → 100644 +85 −0 Changes for module/Admission/config/others/transmission.config.php: 85 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Admission; use Admission\Assertion\AdmissionAssertion; use Admission\Controller\Transmission\TransmissionController; use Admission\Controller\Transmission\TransmissionControllerFactory; use Admission\Form\Transmission\TransmissionForm; use Admission\Form\Transmission\TransmissionFormFactory; use Admission\Provider\Privilege\AdmissionPrivileges; use Admission\Service\Transmission\TransmissionService; use Admission\Service\Transmission\TransmissionServiceFactory; use Laminas\Router\Http\Segment; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; return array( 'bjyauthorize' => [ 'rule_providers' => [ PrivilegeRuleProvider::class => [ 'allow' => [ [ 'privileges' => [ AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT, ], 'resources' => ['Admission'], 'assertion' => AdmissionAssertion::class, ], ], ], ], 'guards' => [ PrivilegeController::class => [ [ 'controller' => TransmissionController::class, 'action' => [ 'ajouter-transmission', ], 'privileges' => [ AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT, ], 'assertion' => AdmissionAssertion::class, ], ] ], ], 'router' => [ 'routes' => [ 'admission' => [ 'child_routes' => [ 'ajouter-transmission' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/transmission/ajouter/:admission', 'defaults' => [ 'controller' => TransmissionController::class, 'action' => 'ajouter-transmission', /* @see TransmissionController::ajouterTransmissionAction() */ ], ], ], ] ] ] ], 'controllers' => [ 'factories' => [ TransmissionController::class => TransmissionControllerFactory::class, ], ], 'form_elements' => [ 'factories' => [ TransmissionForm::class => TransmissionFormFactory::class ], ], 'service_manager' => [ 'factories' => [ TransmissionService::class => TransmissionServiceFactory::class, ], ], );
module/Admission/src/Admission/Assertion/AdmissionAbstractAssertion.php +1 −1 Changes for module/Admission/src/Admission/Assertion/AdmissionAbstractAssertion.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ class AdmissionAbstractAssertion extends AbstractAssertion if (empty($admission)) { if (($routeMatch = $this->getRouteMatch()) && $id = $routeMatch->getParam('admission')) { $admission = $this->admissionService->getRepository()->findOneById($id); $admission = $this->admissionService->getRepository()->find($id); } } Loading
module/Admission/src/Admission/Assertion/AdmissionAssertion.php +7 −0 Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ use Application\Entity\Db\Role; use Application\Service\UserContextServiceAwareInterface; use Application\Service\UserContextServiceAwareTrait; use Doctrine\Common\Collections\Collection; use Fichier\Entity\Db\NatureFichier; use Individu\Service\IndividuServiceAwareTrait; use Laminas\Permissions\Acl\Resource\ResourceInterface; use UnicaenApp\Service\MessageCollectorAwareInterface; Loading Loading @@ -83,6 +84,7 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte case 'notifier-dossier-complet': case 'generer-recapitulatif': case 'ajouter-convention-formation' : case 'ajouter-transmission' : if ($this->admission !== null) { $this->assertAppartenanceAdmission($this->admission); } Loading Loading @@ -175,6 +177,7 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte case AdmissionPrivileges::ADMISSION_TELECHARGER_SON_DOCUMENT: case AdmissionPrivileges::ADMISSION_VERIFIER: case AdmissionPrivileges::ADMISSION_NOTIFIER_DOSSIER_INCOMPLET: case AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT: $this->assertAppartenanceAdmission($this->admission); } Loading Loading @@ -266,6 +269,10 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte $admission->getEtat()->getCode() == (Admission::ETAT_EN_COURS_VALIDATION || Admission::ETAT_VALIDE || Admission::ETAT_REJETE), "Le dossier d'admission doit être en cours de validation / être validé / être rejeté" ); }elseif($codeNatureFichier === NatureFichier::CODE_ADMISSION_CHARTE_DOCTORAT_SIGNEE){ if(!($this->userContextService->getSelectedIdentityRole()->getRoleId() === Role::ROLE_ID_ADMISSION_CANDIDAT)){ throw new FailedAssertionException("Seul le candidat peut gérer ce document"); } }else{ $this->assertTrue( $admission->getEtat()->getCode() == Admission::ETAT_EN_COURS_SAISIE, Loading