diff --git a/webpizza/applipizza/templates/applipizza/base.html b/webpizza/applipizza/templates/applipizza/base.html
index 663fbfa4bf7316ff83bd50d8e8f17f696ff3dc5e..206e37c67250d5b50f24dc35e7930741c333d72d 100644
--- a/webpizza/applipizza/templates/applipizza/base.html
+++ b/webpizza/applipizza/templates/applipizza/base.html
@@ -47,6 +47,9 @@
                     <li class="nav-link">
                         <a href="{% url 'login' %}">Connexion</a>
                     </li>
+                    <li class="nav-link">
+                        <a href="{% url 'register' %}">S'inscrire</a>
+                    </li>
                 {% endif %}
             </ul>
         </nav>
diff --git a/webpizza/applipizza/templates/applipizza/formulaireCreationPizza.html b/webpizza/applipizza/templates/applipizza/formulaireCreationPizza.html
index fc522645713776589551e18bc14292d171eb2e4e..cd87dda7750da53742b6e0254e0034db98c50c1e 100644
--- a/webpizza/applipizza/templates/applipizza/formulaireCreationPizza.html
+++ b/webpizza/applipizza/templates/applipizza/formulaireCreationPizza.html
@@ -25,7 +25,7 @@
         <h2>Ajouter un ingrédient</h2>
         <p>Renseigner le nom de l'ingrédient à ajouter.</p>
 
-        <form method="post" class="form-stacked">
+        <form method="post" enctype="multipart/form-data" class="form-stacked">
             {% csrf_token %}
             {% for field in form %}
                 {% if field.errors %}
diff --git a/webpizza/applipizza/views.py b/webpizza/applipizza/views.py
index ae9f44d2a8200cb138ced67d3de45c0697fe8d2d..aec11c46d8ea4eb0a8296342b7c0ea2f4b709a1b 100644
--- a/webpizza/applipizza/views.py
+++ b/webpizza/applipizza/views.py
@@ -131,7 +131,8 @@ def create_pizza(request):
         form = PizzaForm(request.POST, request.FILES)
         if form.is_valid():
             form.save()
