make admin login go through SSO if configured (#77803)
gitea/scrutiny/pipeline/head This commit looks good Details

This commit is contained in:
Frédéric Péters 2023-05-22 17:58:38 +02:00
parent b6468354bd
commit 854a3d0e26
1 changed files with 32 additions and 0 deletions

View File

@ -1,4 +1,9 @@
from django.conf import settings
from django.contrib import admin
from django.shortcuts import redirect
from django.urls import reverse
from django.urls.exceptions import NoReverseMatch
from django.views.decorators.cache import never_cache
from .models import InstalledService, Module, Platform, Project, Service
@ -36,3 +41,30 @@ class ModuleAdmin(admin.ModelAdmin):
admin.site.register(Module, ModuleAdmin)
@never_cache
def login(request, *args, **kwargs):
try:
auth_login_url = reverse(settings.LOGIN_URL)
except NoReverseMatch:
return admin.site.orig_login(request, *args, **kwargs)
auth_login_url += '?%s' % request.GET.urlencode()
return redirect(auth_login_url)
@never_cache
def logout(request, *args, **kwargs):
try:
return redirect(reverse(settings.LOGOUT_URL))
except NoReverseMatch:
return admin.site.orig_logout(request, *args, **kwargs)
if admin.site.login != login:
admin.site.orig_login = admin.site.login
admin.site.login = login
if admin.site.logout != logout:
admin.site.orig_logout = admin.site.logout
admin.site.logout = logout