
    f2                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z!  G d de	      Z"e"jG                         Z$ eed       G d de             Z%e%jG                         Z& eed       G d de	             Z'e'jG                         Z(y)    )login_required)HttpResponseRedirect)reverse)method_decorator)TemplateView)app_settings)LoginStageController)BaseReauthenticateView)AuthenticateFormReauthenticateForm)Authenticator)AuthenticateStage)is_mfa_enabled)AuthenticateWebAuthnForm)auth)get_form_classc                   v     e Zd ZeZeZdej                  z   Z	 fdZ
d Zd Zd Zd Zd Z fdZ fd	Z xZS )
AuthenticateViewzmfa/authenticate.c                    t        j                  |t        j                        | _        | j                  r\t        | j                  j                  j                  t        j                  j                  t        j                  j                  g      st        t        d            S | j                         | _        t!        | D  |g|i |S )Naccount_login)r	   enterr   keystager   loginuserr   TypeTOTPWEBAUTHNr   r   _build_formsformsuperdispatch)selfrequestargskwargs	__class__s       Q/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/mfa/base/views.pyr"   zAuthenticateView.dispatch   s    )//9J9N9NO
zzJJ!!$$m&8&8&A&AB"
 ((@AA%%'	w9$9&99    c                     | j                   j                         r| j                  | j                         S | j                  | j                         S N)r    is_valid
form_validform_invalid)r#   r$   r%   r&   s       r(   postzAuthenticateView.post#   s:    99??499--$$TYY//r)   c                 4   d }| j                         }| j                         }| j                  j                  j                  }dt
        j                  v }| j                  j                  dk(  rd| j                  j                  v r9 ||| j                  j                        x}| _
        |r	 ||      nd | _        |S |r	 ||      nd | _
         ||| j                  j                        x}| _        |S  ||      | _
        |r	 ||      nd | _        |S )NwebauthnPOSTcode)r   datar   )r   get_webauthn_form_classr   r   r   r   SUPPORTED_TYPESr$   methodr2   	auth_formwebauthn_form)r#   posted_formAuthenticateFormClassAuthenticateWebAuthnFormClassr   support_webauthns         r(   r   zAuthenticateView._build_forms)   s$    $ 3 3 5(,(D(D(F%zz$$%)E)EE<<&(***/DDLL$5$50 dn
 ( 2t< ""  9I)t4d  4QDLL$5$54 d0 	 3=DN<L-48RV  r)   c                 L    t        t        j                  d| j                        S )Nauthenticater   r   FORMS
form_classr#   s    r(   r   zAuthenticateView.get_form_classG   s    l00.$//RRr)   c                 L    t        t        j                  d| j                        S )Nauthenticate_webauthn)r   r   rB   webauthn_form_classrD   s    r(   r6   z(AuthenticateView.get_webauthn_form_classJ   s#     79Q9Q
 	
r)   c                 V    |j                          | j                  j                         S r+   )saver   exit)r#   r    s     r(   r-   zAuthenticateView.form_validO   s    		zz  r)   c                 6    t         |   | j                        S r+   )r!   getr$   r#   r    r'   s     r(   r.   zAuthenticateView.form_invalidS   s    w{4<<((r)   c                 :   t         |          }|j                  | j                  t        j
                  d       | j                  rSt        j                  | j                  j                  j                        }|j                  | j                  d|id       |S )N)r    MFA_SUPPORTED_TYPESrequest_options)r:   js_data)r!   get_context_dataupdater9   r   r7   r:   webauthn_authbegin_authenticationr   r   r   )r#   r&   retrP   r'   s       r(   rR   z!AuthenticateView.get_context_dataV   s    g&(

'3'C'C	
 +@@AQAQAVAVWOJJ%)%7%7 1?C 
r)   )__name__
__module____qualname__r   rC   r   rG   account_settingsTEMPLATE_EXTENSIONtemplate_namer"   r/   r   r   r6   r-   r.   rR   __classcell__r'   s   @r(   r   r      sM    !J2'*:*M*MMM:0<S

!) r)   r   r"   )namec                   P     e Zd ZeZdej                  z   Z fdZd Z	 fdZ
 xZS )ReauthenticateViewzmfa/reauthenticate.c                 V    t         |          }| j                  j                  |d<   |S )Nr   )r!   get_form_kwargsr$   r   )r#   rV   r'   s     r(   rc   z"ReauthenticateView.get_form_kwargsq   s(    g%'ll''F
r)   c                 L    t        t        j                  d| j                        S )NreauthenticaterA   rD   s    r(   r   z!ReauthenticateView.get_form_classv   s    l002BDOOTTr)   c                 B    |j                          t        | 	  |      S r+   )rI   r!   r-   rM   s     r(   r-   zReauthenticateView.form_validy   s    		w!$''r)   )rW   rX   rY   r   rC   rZ   r[   r\   rc   r   r-   r]   r^   s   @r(   ra   ra   l   s.    #J),<,O,OOM
U( (r)   ra   c                   <     e Zd Zdej                  z   Z fdZ xZS )	IndexViewz
mfa/index.c                    t        |   di |}i }t        j                  j	                  | j
                  j                        D ]  }|j                  t        j                  j                  k(  r<|j                  |j                  g       }|j                  |j                                f|j                         ||j                  <    ||d<   t        j                  |d<   t        | j
                  j                        |d<   |S )Nr5   authenticatorsrO   r    )r!   rR   r   objectsfilterr$   r   typer   r   
setdefaultappendwrapr   r7   r   )r#   r&   rV   rj   r   authsr'   s         r(   rR   zIndexView.get_context_data   s    g&00!))00dll6G6G0H 	8DyyM..777&11$))R@TYY[),0IIKtyy)	8 !/%1%A%A!" .t||/@/@ A
r)   )rW   rX   rY   rZ   r[   r\   rR   r]   r^   s   @r(   rh   rh      s     #3#F#FFM r)   rh   N))django.contrib.auth.decoratorsr   django.httpr   django.urlsr   django.utils.decoratorsr   django.views.genericr   allauth.accountr   rZ   allauth.account.stagesr	   allauth.account.viewsr
   allauth.mfaallauth.mfa.base.formsr   r   allauth.mfa.modelsr   allauth.mfa.stagesr   allauth.mfa.utilsr   allauth.mfa.webauthn.formsr   #allauth.mfa.webauthn.internal.flowsr   rT   allauth.utilsr   r   as_viewr@   ra   re   rh   indexrk   r)   r(   <module>r      s    9 ,  4 - < 7 8 $ G , 0 , ? E (R| Rj  '') .z2(/ ( 3(" $++- .z2  3$ 	r)   