from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth import get_user_model

User = get_user_model()


@admin.register(User)
class UserAdmin(BaseUserAdmin):
    """Users module — manage app users (roles, MFA, status) from the admin panel."""

    ordering = ("email",)
    list_display = ("email", "username", "role", "mfa_enabled", "mfa_method", "is_active", "is_staff")
    list_filter = ("role", "mfa_enabled", "mfa_method", "is_active", "is_staff")
    search_fields = ("email", "username", "full_name", "phone")

    # editing an existing user
    fieldsets = (
        ("Login", {"fields": ("email", "username", "password")}),
        ("Profile", {"fields": ("full_name", "phone", "location", "skills", "experience_years", "bio", "resume")}),
        ("Role & MFA", {"fields": ("role", "mfa_enabled", "mfa_method", "totp_secret")}),
        ("Permissions", {"fields": ("is_active", "is_staff", "is_superuser", "groups", "user_permissions")}),
        ("Dates", {"fields": ("last_login", "date_joined")}),
    )

    # creating a new user
    add_fieldsets = (
        (None, {
            "classes": ("wide",),
            "fields": ("email", "username", "role", "password1", "password2", "is_staff", "is_active"),
        }),
    )
