Commit b726d542 authored by François Agneray's avatar François Agneray
Browse files

Validation email => DONE

parent a574d21f
......@@ -11,6 +11,10 @@ $container[App\Action\VerifEmailAction::class] = function ($c) {
return new App\Action\VerifEmailAction($c->get('view'), $c->get('logger'), $c->get('em'));
};
$container[App\Action\ValidEmailAction::class] = function ($c) {
return new App\Action\ValidEmailAction($c->get('view'), $c->get('logger'), $c->get('em'));
};
$container[App\Action\ProgrammeAction::class] = function ($c) {
return new App\Action\ProgrammeAction($c->get('view'), $c->get('logger'));
};
......
......@@ -4,6 +4,7 @@ $app->get('/', App\Action\HomeAction::class)
->setName('homepage');
$app->get('/verif-email', App\Action\VerifEmailAction::class);
$app->get('/valid-email', App\Action\ValidEmailAction::class);
$app->get('/programme', App\Action\ProgrammeAction::class)
->setName('programme');
......
......@@ -113,7 +113,7 @@ final class InscriptionAction
$response = $response->write(implode(PHP_EOL, $messages))->withStatus($code);
} else {
$participant = $this->createParticipant($parsedBody, $organisme);
// $this->sendEmail($participant->getEmail(), $participant->setCleEmail());
$this->sendEmail($request, $participant->getEmail(), $participant->getCleEmail());
$response = $response->write('Nouvel utilisateur enregistré')->withStatus(201);
}
}
......@@ -354,12 +354,24 @@ final class InscriptionAction
}
}
private function sendEmail($email, $key)
private function sendEmail($request, $email, $cleEmail)
{
$url = $request->getUri()->getScheme() . '://' . $request->getUri()->getHost();
if ($request->getUri()->getPort() != 80) {
$url .= ':' . $request->getUri()->getPort();
}
$url .= '/valid-email?email=' . $email . '&key=' . $cleEmail;
$body = 'Votre adresse e-mail est : ' . $email . PHP_EOL;
$body .= 'Votre clé d\'activation est : ' . $cleEmail . PHP_EOL;
$body .= 'Pour activer votre compte vous devez valider votre adresse e-mail : ' . PHP_EOL;
$body .= ' - soit en cliquant sur le lien suivant ' . $url . PHP_EOL;
$body .= ' - soit en vous rendant dans la page de validation de l\'adresse e-mail sur le site web';
$message = \Swift_Message::newInstance('Bienvenue')
->setFrom(['contact@jdev2017.fr' => 'jdev2017.fr'])
->setTo([$email])
->setBody('Voici votre clé d\'activation : ' . $key);
->setBody($body);
$this->mailer->send($message);
}
......
<?php
namespace App\Action;
use Slim\Views\Twig;
use Psr\Log\LoggerInterface;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
final class ValidEmailAction
{
private $view;
private $logger;
private $em;
public function __construct(Twig $view, LoggerInterface $logger, EntityManagerInterface $em)
{
$this->view = $view;
$this->logger = $logger;
$this->em = $em;
}
public function __invoke(Request $request, Response $response, $args)
{
$this->logger->info("Valid email action dispatched");
$bool = 'false';
$params = $request->getQueryParams();
if (isset($params['key']) && isset($params['email'])) {
$participant = $this->em->getRepository('App\Entity\Participant')->findOneBy(array('email' => $params['email']));
if (isset($participant) && $participant->getCleEmail() == $params['key']) {
$bool = 'true';
$participant->setEmailValide(true);
$this->em->flush();
$this->view->render($response, 'connexion.twig', [
'page' => 'connexion',
'info' => 'Adresse e-mail validé. Vous pouvez maintenant vous connecter'
]);
} else {
$this->view->render($response, 'valid_email.twig', [
'page' => 'valid_email',
'info' => 'Mauvais couple email/clé'
]);
}
} else {
$this->view->render($response, 'valid_email.twig', [
'page' => 'valid_email'
]);
}
return $response;
}
}
......@@ -11,6 +11,7 @@ final class VerifEmailAction
{
private $view;
private $logger;
private $em;
public function __construct(Twig $view, LoggerInterface $logger, EntityManagerInterface $em)
{
......
......@@ -3,6 +3,7 @@
{% block title %}Participant{% endblock %}
{% block content %}
<div class="container">
<!--
<nav class="hidden-xs hidden-sm navbar-dashboard">
<h3 class="navbar-dashboard-item-title">Dashboard Menu</h3>
<ul class="navbar-dashboard-item-list">
......@@ -17,6 +18,7 @@
</li>
</ul>
</nav>
-->
{% block content_dashboard %}{% endblock %}
</div>
{% endblock %}
......@@ -3,6 +3,7 @@
{% block title %}Admin{% endblock %}
{% block content %}
<div class="container">
<!--
<nav class="hidden-xs hidden-sm navbar-dashboard">
<h3 class="navbar-dashboard-item-title">Dashboard ADMIN Menu</h3>
<ul class="navbar-dashboard-item-list">
......@@ -30,6 +31,7 @@
</ul>
</nav>
-->
{% block content_dashboard_admin %}{% endblock %}
</div>
{% endblock %}
......@@ -5,6 +5,7 @@
<div class="container">
<h2 class="text-center">Connexion</h2>
<hr>
<p class="text-center" style="color: red;">{{ info }}</p>
<div class="row sign-in">
<div class="col-xs-10 col-sm-8 col-md-5 sign-in-form">
<form id="connexionForm" role="form" data-toggle="validator">
......@@ -25,7 +26,8 @@
<div class="row sign-in">
<div class="col-xs-10 col-sm-8 col-md-5 sign-in-form">
Mot de passe oublié ? <a href="new-passwd"> Nouveau mot de passe</a>
Mot de passe oublié ? <a href="new-passwd"> Nouveau mot de passe</a><br>
Valider votre E-mail <a href="valid-email"> Valider votre adresse E-mail</a><br>
</div>
</div>
</div>
......
......@@ -30,6 +30,11 @@
<li>les documents fournis, les goodies,</li>
<li>les pauses-café, les buffets du midi, le concert et le buffet dînatoire du mercredi soir.</li>
</ul>
<hr>
<p><i class="fa fa-calendar"></i> <i>Ouverture des inscriptions aux ateliers
à partir du 30 avril 2017</i>
</p>
</div>
</div>
{% endblock %}
\ No newline at end of file
{% extends "base.twig" %}
{% block title %}Contact{% endblock %}
{% block content %}
<div class="container">
<h2><i class="fa fa-envelope-square"></i> Validation de l'adresse E-Mail</h2>
<hr>
<div class="row">
<div class="col-md-12">
<p>Féliciation vous venez de vous enregistrer aux JDEV2017 !</p>
<p>
Pour pouvoir vous connecter à l'espace participant et recevoir les e-mails d'informations, vous devez
tout d'abord valider votre adresse email :
<ul>
<li>Soit en cliquant sur le lien que vous avez reçu dans le mail de confirmation d'inscription.</li>
<li>
Soit en remplissant le formulaire ci-dessous avec votre adresse e-mail + la clé d'activation que vous
trouverez dans le mail de confirmation d'inscription.
</li>
</ul>
</p>
<p>
Dans le cas ou vous ne recevez pas le mail de confirmation d'inscription, veuillez contacter jdev2017-inscription@devlog.cnrs.r en
indiquant votre nom, prénom et adresse email pour que nous puissions valider avec vous les informations et ainsi valider votre compte participant.
</p>
</div>
</div>
<hr>
<div class="row">
<div class="col-md-8">
<h4><i class="fa fa-sign-in"></i> Formulaire de validation de l'adrese E-mail</h4>
<p class="text-center" style="color: red;">{{ info }}</p>
<form method="GET" action="valid-email">
<div class="form-group">
<label for="email">E-Mail</label> <span style="color: red;">*</span>
<input type="text" class="form-control" name="email" id="email" placeholder="E-mail" required>
</div>
<div class="form-group">
<label for="key">Clé d'activation</label> <span style="color: red;">*</span>
<input type="text" class="form-control" name="key" id="key" placeholder="Clé d'activation" required>
</div>
<button type="submit" id="btn-valid-email-submit" class="btn btn-primary" value="Envoyer">Valider E-mail</button>
</form>
</div>
</div>
</div>
{% endblock %}
......@@ -110,7 +110,7 @@ $(document).ready(function() {
type: 'POST',
data: form.serialize(),
success: function(text) {
document.location.href = 'connexion';
document.location.href = 'valid-email';
},
error: function() {
alert('Votre inscription n\'a pas pu être effectuée!');
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment