from django.urls import path
from rest_framework_simplejwt.views import TokenRefreshView

from .views import (
    LoginView,
    MFADisableView,
    MFAEnableView,
    MFAMethodsView,
    MFASetupView,
    ResendOTPView,
    VerifyMFAView,
)
from .views_password import (
    CheckPasswordExpiryView,
    ChangePasswordView,
    ForgotPasswordView,
    VerifyResetOTPView,
    ResetPasswordView,
    PasswordReminderStatusView,
    PasswordHistoryValidationView,
    PasswordPolicyView,
    PasswordPolicyStatsView,
)

from .views_register import RegisterView, SendRegisterOTPView

urlpatterns = [
    path("register/send-otp/", SendRegisterOTPView.as_view(), name="register-send-otp"),
    path("register/", RegisterView.as_view(), name="register"),
    path("login/", LoginView.as_view(), name="login"),
    path("verify-mfa/", VerifyMFAView.as_view(), name="verify-mfa"),
    path("resend-otp/", ResendOTPView.as_view(), name="resend-otp"),
    path("token/refresh/", TokenRefreshView.as_view(), name="token-refresh"),
    path("mfa/methods/", MFAMethodsView.as_view(), name="mfa-methods"),
    path("mfa/setup/", MFASetupView.as_view(), name="mfa-setup"),
    path("mfa/enable/", MFAEnableView.as_view(), name="mfa-enable"),
    path("mfa/disable/", MFADisableView.as_view(), name="mfa-disable"),
    path("password/check-expiry/", CheckPasswordExpiryView.as_view(), name="password-check-expiry"),
    path("password/change/", ChangePasswordView.as_view(), name="password-change"),
    path("password/forgot/", ForgotPasswordView.as_view(), name="password-forgot"),
    path("password/verify-otp/", VerifyResetOTPView.as_view(), name="password-verify-otp"),
    path("password/reset/", ResetPasswordView.as_view(), name="password-reset"),
    path("password/reminder-status/", PasswordReminderStatusView.as_view(), name="password-reminder-status"),
    path("password/history-validation/", PasswordHistoryValidationView.as_view(), name="password-history-validation"),
    path("password/policy/", PasswordPolicyView.as_view(), name="password-policy"),
    path("password/policy/stats/", PasswordPolicyStatsView.as_view(), name="password-policy-stats"),
]
