diff --git a/site_tps/settings.py b/site_tps/settings.py
index 970eee0..83b6128 100644
--- a/site_tps/settings.py
+++ b/site_tps/settings.py
@@ -127,3 +127,6 @@ STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')
+
+LOGIN_REDIRECT_URL = "/"
+LOGOUT_REDIRECT_URL = "/"
diff --git a/templates/base.html b/templates/base.html
index e897fa2..8da159d 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -13,6 +13,14 @@
{% include 'nav_bar.html' %}
+ {% for message in messages %}
+
+ {{message}}
+
+
+ {% endfor %}
{% block content %}{% endblock %}
diff --git a/templates/nav_bar.html b/templates/nav_bar.html
index fb8a1ea..0cf3bac 100644
--- a/templates/nav_bar.html
+++ b/templates/nav_bar.html
@@ -23,14 +23,18 @@
{{request.user}}
{% else %}
- Connexion(current)
+ Connexion(current)
+
+ Inscription(current)
+
+
{% endif %}
diff --git a/users/templates/users/profile.html b/users/templates/users/profile.html
new file mode 100644
index 0000000..4ea233b
--- /dev/null
+++ b/users/templates/users/profile.html
@@ -0,0 +1,11 @@
+{% extends 'base.html' %}
+{% load bootstrap4 %}
+
+{% block content %}
+{{form.instance.username}}
Changer de mot de passe
+
+{% endblock %}
diff --git a/users/urls.py b/users/urls.py
index 967f8e2..9941870 100644
--- a/users/urls.py
+++ b/users/urls.py
@@ -5,6 +5,10 @@ from .views import (
CreateSchool,
EditSchool,
DeleteSchool,
+ Login,
+ Logout,
+ PasswordChange,
+ Profile,
)
app_name = 'users'
@@ -14,11 +18,31 @@ urlpatterns = [
CreateUser.as_view(),
name='new-user'
),
+ path(
+ 'login',
+ Login.as_view(),
+ name='login'
+ ),
+ path(
+ 'logout',
+ Logout.as_view(),
+ name='logout',
+ ),
+ path(
+ 'change_password',
+ PasswordChange.as_view(),
+ name='change-password'
+ ),
path(
'user//set_school',
CreateUserProfile.as_view(),
name='create-userprofile'
),
+ path(
+ 'user/',
+ Profile.as_view(),
+ name='profile',
+ ),
path(
'school/new',
CreateSchool.as_view(),
diff --git a/users/views.py b/users/views.py
index 3c9dd1e..f2d0318 100644
--- a/users/views.py
+++ b/users/views.py
@@ -1,5 +1,8 @@
from django.contrib.auth.models import User, Group
from django.views.generic import CreateView, UpdateView, DeleteView
+from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView
+from django.contrib.auth.hashers import make_password
+from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse, reverse_lazy
from django.shortcuts import get_object_or_404
@@ -29,6 +32,34 @@ class CreateUser(CreateView):
context['validate'] = "S'inscrire"
return context
+ def form_valid(self, form):
+ r = super().form_valid(form)
+ self.object.set_password(form.cleaned_data['password'])
+ self.object.save()
+ return r
+
+class Profile(UpdateView):
+ model = User
+ template_name = 'users/profile.html'
+ fields = [
+ 'username',
+ 'first_name',
+ 'last_name',
+ 'email'
+ ]
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context['title'] = self.object.username
+ context['validate'] = "Modifier"
+ return context
+
+ def get_success_url(self):
+ return reverse(
+ 'users:reset_password',
+ kwargs={'pk': self.object.pk}
+ )
+
class CreateUserProfile(CreateView):
model = UserProfile
@@ -84,3 +115,25 @@ class EditSchool(UpdateView):
class DeleteSchool(DeleteView):
model = Group
+
+class Logout(SuccessMessageMixin, LogoutView):
+ success_message = "Vous vous êtes bien déconnecté."
+
+
+class Login(SuccessMessageMixin, LoginView):
+ template_name = "edit.html"
+ success_message = "Bienvenue !"
+ extra_context = {
+ 'title' : "Connexion",
+ 'validate' : "Se connecter",
+ }
+
+
+class PasswordChange(SuccessMessageMixin, PasswordChangeView):
+ template_name = "edit.html"
+ success_url = reverse_lazy("home")
+ success_message = "Le mot de passe a été changé."
+ extra_context = {
+ 'title' : "Changer le mot de passe",
+ 'validate' : "Changer",
+ }