Loading doc/release-notes/8.6.0/01_admission.sql +53 −0 Changes for doc/release-notes/8.6.0/01_admission.sql: 53 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -32,3 +32,56 @@ DROP COLUMN numero_candidat; 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/AdmissionAssertion.php +2 −0 Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -84,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 @@ -176,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 module/Admission/src/Admission/Config/ModuleConfig.php +6 −1 Changes for module/Admission/src/Admission/Config/ModuleConfig.php: 6 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -6,11 +6,13 @@ use Admission\Entity\Db\Admission; use Admission\Entity\Db\AdmissionAvis; use Admission\Entity\Db\AdmissionValidation; use Admission\Entity\Db\TypeValidation; use Admission\Service\Transmission\TransmissionServiceAwareTrait; use Application\Entity\Db\Role; use InvalidArgumentException; class ModuleConfig { use TransmissionServiceAwareTrait; const ATTESTATION_HONNEUR_CHARTE_DOCTORALE = 'ATTESTATION_HONNEUR_CHARTE_DOCTORALE'; const ATTESTATION_HONNEUR = 'ATTESTATION_HONNEUR'; const VALIDATION_GESTIONNAIRE = 'VALIDATION_GESTIONNAIRE'; Loading Loading @@ -83,7 +85,10 @@ class ModuleConfig $directeur = $admission->getInscription()->first()->getDirecteur(); $coDirecteur = !$admission->getInscription()->first()->getCoDirection() || $admission->getInscription()->first()->getCoDirecteur(); } return $admission->isDossierComplet() && $directeur && $coDirecteur; $transmissionInBdd = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]); return $admission->isDossierComplet() && $directeur && $coDirecteur && $transmissionInBdd; }, 'enabled' => null, 'enabled_as_dql' => null, Loading Loading
doc/release-notes/8.6.0/01_admission.sql +53 −0 Changes for doc/release-notes/8.6.0/01_admission.sql: 53 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -32,3 +32,56 @@ DROP COLUMN numero_candidat; 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/AdmissionAssertion.php +2 −0 Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -84,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 @@ -176,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
module/Admission/src/Admission/Config/ModuleConfig.php +6 −1 Changes for module/Admission/src/Admission/Config/ModuleConfig.php: 6 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -6,11 +6,13 @@ use Admission\Entity\Db\Admission; use Admission\Entity\Db\AdmissionAvis; use Admission\Entity\Db\AdmissionValidation; use Admission\Entity\Db\TypeValidation; use Admission\Service\Transmission\TransmissionServiceAwareTrait; use Application\Entity\Db\Role; use InvalidArgumentException; class ModuleConfig { use TransmissionServiceAwareTrait; const ATTESTATION_HONNEUR_CHARTE_DOCTORALE = 'ATTESTATION_HONNEUR_CHARTE_DOCTORALE'; const ATTESTATION_HONNEUR = 'ATTESTATION_HONNEUR'; const VALIDATION_GESTIONNAIRE = 'VALIDATION_GESTIONNAIRE'; Loading Loading @@ -83,7 +85,10 @@ class ModuleConfig $directeur = $admission->getInscription()->first()->getDirecteur(); $coDirecteur = !$admission->getInscription()->first()->getCoDirection() || $admission->getInscription()->first()->getCoDirecteur(); } return $admission->isDossierComplet() && $directeur && $coDirecteur; $transmissionInBdd = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]); return $admission->isDossierComplet() && $directeur && $coDirecteur && $transmissionInBdd; }, 'enabled' => null, 'enabled_as_dql' => null, Loading