Loading SQL/004-evenementiel/00_schemas.sql +13 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,9 @@ CREATE TABLE evenementiel_inscription evenement_id INTEGER REFERENCES evenementiel_evenement (id) ON DELETE CASCADE, participant_id INTEGER REFERENCES evenementiel_participant (id) ON DELETE CASCADE, statut VARCHAR(50) DEFAULT 'inscrit', -- inscrit, annulé, en attente type_inscription VARCHAR(32) NOT NULL DEFAULT 'INDIVIDUELLE' CONSTRAINT evenementiel_inscription_type_check CHECK (type_inscription IN ('INDIVIDUELLE', 'GROUPE')), nombre_places_demandees integer default 1, nombre_places_pointees integer default 0, liste varchar(64), Loading @@ -222,6 +225,16 @@ CREATE TABLE evenementiel_inscription create unique index evenementiel_inscription_id_uindex on evenementiel_inscription (id); -- ajout du champ type inscription sur une table existante ALTER TABLE public.evenementiel_inscription ADD COLUMN type_inscription VARCHAR(32) NOT NULL DEFAULT 'INDIVIDUELLE'; ALTER TABLE public.evenementiel_inscription ADD CONSTRAINT evenementiel_inscription_type_check CHECK (type_inscription IN ('INDIVIDUELLE', 'GROUPE')); -- -- 1 ligne = 1 place pour 1 personne drop table evenementiel_inscription_place ; Loading docker-compose.yml +0 −2 Original line number Diff line number Diff line version: '2' services: inscription_suac: container_name: inscription_suac Loading module/Evenementiel/config/merged/Evenement.config.php +22 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ use Evenementiel\Form\Evenement\EvenementHydratorFactory; use Evenementiel\Provider\Identity\IdentityProvider; use Evenementiel\Provider\Identity\IdentityProviderFactory; use Evenementiel\Provider\Privilege\EvenementPrivileges; use Evenementiel\Provider\Privilege\EvenementielinscriptionPrivileges; use Evenementiel\Service\Evenement\EvenementService; use Evenementiel\Service\Evenement\EvenementServiceFactory; use Laminas\Router\Http\Literal; Loading Loading @@ -103,6 +104,7 @@ return [ 'inscription-participant-gestionnaire', 'inscription-etudiant-gestionnaire', 'inscription-personnel-gestionnaire', 'inscription-groupe-gestionnaire', 'pointer-anonyme', 'depointer-anonyme', ], Loading @@ -110,12 +112,18 @@ return [ EvenementPrivileges::EVENEMENT_INSCRIPTION_GESTIONNAIRE, ], ], [ 'controller' => EvenementController::class, 'action' => ['inscription-groupe-gestionnaire', 'inscription-groupe'], 'privileges' => [EvenementielinscriptionPrivileges::GROUPE], ], [ 'controller' => EvenementController::class, 'action' => [ 'inscription-etudiant', 'inscription-personnel', 'inscription-externe', 'inscription-groupe', ], 'privileges' => [ EvenementPrivileges::EVENEMENT_INSCRIPTION_PARTICIPANT, Loading Loading @@ -297,6 +305,20 @@ return [ ], ], ], 'inscription-groupe-gestionnaire' => [ 'type' => Segment::class, 'options' => [ 'route' => '/inscription-groupe-gestionnaire/:entity', 'defaults' => ['action' => 'inscription-groupe-gestionnaire'], ], ], 'inscription-groupe' => [ 'type' => Segment::class, 'options' => [ 'route' => '/inscription-groupe/:entity', 'defaults' => ['action' => 'inscription-groupe'], ], ], 'inscription-etudiant-gestionnaire' => [ 'type' => Segment::class, 'options' => [ Loading module/Evenementiel/config/merged/Inscription.config.php +33 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ use Evenementiel\Form\Inscription\InscriptionParticipantForm; use Evenementiel\Form\Inscription\InscriptionParticipantFormFactory; use Evenementiel\Form\Inscription\InscriptionParticipantHydrator; use Evenementiel\Form\Inscription\InscriptionParticipantHydratorFactory; use Evenementiel\Form\Inscription\InscriptionGroupeForm; use Evenementiel\Form\Inscription\InscriptionGroupeFormFactory; use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider; return [ Loading Loading @@ -119,6 +121,9 @@ return [ 'action' => [ 'auto-inscription', 'inscription-en-cours', 'inscription-historique', 'generer-historique', 'inscription-groupe', ], 'privileges' => [ EvenementielinscriptionPrivileges::AUTOINSCRIPTION, Loading Loading @@ -315,6 +320,26 @@ return [ ], ], ], 'inscription-historique' => [ 'type' => Segment::class, 'options' => [ 'route' => '/inscription-historique', 'defaults' => [ /** @see InscriptionController::inscriptionHistoriqueAction() */ 'action' => 'inscription-historique', ], ], ], 'generer-historique' => [ 'type' => Segment::class, 'options' => [ 'route' => '/generer-historique', 'defaults' => [ /** @see InscriptionController::genererHistoriqueAction() */ 'action' => 'generer-historique', ], ], ], 'desinscription' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -370,6 +395,13 @@ return [ 'order' => 100, 'icon' => 'fas fa-angle-right', ], 'inscriptions-historique' => [ 'label' => "Mes évènements suivis", 'route' => 'evenementiel/inscription/inscription-historique', 'resource' => PrivilegeController::getResourceId(InscriptionController::class, 'inscription-historique'), 'order' => 200, 'icon' => 'fas fa-angle-right', ], ], ], 'evenementiel' => [ Loading Loading @@ -404,6 +436,7 @@ return [ InscriptionParticipantForm::class => InscriptionParticipantFormFactory::class, InscriptionEtudiantForm::class => InscriptionEtudiantFormFactory::class, InscriptionPersonnelForm::class => InscriptionPersonnelFormFactory::class, InscriptionGroupeForm::class => InscriptionGroupeFormFactory::class, InscriptionPlaceFieldset::class => InscriptionPlaceFieldsetFactory::class, ], ], Loading module/Evenementiel/src/Assertion/InscriptionAssertion.php +16 −8 Original line number Diff line number Diff line Loading @@ -48,30 +48,38 @@ class InscriptionAssertion extends AbstractAssertion case EtudiantRolesProvider::ROLE_ETUDIANT: $etudiantOk = ($inscription->getParticipant()->getEtudiant() === $etudiant); return $etudiantOk && $inscriptionOk && $etatEvenementOk; return $etudiantOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case PersonnelRolesProvider::ROLE_PERSONNEL: $personnelOk = ($inscription->getParticipant()->getPersonnel() === $personnel); return $personnelOk && $inscriptionOk && $etatEvenementOk; return $personnelOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_EXTERNE: $externeOk = ($inscription->getParticipant()->getEmail() === $user->getEmail()); return $externeOk && $inscriptionOk && $etatEvenementOk; return $externeOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_GROUPE: $groupeOk = $inscription->estGroupe() && $inscription->getParticipant()->getEmail() === $user->getEmail(); return $groupeOk && $inscriptionOk && $etatEvenementOk; default : return true; return false; } break; case EvenementielinscriptionPrivileges::MODIFIER: switch ($role->getRoleId()) { case EtudiantRolesProvider::ROLE_ETUDIANT: $etudiantOk = ($inscription->getParticipant()->getEtudiant() === $etudiant); return $etudiantOk && $inscriptionOk && $etatEvenementOk; return $etudiantOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case PersonnelRolesProvider::ROLE_PERSONNEL: $personnelOk = ($inscription->getParticipant()->getPersonnel() === $personnel); return $personnelOk && $inscriptionOk && $etatEvenementOk; return $personnelOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_EXTERNE: $externeOk = ($inscription->getParticipant()->getEmail() === $user->getEmail()); return $externeOk && $inscriptionOk && $etatEvenementOk; return $externeOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_GROUPE: $groupeOk = $inscription->estGroupe() && $inscription->getParticipant()->getEmail() === $user->getEmail(); return $groupeOk && $inscriptionOk && $etatEvenementOk; default : return true; return false; } break; } Loading Loading
SQL/004-evenementiel/00_schemas.sql +13 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,9 @@ CREATE TABLE evenementiel_inscription evenement_id INTEGER REFERENCES evenementiel_evenement (id) ON DELETE CASCADE, participant_id INTEGER REFERENCES evenementiel_participant (id) ON DELETE CASCADE, statut VARCHAR(50) DEFAULT 'inscrit', -- inscrit, annulé, en attente type_inscription VARCHAR(32) NOT NULL DEFAULT 'INDIVIDUELLE' CONSTRAINT evenementiel_inscription_type_check CHECK (type_inscription IN ('INDIVIDUELLE', 'GROUPE')), nombre_places_demandees integer default 1, nombre_places_pointees integer default 0, liste varchar(64), Loading @@ -222,6 +225,16 @@ CREATE TABLE evenementiel_inscription create unique index evenementiel_inscription_id_uindex on evenementiel_inscription (id); -- ajout du champ type inscription sur une table existante ALTER TABLE public.evenementiel_inscription ADD COLUMN type_inscription VARCHAR(32) NOT NULL DEFAULT 'INDIVIDUELLE'; ALTER TABLE public.evenementiel_inscription ADD CONSTRAINT evenementiel_inscription_type_check CHECK (type_inscription IN ('INDIVIDUELLE', 'GROUPE')); -- -- 1 ligne = 1 place pour 1 personne drop table evenementiel_inscription_place ; Loading
docker-compose.yml +0 −2 Original line number Diff line number Diff line version: '2' services: inscription_suac: container_name: inscription_suac Loading
module/Evenementiel/config/merged/Evenement.config.php +22 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ use Evenementiel\Form\Evenement\EvenementHydratorFactory; use Evenementiel\Provider\Identity\IdentityProvider; use Evenementiel\Provider\Identity\IdentityProviderFactory; use Evenementiel\Provider\Privilege\EvenementPrivileges; use Evenementiel\Provider\Privilege\EvenementielinscriptionPrivileges; use Evenementiel\Service\Evenement\EvenementService; use Evenementiel\Service\Evenement\EvenementServiceFactory; use Laminas\Router\Http\Literal; Loading Loading @@ -103,6 +104,7 @@ return [ 'inscription-participant-gestionnaire', 'inscription-etudiant-gestionnaire', 'inscription-personnel-gestionnaire', 'inscription-groupe-gestionnaire', 'pointer-anonyme', 'depointer-anonyme', ], Loading @@ -110,12 +112,18 @@ return [ EvenementPrivileges::EVENEMENT_INSCRIPTION_GESTIONNAIRE, ], ], [ 'controller' => EvenementController::class, 'action' => ['inscription-groupe-gestionnaire', 'inscription-groupe'], 'privileges' => [EvenementielinscriptionPrivileges::GROUPE], ], [ 'controller' => EvenementController::class, 'action' => [ 'inscription-etudiant', 'inscription-personnel', 'inscription-externe', 'inscription-groupe', ], 'privileges' => [ EvenementPrivileges::EVENEMENT_INSCRIPTION_PARTICIPANT, Loading Loading @@ -297,6 +305,20 @@ return [ ], ], ], 'inscription-groupe-gestionnaire' => [ 'type' => Segment::class, 'options' => [ 'route' => '/inscription-groupe-gestionnaire/:entity', 'defaults' => ['action' => 'inscription-groupe-gestionnaire'], ], ], 'inscription-groupe' => [ 'type' => Segment::class, 'options' => [ 'route' => '/inscription-groupe/:entity', 'defaults' => ['action' => 'inscription-groupe'], ], ], 'inscription-etudiant-gestionnaire' => [ 'type' => Segment::class, 'options' => [ Loading
module/Evenementiel/config/merged/Inscription.config.php +33 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ use Evenementiel\Form\Inscription\InscriptionParticipantForm; use Evenementiel\Form\Inscription\InscriptionParticipantFormFactory; use Evenementiel\Form\Inscription\InscriptionParticipantHydrator; use Evenementiel\Form\Inscription\InscriptionParticipantHydratorFactory; use Evenementiel\Form\Inscription\InscriptionGroupeForm; use Evenementiel\Form\Inscription\InscriptionGroupeFormFactory; use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider; return [ Loading Loading @@ -119,6 +121,9 @@ return [ 'action' => [ 'auto-inscription', 'inscription-en-cours', 'inscription-historique', 'generer-historique', 'inscription-groupe', ], 'privileges' => [ EvenementielinscriptionPrivileges::AUTOINSCRIPTION, Loading Loading @@ -315,6 +320,26 @@ return [ ], ], ], 'inscription-historique' => [ 'type' => Segment::class, 'options' => [ 'route' => '/inscription-historique', 'defaults' => [ /** @see InscriptionController::inscriptionHistoriqueAction() */ 'action' => 'inscription-historique', ], ], ], 'generer-historique' => [ 'type' => Segment::class, 'options' => [ 'route' => '/generer-historique', 'defaults' => [ /** @see InscriptionController::genererHistoriqueAction() */ 'action' => 'generer-historique', ], ], ], 'desinscription' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -370,6 +395,13 @@ return [ 'order' => 100, 'icon' => 'fas fa-angle-right', ], 'inscriptions-historique' => [ 'label' => "Mes évènements suivis", 'route' => 'evenementiel/inscription/inscription-historique', 'resource' => PrivilegeController::getResourceId(InscriptionController::class, 'inscription-historique'), 'order' => 200, 'icon' => 'fas fa-angle-right', ], ], ], 'evenementiel' => [ Loading Loading @@ -404,6 +436,7 @@ return [ InscriptionParticipantForm::class => InscriptionParticipantFormFactory::class, InscriptionEtudiantForm::class => InscriptionEtudiantFormFactory::class, InscriptionPersonnelForm::class => InscriptionPersonnelFormFactory::class, InscriptionGroupeForm::class => InscriptionGroupeFormFactory::class, InscriptionPlaceFieldset::class => InscriptionPlaceFieldsetFactory::class, ], ], Loading
module/Evenementiel/src/Assertion/InscriptionAssertion.php +16 −8 Original line number Diff line number Diff line Loading @@ -48,30 +48,38 @@ class InscriptionAssertion extends AbstractAssertion case EtudiantRolesProvider::ROLE_ETUDIANT: $etudiantOk = ($inscription->getParticipant()->getEtudiant() === $etudiant); return $etudiantOk && $inscriptionOk && $etatEvenementOk; return $etudiantOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case PersonnelRolesProvider::ROLE_PERSONNEL: $personnelOk = ($inscription->getParticipant()->getPersonnel() === $personnel); return $personnelOk && $inscriptionOk && $etatEvenementOk; return $personnelOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_EXTERNE: $externeOk = ($inscription->getParticipant()->getEmail() === $user->getEmail()); return $externeOk && $inscriptionOk && $etatEvenementOk; return $externeOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_GROUPE: $groupeOk = $inscription->estGroupe() && $inscription->getParticipant()->getEmail() === $user->getEmail(); return $groupeOk && $inscriptionOk && $etatEvenementOk; default : return true; return false; } break; case EvenementielinscriptionPrivileges::MODIFIER: switch ($role->getRoleId()) { case EtudiantRolesProvider::ROLE_ETUDIANT: $etudiantOk = ($inscription->getParticipant()->getEtudiant() === $etudiant); return $etudiantOk && $inscriptionOk && $etatEvenementOk; return $etudiantOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case PersonnelRolesProvider::ROLE_PERSONNEL: $personnelOk = ($inscription->getParticipant()->getPersonnel() === $personnel); return $personnelOk && $inscriptionOk && $etatEvenementOk; return $personnelOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_EXTERNE: $externeOk = ($inscription->getParticipant()->getEmail() === $user->getEmail()); return $externeOk && $inscriptionOk && $etatEvenementOk; return $externeOk && $inscription->estIndividuelle() && $inscriptionOk && $etatEvenementOk; case ExterneRolesProvider::ROLE_GROUPE: $groupeOk = $inscription->estGroupe() && $inscription->getParticipant()->getEmail() === $user->getEmail(); return $groupeOk && $inscriptionOk && $etatEvenementOk; default : return true; return false; } break; } Loading