This commit is contained in:
2025-11-11 15:51:54 +00:00
parent 99ae905cb0
commit 3e0c5d2ecc
114 changed files with 9278 additions and 929 deletions

View File

@@ -1,6 +1,4 @@
# apps/dashboard/admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin
from django.contrib.auth.models import User, Group
@@ -9,28 +7,22 @@ from unfold.forms import AdminPasswordChangeForm, UserChangeForm, UserCreationFo
from unfold.admin import ModelAdmin
# Unregister the default Group admin and register with Unfold
# Unregister default and re-register User/Group with Unfold admin
try:
admin.site.unregister(Group)
admin.site.unregister(User)
except admin.sites.NotRegistered:
pass
@admin.register(User)
class UserAdmin(BaseUserAdmin, ModelAdmin):
# Forms loaded from `unfold.forms`
form = UserChangeForm
add_form = UserCreationForm
change_password_form = AdminPasswordChangeForm
# Set to False, to enable filter as "sidebar"
list_filter_sheet = True
# Display fields in changeform in compressed mode
compressed_fields = True # Default: False
# Warn before leaving unsaved changes in changeform
warn_unsaved_form = True # Default: False
compressed_fields = True
warn_unsaved_form = True
@admin.register(Group)
@@ -38,16 +30,4 @@ class GroupAdmin(BaseGroupAdmin, ModelAdmin):
pass
# # Custom dashboard view
# def custom_dashboard(request):
# context = {
# "user_count": get_user_model().objects.count(),
# "group_count": auth_models.Group.objects.count(),
# }
# return render(request, "unfold/dashboard.html", context)
# # Add the URL to admin
# admin.site.get_urls = (
# lambda self: [path("", custom_dashboard, name="index")] + self.get_urls()
# ).__get__(admin.site)
# No index override; use Unfold dashboard sections

View File

@@ -0,0 +1,29 @@
from django.conf import settings
from django.contrib.auth import get_user_model, models as auth_models
def dashboard_status(request):
user_count = get_user_model().objects.count()
group_count = auth_models.Group.objects.count()
auth_mode = getattr(settings, "KEYWARDEN_AUTH_MODE", "hybrid")
has_superuser = get_user_model().objects.filter(is_superuser=True).exists()
oidc_configured = bool(
getattr(settings, "OIDC_RP_CLIENT_ID", None)
and getattr(settings, "OIDC_RP_CLIENT_SECRET", None)
and getattr(settings, "OIDC_OP_AUTHORIZATION_ENDPOINT", None)
and getattr(settings, "OIDC_OP_TOKEN_ENDPOINT", None)
and getattr(settings, "OIDC_OP_USER_ENDPOINT", None)
and getattr(settings, "OIDC_OP_JWKS_ENDPOINT", None)
)
return {
"dashboard_status": {
"auth_mode": auth_mode,
"user_count": user_count,
"group_count": group_count,
"has_superuser": has_superuser,
"oidc_configured": oidc_configured,
}
}