# -*- coding: utf-8 -*-
"""
Authentication URL Configuration for Stream Processor

This module defines URL patterns for enhanced authentication features including:
- Enhanced login with 2FA support
- 2FA setup and management
- Password change with strength validation
- Security settings management
- Session management

Author: Stream Processor Development Team
Version: 1.0.0
Created: 2025
"""

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views as enhanced_auth_views

app_name = 'authentication'

urlpatterns = [
    # Enhanced Authentication Views
    path('login/', enhanced_auth_views.EnhancedLoginView.as_view(), name='enhanced_login'),
    path('logout/', enhanced_auth_views.enhanced_logout, name='enhanced_logout'),
    
    # Two-Factor Authentication
    path('2fa/verify/', enhanced_auth_views.TwoFactorVerifyView.as_view(), name='two_factor_verify'),
    path('2fa/backup/', enhanced_auth_views.BackupCodeVerifyView.as_view(), name='backup_code_verify'),
    path('2fa/setup/', enhanced_auth_views.Setup2FAView.as_view(), name='setup_2fa'),
    path('2fa/disable/', enhanced_auth_views.Disable2FAView.as_view(), name='disable_2fa'),
    path('2fa/backup-codes/', enhanced_auth_views.ShowBackupCodesView.as_view(), name='show_backup_codes'),
    path('2fa/regenerate-codes/', enhanced_auth_views.regenerate_backup_codes, name='regenerate_backup_codes'),
    
    # Security Settings
    path('security/', enhanced_auth_views.SecuritySettingsView.as_view(), name='security_settings'),
    
    # Session Management
    path('sessions/terminate/', enhanced_auth_views.terminate_session, name='terminate_session'),
    path('sessions/terminate-all/', enhanced_auth_views.terminate_all_sessions, name='terminate_all_sessions'),
    
    # Password Reset (using Django's built-in views with custom templates)
    path('password-reset/', 
         auth_views.PasswordResetView.as_view(
             template_name='authentication/password_reset_form.html',
             email_template_name='authentication/password_reset_email.html',
             subject_template_name='authentication/password_reset_subject.txt',
             success_url='/auth/password-reset/done/'
         ), 
         name='password_reset'),
    
    path('password-reset/done/', 
         auth_views.PasswordResetDoneView.as_view(
             template_name='authentication/password_reset_done.html'
         ), 
         name='password_reset_done'),
    
    path('password-reset/<uidb64>/<token>/', 
         auth_views.PasswordResetConfirmView.as_view(
             template_name='authentication/password_reset_confirm.html',
             success_url='/auth/password-reset/complete/'
         ), 
         name='password_reset_confirm'),
    
    path('password-reset/complete/', 
         auth_views.PasswordResetCompleteView.as_view(
             template_name='authentication/password_reset_complete.html'
         ), 
         name='password_reset_complete'),
]