Loading doc/notifications.md +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ Notifications envoyées par l'application 'NOTIF_ATTENT_VALID_CORREC' => APPLICATION_DIR . '/module/Application/view/application/notification/mail/notif-validation-depot-these-corrigee.phtml' 'NOTIF_MAIL_INCONNU_PRES_JURY' => APPLICATION_DIR . '/module/Application/view/application/notification/mail/notif-pas-de-mail-president-jury.phtml' 'NOTIF_VALID_CORREC' => APPLICATION_DIR . '/module/Application/view/application/notification/mail/notif-validation-correction-these.phtml' 'NOTIF_DEMAND_CONFIRM_MAIL' => APPLICATION_DIR . '/module/Application/view/application/doctorant/demande-confirmation-mail.phtml' 'NOTIF_DEMAND_CONFIRM_MAIL' => APPLICATION_DIR . '/module/Doctorant/view/doctorant/mail/demande-confirmation-mail.phtml' 'NOTIF_CHANG_ROLE' => APPLICATION_DIR . '/module/Application/view/application/utilisateur/changement-role.phtml' 'NOTIF_CREA_COMPTE_LOCAL' => APPLICATION_DIR . '/module/Application/view/application/utilisateur/mail/init-compte.phtml' 'NOTIF_REINIT_MOT_PASSE' => APPLICATION_DIR . '/module/Application/view/application/utilisateur/mail/reinit-compte.phtml' Loading Loading @@ -200,7 +200,7 @@ Module Dépôt - Code : - NOTIF_DEMAND_CONFIRM_MAIL - Template : - module/Application/view/application/doctorant/demande-confirmation-mail.phtml - module/Doctorant/view/doctorant/mail/demande-confirmation-mail.phtml ### Modification dans vos rôles - Quand : Loading module/Application/Module.php +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ class Module /* Détournement de requête pour demander la saisie du persopass */ $deflector = new SaisiePersopassRouteDeflector('#^home|these|soutenance\/.+#', [ 'options' => ['name' => 'doctorant/modifier-persopass'], 'options' => ['name' => 'doctorant/modifier-email-contact'], 'params' => ['detournement' => 1] ]); $deflector->attach($eventManager); Loading module/Application/config/others/admin.config.php +12 −1 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ return [ 'action' => [ 'index', 'envoie', 'envoye', 'reception', 'swap', 'remove' Loading @@ -83,6 +84,7 @@ return [ 'controller' => MailConfirmationController::class, 'action' => [ 'envoie', 'envoye', 'reception', ], 'privileges' => ThesePrivileges::THESE_CONSULTATION_FICHE, Loading Loading @@ -176,7 +178,6 @@ return [ ], ], ], 'mail-confirmation-envoie' => [ 'type' => Segment::class, 'options' => [ Loading @@ -187,6 +188,16 @@ return [ ], ], ], 'mail-confirmation-envoye' => [ 'type' => Segment::class, 'options' => [ 'route' => '/mail-confirmation-envoye/:id', 'defaults' =>[ 'controller' => MailConfirmationController::class, 'action' => 'envoye', ], ], ], 'mail-confirmation-reception' => [ 'type' => Segment::class, 'options' => [ Loading module/Application/src/Application/Assertion/These/TheseControllerAssertion.php +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ class TheseControllerAssertion extends ControllerAssertion } switch (true) { case $this->actionIs(self::DOCTORANT_CONTROLLER, 'modifier-persopass'): case $this->actionIs(self::DOCTORANT_CONTROLLER, 'modifier-email-contact'): return $this->doctorant && $this->doctorant->getId() === $identityDoctorant->getId(); break; } Loading module/Application/src/Application/Controller/MailConfirmationController.php +36 −17 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ use Application\Form\MailConfirmationForm; use Application\Service\Individu\IndividuServiceAwareTrait; use Application\Service\MailConfirmationService; use Application\Service\Notification\NotifierServiceAwareTrait; use Notification\Exception\NotificationException; use UnicaenApp\Exception\RuntimeException; use Zend\View\Model\ViewModel; class MailConfirmationController extends AbstractController { Loading Loading @@ -51,11 +53,11 @@ class MailConfirmationController extends AbstractController { if ($id !== null) { //edition d'une demande existante $mailConfirmation = $this->mailConfirmationService->getDemandeById($id); $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); } else { //nouvelle demande $mailConfirmation = new MailConfirmation(); $mailConfirmation->setEtat(MailConfirmation::ENVOYER); $mailConfirmation->setEtat(MailConfirmation::ENVOYE); $data = $request->getPost(); if (isset($data['idIndividu'])) { Loading Loading @@ -92,33 +94,49 @@ class MailConfirmationController extends AbstractController { return new ViewModel([ 'form' => $form, 'encours' => $this->mailConfirmationService->getDemandeEnCours(), 'confirmees' => $this->mailConfirmationService->getDemandeConfirmees(), 'encours' => $this->mailConfirmationService->fetchMailConfirmationsEnvoyes(), 'confirmees' => $this->mailConfirmationService->fetchMailConfirmationConfirmes(), ]); } public function envoieAction() { $id = $this->params()->fromRoute('id'); //$this->mailConfirmationService->generateCode($id); /** @var MailConfirmation $mailConfirmation */ $mailConfirmation = $this->mailConfirmationService->getDemandeById($id); $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); $confirmUrl = $this->url()->fromRoute( 'mail-confirmation-reception', ['id' => $mailConfirmation->getId(), 'code' => $mailConfirmation->getCode()], ['force_canonical' => true] , true ); try { $this->notifierService->triggerMailConfirmation($mailConfirmation, $confirmUrl); } catch (NotificationException $e) { throw new RuntimeException("Erreur lors de l'envoi de la notification", null, $e); } $appName = $this->appInfos()->getNom(); return $this->redirect()->toRoute('mail-confirmation-envoye', [], [], true); } public function envoyeAction() { $id = $this->params()->fromRoute('id'); $confirm = $this->url()->fromRoute('mail-confirmation-reception', ['id' => $mailConfirmation->getId(), 'code' => $mailConfirmation->getCode()], ['force_canonical' => true] , true); $this->notifierService->triggerMailConfirmation($mailConfirmation, $confirm); /** @var MailConfirmation $mailConfirmation */ $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); return $this->redirect()->toRoute("home"); /** Branchement du mail mais peut être echanger avec une vue classique en * décommentant le code si dessous*/ return new ViewModel([ 'email' => $mailConfirmation->getEmail(), ]); } /** * @return ViewModel * @throws \Doctrine\ORM\OptimisticLockException */ public function receptionAction() public function receptionAction(): ViewModel { /** * @var int $id Loading @@ -126,10 +144,11 @@ class MailConfirmationController extends AbstractController { */ $id = $this->params()->fromRoute('id'); $code = $this->params()->fromRoute('code'); $mailConfirmation = $this->mailConfirmationService->getDemandeById($id); $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); if (! $mailConfirmation->isConfirmer() && $mailConfirmation->getCode() === $code) { $this->mailConfirmationService->confirmEmail($id); if (! $mailConfirmation->estConfirme() && $mailConfirmation->getCode() === $code) { $this->mailConfirmationService->confirmEmail($mailConfirmation); $this->mailConfirmationService->purgeForIndividu($mailConfirmation->getIndividu()); } return new ViewModel([ Loading Loading
doc/notifications.md +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ Notifications envoyées par l'application 'NOTIF_ATTENT_VALID_CORREC' => APPLICATION_DIR . '/module/Application/view/application/notification/mail/notif-validation-depot-these-corrigee.phtml' 'NOTIF_MAIL_INCONNU_PRES_JURY' => APPLICATION_DIR . '/module/Application/view/application/notification/mail/notif-pas-de-mail-president-jury.phtml' 'NOTIF_VALID_CORREC' => APPLICATION_DIR . '/module/Application/view/application/notification/mail/notif-validation-correction-these.phtml' 'NOTIF_DEMAND_CONFIRM_MAIL' => APPLICATION_DIR . '/module/Application/view/application/doctorant/demande-confirmation-mail.phtml' 'NOTIF_DEMAND_CONFIRM_MAIL' => APPLICATION_DIR . '/module/Doctorant/view/doctorant/mail/demande-confirmation-mail.phtml' 'NOTIF_CHANG_ROLE' => APPLICATION_DIR . '/module/Application/view/application/utilisateur/changement-role.phtml' 'NOTIF_CREA_COMPTE_LOCAL' => APPLICATION_DIR . '/module/Application/view/application/utilisateur/mail/init-compte.phtml' 'NOTIF_REINIT_MOT_PASSE' => APPLICATION_DIR . '/module/Application/view/application/utilisateur/mail/reinit-compte.phtml' Loading Loading @@ -200,7 +200,7 @@ Module Dépôt - Code : - NOTIF_DEMAND_CONFIRM_MAIL - Template : - module/Application/view/application/doctorant/demande-confirmation-mail.phtml - module/Doctorant/view/doctorant/mail/demande-confirmation-mail.phtml ### Modification dans vos rôles - Quand : Loading
module/Application/Module.php +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ class Module /* Détournement de requête pour demander la saisie du persopass */ $deflector = new SaisiePersopassRouteDeflector('#^home|these|soutenance\/.+#', [ 'options' => ['name' => 'doctorant/modifier-persopass'], 'options' => ['name' => 'doctorant/modifier-email-contact'], 'params' => ['detournement' => 1] ]); $deflector->attach($eventManager); Loading
module/Application/config/others/admin.config.php +12 −1 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ return [ 'action' => [ 'index', 'envoie', 'envoye', 'reception', 'swap', 'remove' Loading @@ -83,6 +84,7 @@ return [ 'controller' => MailConfirmationController::class, 'action' => [ 'envoie', 'envoye', 'reception', ], 'privileges' => ThesePrivileges::THESE_CONSULTATION_FICHE, Loading Loading @@ -176,7 +178,6 @@ return [ ], ], ], 'mail-confirmation-envoie' => [ 'type' => Segment::class, 'options' => [ Loading @@ -187,6 +188,16 @@ return [ ], ], ], 'mail-confirmation-envoye' => [ 'type' => Segment::class, 'options' => [ 'route' => '/mail-confirmation-envoye/:id', 'defaults' =>[ 'controller' => MailConfirmationController::class, 'action' => 'envoye', ], ], ], 'mail-confirmation-reception' => [ 'type' => Segment::class, 'options' => [ Loading
module/Application/src/Application/Assertion/These/TheseControllerAssertion.php +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ class TheseControllerAssertion extends ControllerAssertion } switch (true) { case $this->actionIs(self::DOCTORANT_CONTROLLER, 'modifier-persopass'): case $this->actionIs(self::DOCTORANT_CONTROLLER, 'modifier-email-contact'): return $this->doctorant && $this->doctorant->getId() === $identityDoctorant->getId(); break; } Loading
module/Application/src/Application/Controller/MailConfirmationController.php +36 −17 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ use Application\Form\MailConfirmationForm; use Application\Service\Individu\IndividuServiceAwareTrait; use Application\Service\MailConfirmationService; use Application\Service\Notification\NotifierServiceAwareTrait; use Notification\Exception\NotificationException; use UnicaenApp\Exception\RuntimeException; use Zend\View\Model\ViewModel; class MailConfirmationController extends AbstractController { Loading Loading @@ -51,11 +53,11 @@ class MailConfirmationController extends AbstractController { if ($id !== null) { //edition d'une demande existante $mailConfirmation = $this->mailConfirmationService->getDemandeById($id); $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); } else { //nouvelle demande $mailConfirmation = new MailConfirmation(); $mailConfirmation->setEtat(MailConfirmation::ENVOYER); $mailConfirmation->setEtat(MailConfirmation::ENVOYE); $data = $request->getPost(); if (isset($data['idIndividu'])) { Loading Loading @@ -92,33 +94,49 @@ class MailConfirmationController extends AbstractController { return new ViewModel([ 'form' => $form, 'encours' => $this->mailConfirmationService->getDemandeEnCours(), 'confirmees' => $this->mailConfirmationService->getDemandeConfirmees(), 'encours' => $this->mailConfirmationService->fetchMailConfirmationsEnvoyes(), 'confirmees' => $this->mailConfirmationService->fetchMailConfirmationConfirmes(), ]); } public function envoieAction() { $id = $this->params()->fromRoute('id'); //$this->mailConfirmationService->generateCode($id); /** @var MailConfirmation $mailConfirmation */ $mailConfirmation = $this->mailConfirmationService->getDemandeById($id); $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); $confirmUrl = $this->url()->fromRoute( 'mail-confirmation-reception', ['id' => $mailConfirmation->getId(), 'code' => $mailConfirmation->getCode()], ['force_canonical' => true] , true ); try { $this->notifierService->triggerMailConfirmation($mailConfirmation, $confirmUrl); } catch (NotificationException $e) { throw new RuntimeException("Erreur lors de l'envoi de la notification", null, $e); } $appName = $this->appInfos()->getNom(); return $this->redirect()->toRoute('mail-confirmation-envoye', [], [], true); } public function envoyeAction() { $id = $this->params()->fromRoute('id'); $confirm = $this->url()->fromRoute('mail-confirmation-reception', ['id' => $mailConfirmation->getId(), 'code' => $mailConfirmation->getCode()], ['force_canonical' => true] , true); $this->notifierService->triggerMailConfirmation($mailConfirmation, $confirm); /** @var MailConfirmation $mailConfirmation */ $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); return $this->redirect()->toRoute("home"); /** Branchement du mail mais peut être echanger avec une vue classique en * décommentant le code si dessous*/ return new ViewModel([ 'email' => $mailConfirmation->getEmail(), ]); } /** * @return ViewModel * @throws \Doctrine\ORM\OptimisticLockException */ public function receptionAction() public function receptionAction(): ViewModel { /** * @var int $id Loading @@ -126,10 +144,11 @@ class MailConfirmationController extends AbstractController { */ $id = $this->params()->fromRoute('id'); $code = $this->params()->fromRoute('code'); $mailConfirmation = $this->mailConfirmationService->getDemandeById($id); $mailConfirmation = $this->mailConfirmationService->fetchMailConfirmationById($id); if (! $mailConfirmation->isConfirmer() && $mailConfirmation->getCode() === $code) { $this->mailConfirmationService->confirmEmail($id); if (! $mailConfirmation->estConfirme() && $mailConfirmation->getCode() === $code) { $this->mailConfirmationService->confirmEmail($mailConfirmation); $this->mailConfirmationService->purgeForIndividu($mailConfirmation->getIndividu()); } return new ViewModel([ Loading