Commit 4a045453 authored by martin's avatar martin
Browse files

rewrote index+password forgot

parent f5c7a619
<!DOCTYPE html>
<html lang="fr">
<body>
<h2 style="text-align: center;">Conditions générales d'utilisation de VIKAZIMUT</h2>
<p>Les présentes conditions générales d’utilisation ont pour objet de définir les modalités et conditions dans lesquelles
VIKAZIMUT met à disposition son application mobile au bénéfice de l’utilisateur.
En utilisant l’application mobile de VIKAZIMUT, l’utilisateur accepte sans réserve l’ensemble des présentes dispositions.</p>
<h2>Article 1&nbsp;: Description de l’application</h2>
<p>L’application mobile a pour objectif de faciliter la pratique de la course d’orientation.
Elle remplace la carte papier, la boussole et le poinçon de
validation des points de contrôle.</p>
<p>Un parcours d'orientation consiste en une suite de points de contrôle matérialisés sur le terrain par une balise type fédération internationale de
course d’orientation (IOF) contenant en plus un QR Code et tag NFC. L’utilisateur utilise l’application pour se repérer à partir de la carte et valider son passage aux points de contrôle avec le lecteur QR Code ou le lecteur NFC.</p>
<p>L’application affiche en fin du parcours des statistiques sur la réalisation du parcours : le temps total, le temps intermédiaire entre chaque balise
et le tracé du parcours réalisé sur la carte.</p>
<p>L’application se présente sous deux modes : un mode course où l’orienteur n’est pas aidé pour sa localisation et un mode promenade où l’orienteur est
positionné sur la carte en temps réel.</p>
<h2>Article 2&nbsp;: Protection des données</h2>
<p>Conformément à la loi Informatique et Libertés n° 78-17 du 6 janvier 1978, aucune information personnelle autre que la date et la localisation ne
seront utilisées par cette application.</p>
<p>En application de la loi Informatique et Libertés n° 78-17 du 6 janvier 1978 modifiée, l’utilisateur dispose d’un droit d’accès, de modification, de
rectification, d’opposition et de suppression sur les données le concernant collectées sur cette application. Ces droits sont strictement personnels et ne peuvent être exercés que par l’utilisateur pour les données le concernant, ou
concernant un autre utilisateur dont il est le représentant légal.</p>
<h2> Article 3&nbsp;: Responsabilité</h2>
<p>En utilisant l’application VIKAZIMUT, l’utilisateur déclare dégager de toute responsabilité l’application VIKAZIMUT en cas d’incident de toute nature
ayant lieu sur les parcours présents et à venir, qu’ils soient chronométrés ou non, proposés par l’application, et ce, à l’égard de lui-même ou d’un tiers.</p>
<h2> Article 4&nbsp;: Respect des normes existantes</h2>
<p>L’utilisateur s’engage à respecter le code de la route et toutes les autres réglementations en vigueur sur l’ensemble des parcours. </p>
<h2> Article 5&nbsp;: Non contre-indication médicale</h2>
<p>L’utilisateur déclare ne présenter aucune contre-indication médicale à la pratique de la course d’orientation.</p>
<h2> Article 6&nbsp;: Disposition spécifique aux mineurs</h2>
<p>L’utilisateur mineur (de moins de 18 ans révolus) certifie avoir l’autorisation de son responsable légal pour utiliser la présente application ainsi
qu’être accompagné d’une personne majeure lors de l’utilisation.</p>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<body>
<h2 style="text-align: center;">General Conditions of Use of VIKAZIMUT</h2>
<p>These terms and conditions are intended to define the terms and conditions under which VIKAZIMUT makes available its mobile application for the benefit of the user. By
using the mobile application VIKAZIMUT, the user accepts without limitation all these terms of use.</p>
<h2>Article 1 : Description of the application</h2>
<p>The mobile application aims to facilitate the practice of orienteering. It replaces the map, the compass and the control card.</p>
<p>An orienteering course is composed of a start point, a series of control points, and a finish point. Controls are marked with a white and orange flag that contains an NFC and QR Code. The orienteer
uses the application to find their way using the map and uses the QR Code or NFC readers to validate the control points.</p>
<p>The application displays at the end of the course some statistics about the completion of the course: the total time, the split time and the trace of the course on the map.</p>
<p>The application comes in two modes: a race mode where the orienteer is not helped for his position and a walk mode where the orienteer is positioned on the map in real time.</p>
<h2>Article 2 : Data protection</h2>
<p>In accordance with the french law “Informatique et Libertés” 78-17 of January 6, 1978, no personal information other than the date and the location will be used by this application.</p>
<p>In application of the french law “Informatique et Libertés” 78-17 of January 6th, 1978 modified, the user has a right of access, modification, rectification, opposition and suppression on the data
concerning him collected on this application. These rights are strictly personal and can only be exercised by the user for data concerning him, or concerning another user of which he is the legal representative.</p>
<h2>Article 3 : Liability</h2>
<p>By using the application VIKAZIMUT, the user declares to release of any responsibility the application VIKAZIMUT in the event of any incident taking place on the present and future courses, whether
timed or not, proposed by the application, and this, with respect to himself or a third party.</p>
<h2>Article 4 : Respect for existing standards</h2>
<p>The user agrees to respect the rules of the road and all other regulations in effect along the courses.</p>
<h2>Article 5 : Medical contraindications</h2>
<p>The user declares that he has no medical contraindications to the practice of orienteering.</p>
<h2>Article 6 : Specific provision for minors</h2>
<p>The minor users (under 18 years old) certify having the authorization from their parents or legal guardians to use the application as well as to be accompanied by a major person during the course.</p>
</body>
</html>
\ No newline at end of file
......@@ -6,6 +6,15 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use App\Form\PlannerType;
use App\Entity\User;
use App\Modele\CreateUser;
class SecurityController extends AbstractController
{
......@@ -33,4 +42,38 @@ class SecurityController extends AbstractController
{
throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
}
/**
* @Route("/password-forgot", name="password_forgot")
*/
public function password_forgot(Request $request, TranslatorInterface $translator,
UserPasswordEncoderInterface $encoder, \Swift_Mailer $mailer){
$form = $this->createFormBuilder()
->add('username', TextType::class, ['label' => 'your.username'])
->add('save', SubmitType::class, ['label' => 'submit'])
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$username = $form->getData()["username"];
$user = $this->getDoctrine()->getRepository(User::class)->findOneBy(['username' => $username]);
if($user){
$creator = new CreateUser($user, $translator);
$creator->forgotPassword($encoder, $this->getDoctrine()->getManager());
$creator->sendEmail($mailer, false);
return $this->redirectToRoute('all_planners');
}else{
return $this->render('security/password_forgot.html.twig', [
'form' => $form->createView(),
'error' => $valid,
]);
}
}
return $this->render('security/password_forgot.html.twig', [
'form' => $form->createView(),
]);
}
}
......@@ -58,10 +58,25 @@ class CreateUser{
}
}
public function sendEmail(\Swift_Mailer $mailer){
$body = "Bonjour,\nVotre inscription au site vikazimut en tant que traceur a étais accepté.\n".
"Votre nom d'utilisateur: ".$this->user->getUsername()."\n".
"Votre mot de passe provisoire: ".$this->plainPassword."\n".
public function forgotPassword(UserPasswordEncoderInterface $encoder, EntityManagerInterface $em){
$this->plainPassword = self::generatePassword();
$encoded = $encoder->encodePassword($this->user, $this->plainPassword);
$this->user->setPassword($encoded);
$em->persist($this->user);
$em->flush();
}
public function sendEmail(\Swift_Mailer $mailer, $new){
if($new){
$body = "Bonjour,\nVotre inscription au site vikazimut en tant que traceur a étais accepté.\n".
"Votre nom d'utilisateur: ".$this->user->getUsername()."\n";
}else{
$body = "Bonjour ".$this->user->getUsername()."\n".
"Votre mot de passe à étais réinitialiser\n";
}
$body .= "Votre mot de passe provisoire: ".$this->plainPassword."\n".
"Merci de ne pas répondre à ce mail";
$message = (new \Swift_Message("Vikazimut"))
->setFrom("noreply@vikazimut.vikazim.fr")
......
......@@ -40,6 +40,11 @@
<li class="nav-item">
<a class="nav-link active" href="{{ path('your_courses') }}">{% trans %}your.courses{% endtrans %}</a>
</li>
{% if is_granted('ROLE_ADMIN') %}
<li class="nav-item">
<a class="nav-link active" href="{{ path('all_planners') }}">{% trans %}the.planners{% endtrans %}</a>
</li>
{%endif %}
{% endif %}
<li class="nav-item active">
<a class="nav-link" href="{{ path('home') }}#team ">{% trans %}us{% endtrans %}</a>
......@@ -49,6 +54,7 @@
</li>
</ul>
{% if app.user %}
<a class="btn btn-outline-light mr-2" href="{{ path('app_login') }}">{% trans %}your.info{% endtrans %}</a>
<a class="btn btn-light mr-2" href="{{ path('app_logout') }}">{% trans %}log.out{% endtrans %}</a>
{% else %}
<a class="btn btn-outline-light mr-2" href="{{ path('app_login') }}">{% trans %}log.in{% endtrans %}</a>
......
......@@ -7,29 +7,85 @@
#banner {
background-position: center center;
background-size: cover;
font-size: 20px;
height: 28em;
text-align: center;
position: relative;
}
#banner header {
background-color: rgba(0, 0, 0, 0.6);
position: absolute;
bottom: 0;
width: 100%;
text-align: center;
padding-top: 1em;
}
#banner h1 {
color: var(--primary);
}
/* Wide */
@media screen and (max-width: 1680px) {
#banner {
height: 24em;
}
}
@media screen and (max-width: 1280px) {
#banner {
height: 20em;
}
}
@media screen and (max-width: 980px) {
body {
font-size: 12pt;
}
}
@media screen and (max-width: 840px) {
html, body {
overflow-x: hidden;
}
#banner {
height: 20em;
}
}
/* Mobile */
@media screen and (max-width: 736px) {
#banner {
height: 18em;
}
}
/* Mobile (Portrait) */
@media screen and (max-width: 480px) {
#banner {
height: 16em;
}
}
</style>
{% endblock %}
{% block body %}
<section id="banner" style="background-image: url({{ asset('public/images/banner.jpg') }})">
<section id="banner" style="background-image: url({{ asset('/public/images/banner.jpg')}})">
<header>
<h1 class="mbr-section-title align-center mbr-bold pb-6 mbr-fonts-style display-4">VIKAZIMUT</h1>
</header>
</section>
<main role="main">
<div class="jumbotron" style="background-color: #FFFFFF;">
<div class="container">
<h1 class="display-3">Vikazimut</h1>
<h2>Application de course d'orientation</h2>
<section class="hero-area" id="home">
<div class="container">
<div class="row">
<div class="col-lg-7">
<div class="hero-area-content">
<p>Vikazimut est une application Android qui permet de réaliser des courses d'orientation
sur des parcours en pleine nature équipés de balises NFC/Qrcode et répertoriés sur ce serveur.
en autonomie sur des parcours en pleine nature équipés de balises NFC/Qrcode et répertoriés sur ce serveur.
L'application fournit la carte du parcours proposé,
et enregistre la trace GPS et les temps de passage aux balises.
Ces données peuvent ensuite être envoyées au serveur pour une analyse du parcours réalisé
......@@ -38,13 +94,24 @@
<button type="button" class="btn btn-outline-primary">Télécharger sur Google Play &raquo;</button>
</a>
</div>
<div class="hero-area-content" style="padding-top: 50pt">
<h1 class="display-5">Libre, Gratuit et Source ouvert</h1>
<p>L'application Android et le serveur Web sont entièrement développés sous licence libre <a href="https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_limit%C3%A9e_GNU">LGPL</a>.
</p>
<a href="https://gitlab.ecole.ensicaen.fr/rclouard/vikazimut">
<button type="button" class="btn btn-outline-primary">Accès au code source &raquo;</button>
</a>
<div class="row" style="padding-top: 50px">
<div class="col-lg-6">
<h3 class="display-">Gratuite, libre et à code source ouvert</h3>
<p>L'application Android et le serveur Web sont entièrement développés sous licence libre <a href="https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_limit%C3%A9e_GNU">LGPL</a>.
</p>
<a href="https://gitlab.ecole.ensicaen.fr/rclouard/vikazimut">
<button type="button" class="btn btn-outline-primary">Accès au code source &raquo;</button>
</a>
</div>
<div class="col-lg-6">
<h3 class="display-5">Règles de confidentialité et conditions d’utilisation</h3>
<p>Aucune donnée personnelle n'est enregistrée ni échangée avec l'application.
Seule la trace GPS anonymisée peut être envoyée au serveur à l'initiative de l'utilisateur.</p>
<a href="/public/Conditions-generales-utilisation.html">
<button type="button" class="btn btn-outline-primary">Les conditions d'utilisation &raquo;</button>
</a>
</div>
</div>
</div>
<div class="col-lg-5">
......@@ -58,10 +125,9 @@
</div>
</div>
</main>
<div class="jumbotron" style="background-color:#ffe6db" id="team">
<div class="container">
<h1 class="display-3">Qui sommes nous ?</h1>
<h2>Qui sommes nous ?</h2>
<p>
Vikazimut est un projet d'étudiants en informatique de l'ENSICAEN et de l'université de Caen Normandie.
Le projet répond à une demande de l'association Vik'Azim visant la réalisation d'une application Android pour la pratique
......@@ -70,7 +136,6 @@
<p>
Quatre promotions d'étudiants de l'ENSICAEN se sont relayés pour finaliser l'application Android.
</p>
<section class="about-area ptb-90">
<div class="container">
<div class="row">
......@@ -97,7 +162,6 @@
<li>Yann PELLEGRINI
<li>Elodie PROUX
</ul>
</div>
</div>
<div class="col-lg-3">
......@@ -111,7 +175,6 @@
<li>Loïc PETIT
<li>Clément PODEVIN
</ul>
</div>
</div>
<div class="col-lg-3">
......@@ -127,17 +190,15 @@
</div>
</div>
<div class="row">
<p>Le présent serveur Web de l'application a été réalisé par Martin FÉAUX DE LACROIX au cours de son stage de licence informatique de l'université de Caen Normandie en 2020.</p>
<p>Le serveur Web de l'application a été réalisé par Martin FÉAUX DE LA CROIX au cours de son stage de licence informatique de l'université de Caen Normandie en 2020.</p>
</div>
<div class="row">
<p>Les tuteurs&nbsp;: Alain Lebret, Régis Clouard, Eric Pigeon, François Rioult.</p>
</div>
</div>
</section>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
......@@ -164,5 +225,4 @@
</div>
<hr>
</div>
{% endblock %}
......@@ -9,7 +9,7 @@
<div id="login-column" class="col-md-6">
<div id="login-box" class="col-md-12">
<form id="login-form" class="form" action="" method="post">
<h3 class="text-center text-primary" style="padding-bottom: 30pt">Accès au mode traceur</h3>
<h3 class="text-center text-primary" style="padding-bottom: 30pt">Se connecter</h3>
{% if error %}
<div class="alert alert-danger">
{{ error.messageKey|trans(error.messageData, 'security') }}
......@@ -38,7 +38,7 @@
<input type="submit" class="btn btn-primary btn-md" value="Connexion">
</div>
<div id="register-link" class="text-right">
<a href="#" class="text-primary">Changer le mot de passe</a>
<a href="{{path('password_forgot')}}" class="text-primary">{%trans%}reinit.password{%endtrans%}</a>
</div>
{% endif %}
</form>
......
{% extends 'base.html.twig' %}
{% block title %}{% trans %}password.forgot{% endtrans %}{% endblock %}
{% block body %}
<div class="container" style="padding-top: 100pt">
<h1>{% trans %}reinit.your.password{% endtrans %}</h1>
{% if error is defined %}
<p class="alert alert-danger">{{error}}</p>
{% endif %}
{{form(form)}}
</div>
{% endblock %}
<h1>Your lucky number is {{ number }}</h1>
\ No newline at end of file
Markdown is supported
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