diff --git a/apps/account/admin/user.py b/apps/account/admin/user.py index 9bfcdab..3b60484 100644 --- a/apps/account/admin/user.py +++ b/apps/account/admin/user.py @@ -95,6 +95,12 @@ class UserAdmin(BaseUserAdmin, ModelAdmin): "classes": ["tab"], } ), + ( + _('Authentication'), { + 'fields': ('display_auth_token',), + "classes": ["tab"], + } + ), ( _('Permissions'), { 'fields': ('user_type', 'is_active', 'is_staff', 'groups'), @@ -116,7 +122,7 @@ class UserAdmin(BaseUserAdmin, ModelAdmin): radio_fields = { "gender": admin.HORIZONTAL, } - readonly_fields = ["last_login", "date_joined",] + readonly_fields = ["last_login", "date_joined", "display_auth_token"] @display(description=_("Date Joined")) @@ -126,6 +132,18 @@ class UserAdmin(BaseUserAdmin, ModelAdmin): @display(description=_("Last Login")) def display_last_login(self, instance: User): return instance.last_login.strftime("%Y-%m-%d %H:%M") if instance.last_login else "-" + + @display(description=_("Authentication Token")) + def display_auth_token(self, instance: User): + from rest_framework.authtoken.models import Token + from django.utils.html import format_html + + try: + token, created = Token.objects.get_or_create(user=instance) + return format_html('{}', token.key) + except Exception as e: + return format_html('{}', str(e)) + def get_queryset(self, request): qs = super().get_queryset(request) return qs.filter(email__isnull=False) @@ -134,6 +152,7 @@ class GuestUserAdmin(UserAdmin): list_display = ( 'device_id', 'device_os', 'is_active', 'display_date_joined', ) + # Inherits fieldsets from UserAdmin, which now include the auth token def has_add_permission(self, request): if '_popup' in request.GET and request.GET['_popup'] == '1': @@ -172,6 +191,7 @@ class StudentUserAdmin(UserAdmin): 'classes': ('collapse',), }), ) + # Ensure the fieldsets from UserAdmin are used, which now include the auth token @display(description=_("Student"), header=True) @@ -325,6 +345,7 @@ class ProfessorUserAdmin(UserAdmin): list_sections = [CourseTableSection] save_as = True + # Inherits fieldsets from UserAdmin, which now include the auth token @display(description=_("Professor"), header=True) def display_header(self, instance: StudentUser):