Commit 2d41f4b9 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Nouveau menu 'Mes données' pour le doctorant : visualisation et changement de...

Nouveau menu 'Mes données' pour le doctorant : visualisation et changement de son adresse mail de contact (procédure améliorée)
parent dea99add
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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'
@@ -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 :
+1 −1
Original line number Diff line number Diff line
@@ -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);
+12 −1
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ return [
                    'action'     => [
                        'index',
                        'envoie',
                        'envoye',
                        'reception',
                        'swap',
                        'remove'
@@ -83,6 +84,7 @@ return [
                    'controller' => MailConfirmationController::class,
                    'action'     => [
                        'envoie',
                        'envoye',
                        'reception',
                    ],
                    'privileges' => ThesePrivileges::THESE_CONSULTATION_FICHE,
@@ -176,7 +178,6 @@ return [
                    ],
                ],
            ],

            'mail-confirmation-envoie' => [
                'type' => Segment::class,
                'options' => [
@@ -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' => [
+1 −1
Original line number Diff line number Diff line
@@ -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;
        }
+36 −17
Original line number Diff line number Diff line
@@ -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 {
@@ -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'])) {
@@ -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
@@ -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