mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-01-03 01:15:57 +10:00
fix: Use CustomUserAdmin instead of Django's default UserAdmin to fix user creation bug
The bug was caused by importing Django's default UserAdmin instead of CustomUserAdmin in admin.py. This bypassed all custom admin logic. Additionally, CustomUserAdmin was modifying fieldsets without explicitly preserving add_fieldsets, which can cause Django to not properly handle the user creation form, leading to password hashing issues. Changes: - Updated admin.py to import and register CustomUserAdmin - Explicitly set add_fieldsets in CustomUserAdmin to preserve Django's default user creation behavior and ensure passwords are properly hashed - Added explanatory comments Fixes #1707 Co-authored-by: Nick Sweeting <pirate@users.noreply.github.com>
This commit is contained in:
@@ -7,11 +7,11 @@ from archivebox.core.models import Snapshot, ArchiveResult, Tag
|
||||
from archivebox.core.admin_tags import TagAdmin
|
||||
from archivebox.core.admin_snapshots import SnapshotAdmin
|
||||
from archivebox.core.admin_archiveresults import ArchiveResultAdmin
|
||||
from archivebox.core.admin_users import UserAdmin
|
||||
from archivebox.core.admin_users import CustomUserAdmin
|
||||
|
||||
|
||||
def register_admin(admin_site):
|
||||
admin_site.register(get_user_model(), UserAdmin)
|
||||
admin_site.register(get_user_model(), CustomUserAdmin)
|
||||
admin_site.register(ArchiveResult, ArchiveResultAdmin)
|
||||
admin_site.register(Snapshot, SnapshotAdmin)
|
||||
admin_site.register(Tag, TagAdmin)
|
||||
|
||||
@@ -10,6 +10,12 @@ class CustomUserAdmin(UserAdmin):
|
||||
sort_fields = ['id', 'email', 'username', 'is_superuser', 'last_login', 'date_joined']
|
||||
list_display = ['username', 'id', 'email', 'is_superuser', 'last_login', 'date_joined']
|
||||
readonly_fields = ('snapshot_set', 'archiveresult_set', 'tag_set', 'apitoken_set', 'outboundwebhook_set')
|
||||
|
||||
# Preserve Django's default user creation form and fieldsets
|
||||
# This ensures passwords are properly hashed and permissions are set correctly
|
||||
add_fieldsets = UserAdmin.add_fieldsets
|
||||
|
||||
# Extend fieldsets for change form only (not user creation)
|
||||
fieldsets = [*UserAdmin.fieldsets, ('Data', {'fields': readonly_fields})]
|
||||
|
||||
@admin.display(description='Snapshots')
|
||||
|
||||
Reference in New Issue
Block a user