-            return redirect('pizzas')
+            return redirect('home')
+        print(form.errors)
     else:
         form = PizzaForm()
     return render(
diff --git a/webpizza/connexion/forms.py b/webpizza/connexion/forms.py
new file mode 100644
index 0000000000000000000000000000000000000000..f7f297b3cba3a028e9b1631ce093accca9d023ed
--- /dev/null
+++ b/webpizza/connexion/forms.py
@@ -0,0 +1,24 @@
+from django import forms
+from django.contrib.auth.models import User
+
+class UserRegistrationForm(forms.ModelForm):
+    password = forms.CharField(label='Mot de passe', widget=forms.PasswordInput)
+    confirm_password = forms.CharField(label='Confirmer le mot de passe', widget=forms.PasswordInput)
+
+    class Meta:
+        model = User
+        fields = ['username', 'password', 'confirm_password', 'first_name', 'last_name', 'email']
+
+    def clean_confirm_password(self):
+        password = self.cleaned_data.get('password')
+        confirm_password = self.cleaned_data.get('confirm_password')
+        if password and confirm_password and password != confirm_password:
+            raise forms.ValidationError('Les mots de passe ne correspondent pas.')
+        return confirm_password
+
+    def save(self, commit=True):
+        user = super().save(commit=False)
+        user.set_password(self.cleaned_data['password'])
+        if commit:
+            user.save()
+        return user
diff --git a/webpizza/connexion/templates/login.html b/webpizza/connexion/templates/login.html
index 5a0d4e78cdd2112ed225bc8d76343a4551e40067..4a62fcaa50394e49a904619897da7d6352838332 100644
--- a/webpizza/connexion/templates/login.html
+++ b/webpizza/connexion/templates/login.html
@@ -3,7 +3,7 @@
 {% load static %}
 
 {% block title %}
-    Lasri Del Arte - Ajouter un ingrédient
+    Lasri Del Arte - Connexion
 {% endblock %}
 
 {% block content %}
@@ -51,8 +51,8 @@
             {% endfor %}
             <div class="actions">
                 <input type="submit" value="Se connecter" class="btn success">
-                <a href="/forgotten-password" class="btn danger">Mot de passe oublié ?</a>
-                <a href="/register">Pas encore inscrit ?</a>
+                <a href="{% url 'password_reset' %}" class="btn danger">Mot de passe oublié ?</a>
+                <a href="{% url 'register' %}">Pas encore inscrit ?</a>
             </div>
         </form>
     </div>
diff --git a/webpizza/connexion/templates/logout.html b/webpizza/connexion/templates/logout.html
index 38a47758033b9c9370495dd6de62a721d238caf7..663b3700d6e427390caace120ba228f24410cad1 100644
--- a/webpizza/connexion/templates/logout.html
+++ b/webpizza/connexion/templates/logout.html
@@ -3,12 +3,12 @@
 {% load static %}
 
 {% block title %}
-    Lasri Del Arte - Ajouter un ingrédient
+    Lasri Del Arte - Déconnexion
 {% endblock %}
 
 {% block content %}
     <div class="container">
         <h2>Ne partez pas si vite !</h2>
-        <p>Voici 50 % de réduction sur tout ce dont vous n'avez pas besoin ! <a href="/login">Se reconnecter</a></p>
+        <p>Voici 50 % de réduction sur tout ce dont vous n'avez pas besoin ! <a href="{% url 'login' %}">Se reconnecter</a></p>
     </div>
 {% endblock %}
\ No newline at end of file
diff --git a/webpizza/connexion/templates/password-reset-complete.html b/webpizza/connexion/templates/password-reset-complete.html
new file mode 100644
index 0000000000000000000000000000000000000000..641233f0ee157f839c2c044821e2e0fb5bb0702e
--- /dev/null
+++ b/webpizza/connexion/templates/password-reset-complete.html
@@ -0,0 +1,15 @@
+{% extends 'base.html' %}
+
+{% load static %}
+
+{% block title %}
+    Lasri Del Arte - Mot de passe oublié
+{% endblock %}
+
+{% block content %}
+    <div class="container">
+        <h2>Réinitialisation réussie !</h2>
+        <p>Votre mot de passe a été réinitialisé avec succès !</p>
+        <a class="btn success" href="{% url 'login' %}">Retourner à la page de connexion</a>
+    </div>
+{% endblock %}
\ No newline at end of file
diff --git a/webpizza/connexion/templates/password-reset-confirm.html b/webpizza/connexion/templates/password-reset-confirm.html
new file mode 100644
index 0000000000000000000000000000000000000000..37db1014a5888be40ebb4c396116d823ae3934b4
--- /dev/null
+++ b/webpizza/connexion/templates/password-reset-confirm.html
@@ -0,0 +1,88 @@
+{% extends 'base.html' %}
+
+{% load static %}
+
+{% block title %}
+    Lasri Del Arte - Mot de passe oublié
+{% endblock %}
+
+{% block content %}
+    <div class="container">
+        {% if form.non_field_error %}
+            {% if status == 'success' %}
+                <div class="alert-message success" data-alert>
+                    <a class="close" href="#">×</a>
+                    <p><strong>Connecté !</p>
+                </div>
+            {% endif %}
+            {% if form.non_field_error %}
+                {% for error in form.non_field_errors %}
+                    <div class="alert-message error" data-alert>
+                        <a class="close" href="#">×</a>
+                        <p>{{ error }}</p>
+                    </div>
+                {% endfor %}
+            {% endif %}
+        {% endif %}
+        <h2>Mot de passe oublié</h2>
+        <p>Veuillez saisir vote nouveau mot de passe.</p>
+
+        <form method="post" class="form-stacked" id="form_login">
+            {% csrf_token %}
+            {% for field in form %}
+                {% if field.errors %}
+                    <div class="clearfix error">
+                    <label for="{{ field.id_for_label }}">{{ field.label }}</label>
+                    <div class="input">
+                        {{ field }}
+                        <span class="help-inline">
+                                {% for error in field.errors %}
+                                    {{ error }}
+                                {% endfor %}
+                            </span>
+                    </div>
+                {% else %}
+                    <div class="clearfix">
+                        <label for="{{ field.id_for_label }}">{{ field.label }}</label>
+                        <div class="input">
+                            {{ field }}
+                        </div>
+                    </div>
+                {% endif %}
+            {% endfor %}
+            <div class="actions">
+                <input type="submit" value="Se connecter" class="btn success">
+                <a href="{ url 'forgotten-password' }" class="btn danger">Mot de passe oublié ?</a>
+                <a href="{ url 'register' }">Pas encore inscrit ?</a>
+            </div>
+        </form>
+    </div>
+{% endblock %}
+{% block javascripts %}
+    <script type="text/javascript" src="{% static 'applipizza/js/bootstrap-alerts.js' %}"></script>
+    <script type="text/javascript">
+        var form = $('form');
+        var formRequiredFields = form.find('input[required]');
+        var formSubmitButton = form.find('input[type=submit]');
+
+        // We disable form validation
+        form.attr('novalidate', 'novalidate');
+        form.submit(function (e) {
+            formRequiredFields.each(function () {
+                if ($(this).val() == '') {
+                    console.log('empty');
+                    e.preventDefault();
+                    $(this).parent().append('<span class="help-inline">Ce champ est obligatoire</span>');
+                    $(this).parent().parent().addClass('error');
+                } else {
+                    if ($(this).parent().find('span.help-inline').length > 0) {
+                        $(this).parent().find('span.help-inline').remove();
+                        $(this).parent().parent().removeClass('error');
+                    }
+                }
+            });
+        });
+        // We disable the submit button
+        //formSubmitButton.attr('disabled', 'disabled');
+    </script>
+{% endblock %}
\ No newline at end of file
diff --git a/webpizza/connexion/templates/password-reset-done.html b/webpizza/connexion/templates/password-reset-done.html
new file mode 100644
index 0000000000000000000000000000000000000000..24d572d2e03bf15d31ff32bd3b46946090c85513
--- /dev/null
+++ b/webpizza/connexion/templates/password-reset-done.html
@@ -0,0 +1,15 @@
+{% extends 'base.html' %}
+
+{% load static %}
+
+{% block title %}
+    Lasri Del Arte - Mot de passe oublié
+{% endblock %}
+
+{% block content %}
+    <div class="container">
+        <h2>Vérifiez votre boite de réception !</h2>
+        <p>Si l'adresse que vous avez renseigné correspond à celle associée à votre compte, vous allez bientôt recevoir un e-mail de réinitialisation du mot de passe.</p>
+        <a class="btn success" href="{% url 'login' %}">Retourner à la page de connexion</a>
+    </div>
+{% endblock %}
\ No newline at end of file
diff --git a/webpizza/connexion/templates/password-reset-email.html b/webpizza/connexion/templates/password-reset-email.html
new file mode 100644
index 0000000000000000000000000000000000000000..86c19a401947478dee3fd708e3f0b0bdd73bd704
--- /dev/null
+++ b/webpizza/connexion/templates/password-reset-email.html
@@ -0,0 +1,5 @@
+Bonjour,
+Vous avez demandé la réinitialisation de votre mot de passe en indiquant ce courriel {{ email }}.
+
+Cliquez sur le lien ci-dessous pour définir un nouveau mot de passe :
+{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
\ No newline at end of file
diff --git a/webpizza/connexion/templates/password-reset.html b/webpizza/connexion/templates/password-reset.html
new file mode 100644
index 0000000000000000000000000000000000000000..00195cedb0efa7eb15254a900865a0a00e9d869a
--- /dev/null
+++ b/webpizza/connexion/templates/password-reset.html
@@ -0,0 +1,88 @@
+{% extends 'base.html' %}
+
+{% load static %}
+
+{% block title %}
+    Lasri Del Arte - Mot de passe oublié
+{% endblock %}
+
+{% block content %}
+    <div class="container">
+        {% if form.non_field_error %}
+            {% if status == 'success' %}
+                <div class="alert-message success" data-alert>
+                    <a class="close" href="#">×</a>
+                    <p><strong>Connecté !</p>
+                </div>
+            {% endif %}
+            {% if form.non_field_error %}
+                {% for error in form.non_field_errors %}
+                    <div class="alert-message error" data-alert>
+                        <a class="close" href="#">×</a>
+                        <p>{{ error }}</p>
+                    </div>
+                {% endfor %}
+            {% endif %}
+        {% endif %}
+        <h2>Mot de passe oublié</h2>
+        <p>Saisissez votre adresse email dans le formulaire, nous vous enverrons les instructions pour réintiliser votre
+            mot de passe.</p>
+
+        <form method="post" class="form-stacked" id="form_login">
+            {% csrf_token %}
+            {% for field in form %}
+                {% if field.errors %}
+                    <div class="clearfix error">
+                    <label for="{{ field.id_for_label }}">{{ field.label }}</label>
+                    <div class="input">
+                        {{ field }}
+                        <span class="help-inline">
+                                {% for error in field.errors %}
+                                    {{ error }}
+                                {% endfor %}
+                            </span>
+                    </div>
+                {% else %}
+                    <div class="clearfix">
+                        <label for="{{ field.id_for_label }}">{{ field.label }}</label>
+                        <div class="input">
+                            {{ field }}
+                        </div>
+                    </div>
+                {% endif %}
+            {% endfor %}
+            <div class="actions">
+                <input type="submit" value="Changer le mot de passe" class="btn success">
+                <a href="{% url 'login' %}">Retour à la page de connexion</a>
+            </div>
+        </form>
+    </div>
+{% endblock %}
+{% block javascripts %}
+    <script type="text/javascript" src="{% static 'applipizza/js/bootstrap-alerts.js' %}"></script>
+    <script type="text/javascript">
+        var form = $('form');
+        var formRequiredFields = form.find('input[required]');
+        var formSubmitButton = form.find('input[type=submit]');
+
+        // We disable form validation
+        form.attr('novalidate', 'novalidate');
+        form.submit(function (e) {
+            formRequiredFields.each(function () {
+                if ($(this).val() == '') {
+                    console.log('empty');
+                    e.preventDefault();
+                    $(this).parent().append('<span class="help-inline">Ce champ est obligatoire</span>');
+                    $(this).parent().parent().addClass('error');
+                } else {
+                    if ($(this).parent().find('span.help-inline').length > 0) {
+                        $(this).parent().find('span.help-inline').remove();
+                        $(this).parent().parent().removeClass('error');
+                    }
+                }
+            });
+        });
+        // We disable the submit button
+        //formSubmitButton.attr('disabled', 'disabled');
+    </script>
+{% endblock %}
\ No newline at end of file
diff --git a/webpizza/connexion/templates/register.html b/webpizza/connexion/templates/register.html
new file mode 100644
index 0000000000000000000000000000000000000000..f2f315c1ade032a57af5efcbf733a44911b0f922
--- /dev/null
+++ b/webpizza/connexion/templates/register.html
@@ -0,0 +1,86 @@
+{% extends 'base.html' %}
+
+{% load static %}
+
+{% block title %}
+    Lasri Del Arte - Inscription
+{% endblock %}
+
+{% block content %}
+    <div class="container">
+        {% if form.non_field_error %}
+            {% if status == 'success' %}
+                <div class="alert-message success" data-alert>
+                    <a class="close" href="#">×</a>
+                    <p><strong>Inscription réussie !</p>
+                </div>
+            {% endif %}
+            {% if form.non_field_error %}
+                {% for error in form.non_field_errors %}
+                    <div class="alert-message error" data-alert>
+                        <a class="close" href="#">×</a>
+                        <p>{{ error }}</p>
+                    </div>
+                {% endfor %}
+            {% endif %}
+        {% endif %}
+        <h2>Se connecter</h2>
+
+        <form method="post" class="form-stacked" id="form_login">
+            {% csrf_token %}
+            {% for field in form %}
+                {% if field.errors %}
+                    <div class="clearfix error">
+                    <label for="{{ field.id_for_label }}">{{ field.label }}</label>
+                    <div class="input">
+                        {{ field }}
+                        <span class="help-inline">
+                                {% for error in field.errors %}
+                                    {{ error }}
+                                {% endfor %}
+                            </span>
+                    </div>
+                {% else %}
+                    <div class="clearfix">
+                        <label for="{{ field.id_for_label }}">{{ field.label }}</label>
+                        <div class="input">
+                            {{ field }}
+                        </div>
+                    </div>
+                {% endif %}
+            {% endfor %}
+            <div class="actions">
+                <input type="submit" value="S'inscrire" class="btn success">
+                <a href="{% url 'login' %}">Déjà inscrit ?</a>
+            </div>
+        </form>
+    </div>
+{% endblock %}
+{% block javascripts %}
+    <script type="text/javascript" src="{% static 'applipizza/js/bootstrap-alerts.js' %}"></script>
+    <script type="text/javascript">
+        var form = $('form');
+        var formRequiredFields = form.find('input[required]');
+        var formSubmitButton = form.find('input[type=submit]');
+
+        // We disable form validation
+        form.attr('novalidate', 'novalidate');
+        form.submit(function (e) {
+            formRequiredFields.each(function () {
+                if ($(this).val() == '') {
+                    console.log('empty');
+                    e.preventDefault();
+                    $(this).parent().append('<span class="help-inline">Ce champ est obligatoire</span>');
+                    $(this).parent().parent().addClass('error');
+                } else {
+                    if ($(this).parent().find('span.help-inline').length > 0) {
+                        $(this).parent().find('span.help-inline').remove();
+                        $(this).parent().parent().removeClass('error');
+                    }
+                }
+            });
+        });
+        // We disable the submit button
+        //formSubmitButton.attr('disabled', 'disabled');
+    </script>
+{% endblock %}
\ No newline at end of file
diff --git a/webpizza/connexion/urls.py b/webpizza/connexion/urls.py
index 463e06550d0bb93061ddfe01971d340e9cf690bf..30c69caa8754c400432d023f8cf7c09e07504450 100644
--- a/webpizza/connexion/urls.py
+++ b/webpizza/connexion/urls.py
@@ -1,7 +1,7 @@
 from django.contrib import admin
 from django.contrib.auth import views as auth_views
 from django.urls import path
-from applipizza import views
+from connexion import views
 from django.conf import settings  # new
 from django.urls import path, include  # new
 from django.conf.urls.static import static  # new
@@ -10,4 +10,18 @@ urlpatterns = [
     path('admin/', admin.site.urls),
     path('login/', auth_views.LoginView.as_view(template_name="login.html"), name="login"),
     path('logout/', auth_views.LogoutView.as_view(template_name="logout.html"), name="logout"),
+    path('register/', views.register, name='register'),
+    path('forgotten-password/', auth_views.PasswordResetView.as_view(
+        template_name="password-reset.html",
+        email_template_name="password-reset-email.html"
+    ), name="password_reset"),
+    path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
+        template_name="password-reset-confirm.html",
+    ), name="password_reset_confirm"),
+    path('reset/done', auth_views.PasswordResetDoneView.as_view(
+        template_name="password-reset-done.html"
+    ), name="password_reset_done"),
+path('reset/done', auth_views.PasswordResetCompleteView.as_view(
+        template_name="password-reset-complete.html"
+    ), name="password_reset_complete")
 ]
