from core.models import UserLoginSession
from django.urls import path
from . import views
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView, TokenVerifyView

app_name = 'authentication'

urlpatterns = [
    path('user/', views.UserAPIView.as_view(), name='user'),
    path('get-username/', views.UsernameAPIView.as_view(), name='get-username'),
    path('approved-user/', views.UserApprovedAPIView.as_view(), name='approved-user'),
    path('signup/', views.SignupAPIView.as_view(), name='signup'),
    path('verify-email/<uidb64>/<token>/', views.SignupVerifyAPIView.as_view(), name='verify_email'),
    path('authorized-user/', views.AuthorizedUserAPIView.as_view(),
         name='authorized-user'),
    path('user-request/', views.UserRequestAPIView.as_view(), name='user-request'),
    path('profile/', views.ProfileAPIView.as_view(), name='profile'),
    path('update-password/', views.UpdatePasswordView.as_view(), name='update-password'),

    # JWT
    path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('token/verify/', TokenVerifyView.as_view(), name='token_verify'),

    # 2F
    path('create-totp/', views.TOTPCreateView.as_view(), name='create-totp'),
    path('totp-verify/', views.TOTPVerifyView.as_view(), name='totp-verify'),
    path('authenticated-device/', views.TOTPAuthenticatedView.as_view(),
         name='authenticated-device'),

    # Session
    path('user-session/', views.UserSessionView.as_view(), name='user-session'),
    path('logged-in-device-count/', views.UserLoggedInView.as_view(),
         name='logged-in-device-count'),
]
