2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-18 13:05:42 +00:00

reimplement session ending

This commit is contained in:
Matthias Mair
2024-06-26 12:10:09 +02:00
parent 42b3f0c453
commit 8fad7b1e1f
3 changed files with 22 additions and 7 deletions

View File

@ -47,6 +47,7 @@ from .views import (
AppearanceSelectView, AppearanceSelectView,
CustomConnectionsView, CustomConnectionsView,
CustomEmailView, CustomEmailView,
CustomListUserSessionsView,
CustomLoginView, CustomLoginView,
CustomPasswordResetFromKeyView, CustomPasswordResetFromKeyView,
DatabaseStatsView, DatabaseStatsView,
@ -356,6 +357,12 @@ classic_frontendpatterns = [
path('about/', AboutView.as_view(), name='about'), path('about/', AboutView.as_view(), name='about'),
path('stats/', DatabaseStatsView.as_view(), name='stats'), path('stats/', DatabaseStatsView.as_view(), name='stats'),
# Single Sign On / allauth # Single Sign On / allauth
path(
'accounts/sessions/',
view=CustomListUserSessionsView.as_view(),
name='usersessions_list',
),
path('accounts/', include('allauth.urls')),
# overrides of urlpatterns # overrides of urlpatterns
path('accounts/email/', CustomEmailView.as_view(), name='account_email'), path('accounts/email/', CustomEmailView.as_view(), name='account_email'),
path( path(
@ -392,21 +399,19 @@ frontendpatterns = []
if settings.ENABLE_CLASSIC_FRONTEND: if settings.ENABLE_CLASSIC_FRONTEND:
frontendpatterns += classic_frontendpatterns frontendpatterns += classic_frontendpatterns
# Add auth
frontendpatterns += [
path('accounts/', include('allauth.urls')) # Always needed as we need providers
]
if settings.ENABLE_PLATFORM_FRONTEND: if settings.ENABLE_PLATFORM_FRONTEND:
frontendpatterns += platform_urls frontendpatterns += platform_urls
if not settings.ENABLE_CLASSIC_FRONTEND: if not settings.ENABLE_CLASSIC_FRONTEND:
# Add a redirect for login views # Add a redirect for login views
frontendpatterns += [ frontendpatterns += [
path(
'accounts/', include('allauth.urls')
), # Still needed for provider login
path( path(
'accounts/login/', 'accounts/login/',
RedirectView.as_view(url=settings.FRONTEND_URL_BASE, permanent=False), RedirectView.as_view(url=settings.FRONTEND_URL_BASE, permanent=False),
name='account_login', name='account_login',
) ),
] ]
urlpatterns += frontendpatterns urlpatterns += frontendpatterns

View File

@ -20,6 +20,7 @@ from allauth.account.models import EmailAddress
from allauth.account.views import EmailView, LoginView, PasswordResetFromKeyView from allauth.account.views import EmailView, LoginView, PasswordResetFromKeyView
from allauth.socialaccount.forms import DisconnectForm from allauth.socialaccount.forms import DisconnectForm
from allauth.socialaccount.views import ConnectionsView from allauth.socialaccount.views import ConnectionsView
from allauth.usersessions.views import ListUserSessionsView
from djmoney.contrib.exchange.models import ExchangeBackend, Rate from djmoney.contrib.exchange.models import ExchangeBackend, Rate
import common.currency import common.currency
@ -582,6 +583,15 @@ class AboutView(AjaxView):
ajax_form_title = _('About InvenTree') ajax_form_title = _('About InvenTree')
class CustomListUserSessionsView(ListUserSessionsView):
"""A view to delete all other sessions."""
def form_valid(self, form):
"""Delete all other sessions."""
super().form_valid(form)
return HttpResponseRedirect(reverse_lazy('settings'))
class NotificationsView(TemplateView): class NotificationsView(TemplateView):
"""View for showing notifications.""" """View for showing notifications."""

View File

@ -168,7 +168,7 @@
{% include "spacer.html" %} {% include "spacer.html" %}
<div class='btn-group' role='group'> <div class='btn-group' role='group'>
{% if session_list.count > 1 %} {% if session_list.count > 1 %}
<form method="post" action="{% url 'session_delete_other' %}"> <form method="post" action="{% url 'usersessions_list' %}">
{% csrf_token %} {% csrf_token %}
<button type="submit" class="btn btn-sm btn-default btn-danger" title='{% trans "Log out active sessions (except this one)" %}'> <button type="submit" class="btn btn-sm btn-default btn-danger" title='{% trans "Log out active sessions (except this one)" %}'>
<span class='fas fa-sign-out-alt'></span> {% trans "Log Out Active Sessions" %} <span class='fas fa-sign-out-alt'></span> {% trans "Log Out Active Sessions" %}