diff --git a/webpizza/connexion/views.py b/webpizza/connexion/views.py
index 91ea44a218fbd2f408430959283f0419c921093e..59b9d1444479dd2d5f42d38288728cc7e66cf822 100644
--- a/webpizza/connexion/views.py
+++ b/webpizza/connexion/views.py
@@ -1,3 +1,12 @@
-from django.shortcuts import render
+from django.shortcuts import render, redirect
+from .forms import UserRegistrationForm
 
-# Create your views here.
+def register(request):
+    if request.method == 'POST':
+        form = UserRegistrationForm(request.POST)
+        if form.is_valid():
+            form.save()
+            return redirect('home')
+    else:
+        form = UserRegistrationForm()
+    return render(request, 'register.html', {'form': form})
diff --git a/webpizza/webpizza/settings.py b/webpizza/webpizza/settings.py
index 757e1c164d02da7b47a641b1e82a2d40d6e85f23..99a2858a7a0ecea0e33db260f6a16f16446668af 100644
--- a/webpizza/webpizza/settings.py
+++ b/webpizza/webpizza/settings.py
@@ -129,4 +129,5 @@ STATIC_URL = 'static/'
 DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
 MEDIA_ROOT = BASE_DIR/'media'
 MEDIA_URL = '/media/'
-LOGIN_REDIRECT_URL = "home"
\ No newline at end of file
+LOGIN_REDIRECT_URL = "home"
+EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
\ No newline at end of file