
    Tњh
                        S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
JrJr  S SKJr  S SKJr  S S	KJr  \ " S
 S5      5       rS\S\4S jrS\S\\   4S jrS\\   S\4S jrS\S\S\SS4S jrS\S\S\4S jrg)    N)	dataclass)List)AbstractUser)BadSignatureSigner)HttpRequestHttpResponse)salted_hmac)app_settings)Authenticatorc                   *    \ rS rSr% \\S'   \\S'   Srg)IssuedTrust   fingerprintat N)__name__
__module____qualname____firstlineno__str__annotations__int__static_attributes__r       [D:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\allauth/mfa/internal/flows/trust.pyr   r      s    Gr   r   userreturnc                 V   Sn/ nUR                  [        U R                  5      5        UR                  U R                  5        [        R
                  R                  U R                  S9R                  S5       H  nUR                  [        UR                  5      5        UR                  [        UR                  5      5        UR                  R                  S5      nUc  Mk  UR                  [        U5      5        M     [        USR                  U5      SS9R                  5       $ )zp
If the user changes anything about his security setup, we want to invalidate
any trust that was issued before.
zallauth.mfa.trust)user_idpkseed|sha256)	algorithm)appendr   r!   passwordr   objectsfilterorder_bytypedatagetr
   join	hexdigest)r   saltpartsauthenticatorr"   s        r   create_config_fingerprintr3      s    
 DE	LLTWW	LL&..55dgg5FOOPTUS))*+S++,-!!%%f-LLT# V tSXXe_AKKMMr   requestc                 n  ^ U R                   R                  [        R                  5      nU(       d  / $ [	        5       n UR                  U5      nU Vs/ s H  n[        US   US   S9PM     nn[        R                  " 5       m[        [        U4S jU5      5      nU$ ! [         a    / s $ f = fs  snf )Nr      r   r   c                 `   > U R                   [        R                  R                  5       -   T:  $ N)r   r   TRUST_COOKIE_AGEtotal_seconds)tnows    r   <lambda>%decode_trust_cookie.<locals>.<lambda>3   s"    add\::HHJJSPr   )COOKIESr-   r   TRUST_COOKIE_NAMEr   unsign_objectr   r   timelistr)   )r4   valuesignerr,   entrytrustsr=   s         @r   decode_trust_cookierI   &   s    OO > >?E	XF##E* KOO$keAh58<$FO
))+CPRX	
F
 M  	Os   B  B2 B/.B/rH   c                     [        5       nUR                  U  Vs/ s H  o"R                  UR                  4PM     sn5      $ s  snf r9   )r   sign_objectr   r   )rH   rF   its      r   encode_trust_cookierM   9   s7    XFH26HIIHs   !Aresponsec           
      ~   [        U5      n[        U 5      nUR                  [        U[	        [
        R
                  " 5       5      S95        UR                  [        R                  [        U5      [        R                  [        R                  [        R                  [        R                  [        R                  S9  g )Nr7   )max_agepathdomainsecurehttponly)r3   rI   r&   r   r   rC   
set_cookier   rA   rM   r:   TRUST_COOKIE_PATHTRUST_COOKIE_DOMAINTRUST_COOKIE_SECURETRUST_COOKIE_HTTPONLY)r4   r   rN   r   rH   s        r   trust_browserrZ   >   s     ,D1K )F
MM++#diik:JKL&&F#--++////33  r   c                     [         R                  (       d  g[        U 5      n[        U5      n[	        U Vs/ s H  oDR
                  U:H  PM     sn5      $ s  snf )NF)r   TRUST_ENABLEDrI   r3   anyr   )r4   r   rH   r   r<   s        r   is_trusted_browserr^   O   sF    %% )F+D1Kf=f,f=>>=s   A)rC   dataclassesr   typingr   django.contrib.auth.modelsr   django.core.signingr   r   django.httpr   r	   django.utils.cryptor
   allauth.mfar   allauth.mfa.modelsr   r   r   r3   rI   rM   rZ   boolr^   r   r   r   <module>rh      s     !  3 4 1 + $ ,   
NL NS N$ k1B &J[ 1 Jc J
 ,8D	"? ?< ?D ?r   