Add our own logout view

This commit is contained in:
Tobias Kunze 2025-03-17 09:12:58 +01:00
parent 092a92d986
commit 024eae0e1a
5 changed files with 34 additions and 9 deletions

View file

@ -80,16 +80,19 @@
</li>
{% else %}
<li class="sidebar-item">
<a href="{% url 'profile' %}" class='sidebar-link'>
<a href="{% url 'frontend:profile' %}" class='sidebar-link'>
<i class="bi bi-file-person"></i>
<span>{% translate 'Profile' %}</span>
</a>
</li>
<li class="sidebar-item">
<a href="{% url 'account_logout' %}" class='sidebar-link'>
<form action="{% url 'frontend:logout' %}" method="post">
{% csrf_token %}
<button type="submit" class='sidebar-link btn'>
<i class="bi bi-box-arrow-right"></i>
<span>{% translate 'Log out' %}</span>
</a>
</button>
</form>
</li>
{% endif %}
</ul>

View file

@ -0,0 +1,9 @@
from django.urls import path
from servala.frontend import views
urlpatterns = [
path("accounts/profile/", views.ProfileView.as_view(), name="profile"),
path("accounts/logout/", views.LogoutView.as_view(), name="logout"),
path("", views.IndexView.as_view(), name="index"),
]

View file

@ -1,6 +1,8 @@
from .auth import LogoutView
from .generic import IndexView, ProfileView
__all__ = [
"IndexView",
"LogoutView",
"ProfileView",
]

View file

@ -0,0 +1,12 @@
from allauth.account.internal import flows
from allauth.account.utils import get_next_redirect_url
from django.shortcuts import redirect
from django.views import View
class LogoutView(View):
def post(self, request):
flows.logout.logout(request)
url = get_next_redirect_url(request, "next") or "/"
return redirect(url)

View file

@ -6,7 +6,7 @@ from django.urls import path
from django.urls.conf import include
from django.utils.translation import gettext_lazy as _
from servala.frontend import views
from servala.frontend import urls
admin.site.site_title = _("Servala Admin")
admin.site.site_header = _("Servala Management")
@ -14,13 +14,12 @@ admin.site.index_title = _("Dashboard")
admin.site.login = secure_admin_login(admin.site.login)
urlpatterns = [
path("admin/", admin.site.urls),
path("", include((urls, "servala.frontend"), namespace="frontend")),
# This adds the allauth urls to the project:
# - accounts/keycloak/login/
# - accounts/keycloak/login/callback/
path("accounts/", include("allauth.urls")),
path("accounts/profile/", views.ProfileView.as_view(), name="profile"),
path("admin/", admin.site.urls),
path("", views.IndexView.as_view(), name="index"),
]
# Serve static and media files in development