diff --git a/apps/member/urls.py b/apps/member/urls.py index faadf97d..d4e3e6af 100644 --- a/apps/member/urls.py +++ b/apps/member/urls.py @@ -18,7 +18,7 @@ urlpatterns = [ path('user/',views.UserListView.as_view(),name="user_list"), path('user/',views.UserDetailView.as_view(),name="user_detail"), path('user//update',views.UserUpdateView.as_view(),name="user_update_profile"), - path('generate-auth-token/', views.GenerateAuthTokenView.as_view(), name='generate_auth_token'), + path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'), # API for the user autocompleter path('user/user-autocomplete',views.UserAutocomplete.as_view(),name="user_autocomplete"), diff --git a/apps/member/views.py b/apps/member/views.py index 19b04992..f8f8ec2d 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -5,7 +5,7 @@ from dal import autocomplete from django.contrib.auth.mixins import LoginRequiredMixin from django.utils.translation import gettext_lazy as _ -from django.views.generic import CreateView, ListView, DetailView, UpdateView, TemplateView +from django.views.generic import CreateView, ListView, DetailView, UpdateView, RedirectView, TemplateView from django.contrib.auth.models import User from django.urls import reverse_lazy from django.db.models import Q @@ -140,20 +140,21 @@ class UserListView(LoginRequiredMixin,SingleTableView): return context -class GenerateAuthTokenView(LoginRequiredMixin, TemplateView): +class ManageAuthTokens(LoginRequiredMixin, TemplateView): """ - Génère un jeton d'authentification pour un utilisateur et détruit l'ancien + Affiche le jeton d'authentification, et permet de le regénérer """ - template_name = "member/generate_auth_token.html" + model = Token + template_name = "member/manage_auth_tokens.html" - def get_context_data(self): - context = super().get_context_data() + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) - if Token.objects.filter(user=self.request.user).exists(): + if 'regenerate' in self.request.GET and Token.objects.filter(user=self.request.user).exists(): Token.objects.get(user=self.request.user).delete() - token = Token.objects.create(user=self.request.user) - context['token'] = token.key + context['token'] = Token.objects.get_or_create(user=self.request.user)[0] + return context class UserAutocomplete(autocomplete.Select2QuerySetView): diff --git a/templates/member/generate_auth_token.html b/templates/member/generate_auth_token.html deleted file mode 100644 index 22ff55fc..00000000 --- a/templates/member/generate_auth_token.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "base.html" %} -{% load i18n static pretty_money django_tables2 %} - -{% block content %} - Jeton : {{ token }} - -
- Conservez bien précieusement ce jeton d'authentification, car il ne vous sera jamais donné de nouveau. - Revenir sur cette page aura pour conséquence de révoquer tout ancien jeton d'authentification. - Cela peut entre autres mener à des plantages d'autres applications qui pouvaient utiliser ce jeton. -
- -
-

À quoi sert ce jeton ?

- - Ce jeton vous permet de vous connecter à l'API de la Note Kfet. - Il suffit pour cela d'ajouter en en-tête de vos requêtes Authorization: Token <TOKEN> - pour pouvoir vous identifier. - - Une documentation de l'API arrivera ultérieurement. -
-{% endblock %} diff --git a/templates/member/manage_auth_tokens.html b/templates/member/manage_auth_tokens.html new file mode 100644 index 00000000..4f992915 --- /dev/null +++ b/templates/member/manage_auth_tokens.html @@ -0,0 +1,27 @@ +{% extends "base.html" %} +{% load i18n static pretty_money django_tables2 %} + +{% block content %} +
+

À quoi sert un jeton d'authentification ?

+ + Un jeton vous permet de vous connecter à l'API de la Note Kfet.
+ Il suffit pour cela d'ajouter en en-tête de vos requêtes Authorization: Token <TOKEN> + pour pouvoir vous identifier.

+ + Une documentation de l'API arrivera ultérieurement. +
+ +
+ {%trans 'Token' %} : {{ token.key }}
+ {%trans 'Created' %} : {{ token.created }} +
+ +
+ Attention : regénérer le jeton va révoquer tout accès autorisé à l'API via ce jeton ! +
+ + + + +{% endblock %} diff --git a/templates/member/profile_detail.html b/templates/member/profile_detail.html index 7a253f1f..dbf7075b 100644 --- a/templates/member/profile_detail.html +++ b/templates/member/profile_detail.html @@ -23,7 +23,9 @@
{{ object.user.note.balance | pretty_money }}
- {% trans 'Generate auth token' %} + {% if object.user.pk == user.pk %} + {% trans 'Manage auth token' %} + {% endif %} {% trans 'Update Profile' %} {% trans 'Change password' %}