Commit 98d4e9d0 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

modification de la page dans Sygal (remettre mot de passe ?)

parent 20b33605
Loading
Loading
Loading
Loading
Loading
+30 −0
Changes for module/Application/config/others/admin.config.php: 30 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -12,6 +12,9 @@ use Application\Form\Factory\MailConfirmationFormFactory;
use Application\Form\Factory\MailConfirmationHydratorFactory;
use Application\Service\MailConfirmationServiceFactory;
use Application\Controller\Factory\MailConfirmationControllerFactory;
use Application\Controller\CobayeController;
use Application\Controller\Factory\CobayeControllerFactory;
use Application\Provider\Privilege\ThesePrivileges;

return [
    'bjyauthorize'    => [
@@ -61,6 +64,21 @@ return [
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_ATTRIBUTION_ROLE,
                ],
                [
                    'controller' => MailConfirmationController::class,
                    'action'     => [
                        'envoie',
                        'reception',
                    ],
                    'privileges' => ThesePrivileges::THESE_CONSULTATION_FICHE,
                ],
                [
                    'controller' => CobayeController::class,
                    'action'     => [
                        'index',
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_ATTRIBUTION_ROLE,
                ],
            ],
        ],
    ],
@@ -150,6 +168,16 @@ return [
                    ],
                ],
            ],
            'cobaye' => [
                'type'          => Literal::class,
                'options'       => [
                    'route'         => '/cobaye',
                    'defaults'      => [
                        'controller'    => CobayeController::class,
                        'action'        => 'index',
                    ],
                ],
            ],
            'test-envoi-mail' => [
                'type'          => 'Segment',
                'options'       => [
@@ -200,10 +228,12 @@ return [
    'controllers'     => [
        'invokables' => [
            'Application\Controller\Admin' => AdminController::class,

        ],
        'factories' => [
            'Application\Controller\Role' => RoleControllerFactory::class,
            MailConfirmationController::class => MailConfirmationControllerFactory::class,
            CobayeController::class => CobayeControllerFactory::class,

        ],
    ],
+69 −37
Changes for module/Application/src/Application/Controller/DoctorantController.php: 69 added lines, 37 removed lines.
Original line number Diff line number Diff line
@@ -3,10 +3,12 @@
namespace Application\Controller;

use Application\Entity\Db\Doctorant;
use Application\Entity\Db\MailConfirmation;
use Application\Entity\Db\Variable;
use Application\Filter\DbExceptionFormatter;
use Application\RouteMatch;
use Application\Service\Doctorant\DoctorantServiceAwareTrait;
use Application\Service\MailConfirmationService;
use Application\Service\Variable\VariableServiceAwareTrait;
use Doctrine\DBAL\DBALException;
use UnicaenAuth\Authentication\Adapter\Ldap as LdapAuthAdapter;
@@ -20,58 +22,88 @@ class DoctorantController extends AbstractController
    use VariableServiceAwareTrait;
    use DoctorantServiceAwareTrait;

    /** @var MailConfirmationService $mailConfirmationService */
    private $mailConfirmationService;

    public function setMailConfirmationService(MailConfirmationService $mailConfirmationService)
    {
        $this->mailConfirmationService = $mailConfirmationService;
    }

    public function modifierPersopassAction()
    {
        $doctorant = $this->requestDoctorant();
        $form = $this->getModifierPersopassForm();

        $form->setData([
            'identity' => $doctorant->getPersopass(),
            'credential' => '',
        ]);
//        $form = $this->getModifierPersopassForm();
//        $form->setData([
//            'identity' => $doctorant->getPersopass(),
//            'credential' => '',
//        ]);
//
//        $request = $this->getRequest();
//        if ($request->isPost()) {
//            /** @var ParametersInterface $post */
//            $post = $this->getRequest()->getPost();
//            $form->setData($post);
//            if ($form->isValid()) {
//                if ($result = $this->validatePersopass($post['identity'], $post['credential'])) {
//                    try {
//                        $this->doctorantService->updateDoctorant($doctorant, $result);
//
//                        // prise en compte du paramètre GET 'return' positionné par SaisiePersopassRouteDeflector :
//                        if ($redirectUri = $this->params()->fromQuery('return')) {
//                            return $this->redirect()->toUrl($redirectUri);
//                        }
//
//                        if (!$request->isXmlHttpRequest()) {
//                            return $this->redirect()->toRoute('home', [], [], true);
//                        }
//                    } catch (DBALException $e) {
//                        $f = new DbExceptionFormatter();
//                        $message = $f->filter($e);
//                        $form->setMessages(['credential' => [$message]]);
//                    }
//                }
//                else {
//                    $form->setMessages(['credential' => ["Identifiant ou mot de passe incorrect"]]);
//                }
//            }
//        }
//
//        $form->setAttribute('action', $request->getRequestUri());
//
//        $variable = $this->variableService->getRepository()->findByCodeAndEtab(
//            Variable::CODE_EMAIL_BDD,
//            $doctorant->getEtablissement());

        $mailConfirmation = new MailConfirmation();
        $mailConfirmation->setIndividu($doctorant->getIndividu());
        $mailConfirmation->setEtat(MailConfirmation::ENVOYER);

        $request = $this->getRequest();
        if ($request->isPost()) {
            /** @var ParametersInterface $post */
            $post = $this->getRequest()->getPost();
            $form->setData($post);
            if ($form->isValid()) {
                if ($result = $this->validatePersopass($post['identity'], $post['credential'])) {
                    try {
                        $this->doctorantService->updateDoctorant($doctorant, $result);

                        // prise en compte du paramètre GET 'return' positionné par SaisiePersopassRouteDeflector :
                        if ($redirectUri = $this->params()->fromQuery('return')) {
                            return $this->redirect()->toUrl($redirectUri);
                        }

                        if (!$request->isXmlHttpRequest()) {
                            return $this->redirect()->toRoute('home', [], [], true);
                        }
                    } catch (DBALException $e) {
                        $f = new DbExceptionFormatter();
                        $message = $f->filter($e);
                        $form->setMessages(['credential' => [$message]]);
                    }
                }
                else {
                    $form->setMessages(['credential' => ["Identifiant ou mot de passe incorrect"]]);
                }
            $data = $request->getPost();
            $email = $data['email'];
            if (filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
                $mailConfirmation->setEmail($email);
                $id = $this->mailConfirmationService->save($mailConfirmation);
                $this->mailConfirmationService->generateCode($id);
                $this->redirect()->toRoute('mail-confirmation-envoie', ['id' => $id], [], true);
            } else {
                $this->flashMessenger()->addErrorMessage("L'email fourni <strong>".$email."</strong> est non valide.");
            }
        }

        $form->setAttribute('action', $request->getRequestUri());
        $form = $this->getServiceLocator()->get('FormElementManager')->get('MailConfirmationForm');

        $variable = $this->variableService->getRepository()->findByCodeAndEtab(
            Variable::CODE_EMAIL_BDD,
            $doctorant->getEtablissement());
        $form->bind($mailConfirmation);

        return new ViewModel([
            'doctorant' => $doctorant,
            'form' => $form,
            'title' => "Saisie du Persopass",
            'detournement' => (bool) $this->params('detournement'),
            'emailBdD' => $variable->getValeur(),
            'title' => "Saisie du mail de contact",
            //'detournement' => (bool) $this->params('detournement'),
            //'emailBdD' => $variable->getValeur(),
        ]);
    }

+3 −0
Changes for module/Application/src/Application/Controller/Factory/DoctorantControllerFactory.php: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Application\Controller\DoctorantController;
use Application\Service\Doctorant\DoctorantService;
use Application\Service\Variable\VariableService;
use Zend\Mvc\Controller\ControllerManager;
use Application\Service\MailConfirmationService;

class DoctorantControllerFactory
{
@@ -23,10 +24,12 @@ class DoctorantControllerFactory
         */
        $variableService = $controllerManager->getServiceLocator()->get('VariableService');
        $doctorantService = $controllerManager->getServiceLocator()->get('DoctorantService');
        $mailConfirmationService = $controllerManager->getServiceLocator()->get('MailConfirmationService');

        $controller = new DoctorantController();
        $controller->setVariableService($variableService);
        $controller->setDoctorantService($doctorantService);
        $controller->setMailConfirmationService($mailConfirmationService);

        return $controller;
    }
+6 −1
Changes for module/Application/src/Application/Controller/MailConfirmationController.php: 6 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -4,7 +4,6 @@ namespace Application\Controller;

use Application\Entity\Db\MailConfirmation;
use Application\Form\MailConfirmationForm;
use Application\Service\Individu\IndividuService;
use Application\Service\Individu\IndividuServiceAwareTrait;
use Application\Service\MailConfirmationService;
use Application\Service\Notification\NotificationServiceAwareTrait;
@@ -53,11 +52,17 @@ class MailConfirmationController extends AbstractController {
                    if (isset($data['email']) && $data['email'] !== "") {
                        $mailConfirmation->setEmail($data['email']);

                        if (filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {

                            //enresgistrement de la demande
                            $id = $this->mailConfirmationService->save($mailConfirmation);
                            $this->mailConfirmationService->generateCode($id);

                            $this->redirect()->toRoute('mail-confirmation-envoie', ['id' => $id], [], true);
                            $form = null;
                        } else {
                            $this->flashMessenger()->addErrorMessage("MailConfirmation: Votre email n'est pas valide");
                        }
                    } else {
                        //pas de mail on reste sur le formulaire
                    }
+50 −33
Changes for module/Application/view/application/doctorant/modifier-persopass.phtml: 50 added lines, 33 removed lines.
Original line number Diff line number Diff line
@@ -16,46 +16,63 @@ use Zend\Form\Form;

<h1 class="page-header"><?php echo $title ?></h1>

<?php if ($detournement): ?>
    <p class="lead">
        Avant de continuer, merci de saisir votre identifiant
        <abbr title="Compte d'accès au système d'information de l'université">PersoP@ss</abbr>, svp. <br>
        Il sera utile ultérieurement dans l'application pour faire le lien entre vos comptes étudiant et personnel.
    </p>
<?php else: ?>
<?php //if ($detournement): ?>
<!--    <p class="lead">-->
<!--        Avant de continuer, merci de saisir votre identifiant-->
<!--        <abbr title="Compte d'accès au système d'information de l'université">PersoP@ss</abbr>, svp. <br>-->
<!--        Il sera utile ultérieurement dans l'application pour faire le lien entre vos comptes étudiant et personnel.-->
<!--    </p>-->
<?php //else: ?>
<!--    <p class="lead">-->
<!--        L'identifiant <abbr title="Compte d'accès au système d'information de l'université">PersoP@ss</abbr>-->
<!--        sera utile ultérieurement dans l'application pour faire le lien entre vos comptes étudiant et personnel.-->
<!--    </p>-->
<?php //endif ?>

<p class="lead">
        L'identifiant <abbr title="Compte d'accès au système d'information de l'université">PersoP@ss</abbr>
        sera utile ultérieurement dans l'application pour faire le lien entre vos comptes étudiant et personnel.
Avant de continer, merci de bien saissir une adresse mail de contact.
Cette adresse sera utilisée par SyGAL pour vous communiquer les informations importantes associées à votre thèse.
Cette adresse peut aussi être utilisée afin de vous identifier à SyGAL.
</p>
<?php endif ?>

<p class="alert alert-info">
    <strong>NB:</strong> Si vous ne possédez pas encore d'identifiant
    <abbr title="Compte d'accès au système d'information de l'université">PersoP@ss</abbr>, envoyez un mail à
    <a href="mailto:<?php echo $email = $emailBdD ?>"><?php echo $email ?></a>.
    <strong>NB:</strong>
    L'adresse mail de contact de vous saisez ici doit être une adresse durable (autre que vos adresses mails fornies
    par votre établissement).
</p>

<?php //echo $this->messenger()->addCurrentMessagesFromFlashMessenger() ?>

<?php echo $this->form()->openTag($form) ?>

<?php if (($errors = $this->formErrors($form))): ?>
    <p><?php echo $errors ?></p>
<?php endif ?>

<?php //echo $this->form()->openTag($form) ?>
<!---->
<?php //if (($errors = $this->formErrors($form))): ?>
<!--    <p>--><?php //echo $errors ?><!--</p>-->
<?php //endif ?>
<!---->
<?php
$identity = $form->get($name = 'identity');
$credential = $form->get($name = 'credential');

$identity->setAttributes(['autocomplete' => 'off']);
$credential->setAttributes(['autocomplete' => 'off']);
//$identity = $form->get($name = 'identity');
//$credential = $form->get($name = 'credential');
//
//$identity->setAttributes(['autocomplete' => 'off']);
//$credential->setAttributes(['autocomplete' => 'off']);
//
//$fcg = $this->formControlGroup()->setIncludeErrors(false);
//echo $fcg->render($identity);
//echo $fcg->render($credential->setLabel("Mot de passe (permet d'authentifier l'identifiant)"));
//?>
<!---->
<?php //echo $this->formElement($form->get('submit')) ?>
<!---->
<?php //echo $this->form()->closeTag() ?>
<!---->

$fcg = $this->formControlGroup()->setIncludeErrors(false);
echo $fcg->render($identity);
echo $fcg->render($credential->setLabel("Mot de passe (permet d'authentifier l'identifiant)"));
<?php
    $fcg = $this->formControlGroup();
    echo $this->form()->openTag($form->prepare()->setAttribute('class', 'mail-confirmation'));
    echo $fcg($form->get('id'));
    echo $fcg($form->get('idIndividu'));
    echo $fcg($form->get('individu'));
    echo $fcg($form->get('email'));
    echo $fcg($form->get('enregistrer'));
    echo $this->form()->closeTag();
?>
 No newline at end of file

<?php echo $this->formElement($form->get('submit')) ?>

<?php echo $this->form()->closeTag() ?>

Loading