
    f                        d dl 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 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"  eed       eed       G d de                    Z#e#jI                         Z% eed       G d de             Z&e&jI                         Z'y)    N)login_required)HttpResponseRedirect)get_object_or_404)reversereverse_lazy)method_decorator)FormView)app_settings)reauthentication_required)get_adapter)redirect_if_add_not_allowed)Authenticator)ActivateTOTPFormDeactivateTOTPForm)flows)is_mfa_enabled)get_form_classdispatch)namec                   j     e Zd ZeZdej                  z   Z fdZ fdZ	 fdZ
d Zd Z fdZ xZS )ActivateTOTPViewzmfa/totp/activate_form.c                     t        |j                  t        j                  j                  g      rt        t        d            S t        |    |g|i |S )Nmfa_deactivate_totp)	r   userr   TypeTOTPr   r   superr   selfrequestargskwargs	__class__s       Q/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/mfa/totp/views.pyr   zActivateTOTPView.dispatch   sK    ',,););)@)@(AB'0E(FGGw9$9&99    c                 \   t        |   di |}t               }|j                  | j                  j
                  |d   j                        }|j                  |      }t        j                  |j                  d            j                  d      }d| }|j                  |||d       |S )Nformutf8zutf-8zdata:image/svg+xml;base64,)totp_svgtotp_svg_data_uritotp_url )r   get_context_datar   build_totp_urlr    r   secretbuild_totp_svgbase64	b64encodeencodedecodeupdate)	r   r"   retadapterr+   r)   base64_datatotp_data_urir#   s	           r$   r-   z!ActivateTOTPView.get_context_data!   s    g&00-))LLK
 ))(3&&xv'>?FFwO4[MB

$%2$	
 
r%   c                 V    t         |          }| j                  j                  |d<   |S )Nr   )r   get_form_kwargsr    r   r   r6   r#   s     r$   r;   z ActivateTOTPView.get_form_kwargs4   s(    g%'ll''F
r%   c                 L    t        t        j                  d| j                        S )Nactivate_totpr   r
   FORMS
form_classr   s    r$   r   zActivateTOTPView.get_form_class9   s    l00/4??SSr%   c                 F    | j                   rt        d      S t        d      S )Nmfa_view_recovery_codes	mfa_index)did_generate_recovery_codesr   rB   s    r$   get_success_urlz ActivateTOTPView.get_success_url<   s"    ++455{##r%   c                     t        j                  | j                  |      \  }}t        |      | _        t
        |   |      S N)r   r>   r    boolrF   r   
form_valid)r   r'   	totp_authrc_authr#   s       r$   rK   zActivateTOTPView.form_validA   s:    "00tD	7+/=(w!$''r%   )__name__
__module____qualname__r   rA   account_settingsTEMPLATE_EXTENSIONtemplate_namer   r-   r;   r   rG   rK   __classcell__r#   s   @r$   r   r      s?     "J-0@0S0SSM:
&
T$
( (r%   r   c                        e Zd ZeZdej                  z   Z ed      Z	d Z
 ee       fd       Z fdZd Z fdZ xZS )DeactivateTOTPViewzmfa/totp/deactivate_form.rE   c                 :   t        t        | j                  j                  t        j                  j
                        | _        t        |j                  t        j                  j
                  g      st        t        d            S  | j                  |g|i |S )N)r   typemfa_activate_totp)r   r   r    r   r   r   authenticatorr   r   r   	_dispatch)r   r    r!   r"   s       r$   r   zDeactivateTOTPView.dispatchP   sy    .""##((

 gll]-?-?-D-D,EF'0C(DEEt~~g7777r%   c                 *    t        |   |g|i |S )zThere's no point to reauthenticate when MFA is not enabled, so the
        `is_mfa_enabled` check needs to go first, which is why we cannot slap a
        `reauthentication_required` decorator on the `dispatch` directly.
        )r   r   r   s       r$   r\   zDeactivateTOTPView._dispatchZ   s     w9$9&99r%   c                 f    t         |          }| j                  |d<   |j                  di        |S )Nr[   data)r   r;   r[   
setdefaultr<   s     r$   r;   z"DeactivateTOTPView.get_form_kwargsb   s5    g%'#11O
 	vr"
r%   c                 L    t        t        j                  d| j                        S )Ndeactivate_totpr?   rB   s    r$   r   z!DeactivateTOTPView.get_form_classl   s    l002CT__UUr%   c                 v    t        j                  | j                  | j                         t        |   |      S rI   )r   rb   r    r[   r   rK   )r   r'   r#   s     r$   rK   zDeactivateTOTPView.form_valido   s-    dllD,>,>?w!$''r%   )rN   rO   rP   r   rA   rQ   rR   rS   r   success_urlr   r   r   r\   r;   r   rK   rT   rU   s   @r$   rW   rW   J   sW    #J/2B2U2UUM{+K8 /0: 1:V( (r%   rW   )(r1   django.contrib.auth.decoratorsr   django.httpr   django.shortcutsr   django.urlsr   r   django.utils.decoratorsr   django.views.generic.editr	   allauth.accountr
   rQ   allauth.account.decoratorsr   allauth.mfaallauth.mfa.adapterr   allauth.mfa.internal.flows.addr   allauth.mfa.modelsr   allauth.mfa.totp.formsr   r   allauth.mfa.totp.internalr   allauth.mfa.utilsr   allauth.utilsr   r   as_viewr>   rW   rb   r,   r%   r$   <module>rv      s     9 , . - 4 . < @ $ + F , G + , ( -J?+*=,(x ,( > @,(^ !((* .z2&( &( 3&(R %,,.r%   