
    f;                     ^    d dl Z d dlmZ d dlmZmZ d dlmZ  G d d      Z ed      Z	d Z
y)	    N)Enum)SetUnionImproperlyConfiguredc                      e Zd Z G d dee      Z G d dee      Zd Zd Ze	d        Z
e	d        Ze	d	        Ze	d
        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Z e	d        Z!e	d        Z"e	d         Z#e	d!        Z$e	d"        Z%e	d#        Z&e	d$        Z'e	d%        Z(e	d&        Z)e	d'        Z*e	d(        Z+e	d)        Z,e	d*        Z-e	d+        Z.e	d,        Z/e	d-        Z0e	d.        Z1e	d/        Z2e	d0        Z3e	d1        Z4e	d2        Z5e	d3        Z6e	d4        Z7e	d5        Z8e	d6        Z9e	d7        Z:e	d8        Z;e	d9        Z<e	d:        Z=e	d;        Z>e	d<        Z?e	d=e@eAeBe   f   fd>       ZCy?)@AppSettingsc                       e Zd ZdZdZdZy) AppSettings.AuthenticationMethodusernameemailusername_emailN)__name__
__module____qualname__USERNAMEEMAILUSERNAME_EMAIL     W/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/account/app_settings.pyAuthenticationMethodr   	   s    )r   r   c                       e Zd ZdZdZdZy)#AppSettings.EmailVerificationMethod	mandatoryoptionalnoneN)r   r   r   	MANDATORYOPTIONALNONEr   r   r   EmailVerificationMethodr      s      	 r   r!   c                 (   ddl m} || _        | j                  | j                  j
                  k(  r| j                  sJ | j                  | j                  j                  k(  s| j                  sJ | j                  | j                  j                  k7  s| j                  sJ | j                  sH| j                  rJ | j                  | j                  j                  | j                  j                  fvsJ | j                  | j                  dkD  sJ | j                   r&| j                  | j                  dk7  rt#        d      t%        |d      st%        |d      rt'        j(                  d       t%        |d      rt'        j(                  d	       y y )
Nr   settings   zKInvalid combination of ACCOUNT_CHANGE_EMAIL and ACCOUNT_MAX_EMAIL_ADDRESSESACCOUNT_LOGIN_ATTEMPTS_LIMITACCOUNT_LOGIN_ATTEMPTS_TIMEOUTznsettings.ACCOUNT_LOGIN_ATTEMPTS_LIMIT/TIMEOUT is deprecated, use: settings.ACCOUNT_RATE_LIMITS['login_failed']#ACCOUNT_EMAIL_CONFIRMATION_COOLDOWNznsettings.ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN is deprecated, use: settings.ACCOUNT_RATE_LIMITS['confirm_email'])django.confr$   prefixAUTHENTICATION_METHODr   r   EMAIL_REQUIREDr   UNIQUE_EMAILEMAIL_VERIFICATIONr!   r   USER_MODEL_USERNAME_FIELDUSERNAME_REQUIREDr   MAX_EMAIL_ADDRESSESCHANGE_EMAILr   hasattrwarningswarn)selfr*   r$   s      r   __init__zAppSettings.__init__   s   ( **d.G.G.M.MM  	! !
 &&$*C*C*L*LL	  ##t'C'C'M'MM  	! ! --------))22))886    ##/++a///''38P8PTU8U*a  8;<6A
 MM A 8BCMM A Dr   c                 :    ddl m}  || j                  |z   |      S )Nr   )get_setting)allauth.utilsr9   r*   )r6   namedfltr9   s       r   _settingzAppSettings._setting@   s    -4;;-t44r   c                 &    | j                  dd      S )NPREVENT_ENUMERATIONTr=   r6   s    r   r?   zAppSettings.PREVENT_ENUMERATIONE       }}2D99r   c                 B    | j                  dd      j                         S )NDEFAULT_HTTP_PROTOCOLhttp)r=   lowerrA   s    r   rD   z!AppSettings.DEFAULT_HTTP_PROTOCOLI   s    }}4f=CCEEr   c                 H    ddl m} | j                  dt        |dd            S )z`
        Determines the expiration date of email confirmation mails (#
        of days)
        r   r#   EMAIL_CONFIRMATION_EXPIRE_DAYSEMAIL_CONFIRMATION_DAYS   )r)   r$   r=   getattrr6   r$   s     r   rH   z*AppSettings.EMAIL_CONFIRMATION_EXPIRE_DAYSM   s(     	)}},H7;
 	
r   c                 &    | j                  dd      S )zx
        The URL to redirect to after a successful email confirmation, in
        case of an authenticated user
        -EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLNr@   rA   s    r   rN   z9AppSettings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLZ   s     }}LdSSr   c                 F    ddl m} | j                  d|j                        S )zt
        The URL to redirect to after a successful email confirmation, in
        case no user is logged in
        r   r#   )EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL)r)   r$   r=   	LOGIN_URLrL   s     r   rP   z5AppSettings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URLb   s#     	)}}79K9K
 	
r   c                 &    | j                  dd      S )zT
        The user is required to hand over an email address when signing up
        r,   Fr@   rA   s    r   r,   zAppSettings.EMAIL_REQUIREDn   s    
 }}-u55r   c                     | j                  d| j                  j                        }|du r| j                  j                  }n|du r| j                  j                  }| j                  |      S )z/
        See email verification method
        r.   TF)r=   r!   r   r   r6   rets     r   r.   zAppSettings.EMAIL_VERIFICATIONu   sb    
 mm0$2N2N2W2WX$;..88CE\..77C++C00r   c                 &    | j                  dd      S )N"EMAIL_VERIFICATION_BY_CODE_ENABLEDFr@   rA   s    r   rW   z.AppSettings.EMAIL_VERIFICATION_BY_CODE_ENABLED   s    }}A5IIr   c                 &    | j                  dd      S )N'EMAIL_VERIFICATION_BY_CODE_MAX_ATTEMPTSrJ   r@   rA   s    r   rY   z3AppSettings.EMAIL_VERIFICATION_BY_CODE_MAX_ATTEMPTS   s    }}FJJr   c                 &    | j                  dd      S )N"EMAIL_VERIFICATION_BY_CODE_TIMEOUT  r@   rA   s    r   r[   z.AppSettings.EMAIL_VERIFICATION_BY_CODE_TIMEOUT   s    }}A7KKr   c                 &    | j                  dd       S )Nr1   r@   rA   s    r   r1   zAppSettings.MAX_EMAIL_ADDRESSES   rB   r   c                 &    | j                  dd      S )Nr2   Fr@   rA   s    r   r2   zAppSettings.CHANGE_EMAIL   s    }}^U33r   c                 p    | j                  d| j                  j                        }| j                  |      S )Nr+   )r=   r   r   rT   s     r   r+   z!AppSettings.AUTHENTICATION_METHOD   s0    mm3T5N5N5W5WX((--r   c                 &    | j                  dd      S )z6
        Adjust max_length of email addresses
        EMAIL_MAX_LENGTH   r@   rA   s    r   ra   zAppSettings.EMAIL_MAX_LENGTH   s    
 }}/55r   c                 &    | j                  dd      S )z7
        Enforce uniqueness of email addresses
        r-   Tr@   rA   s    r   r-   zAppSettings.UNIQUE_EMAIL   s    
 }}^T22r   c                 &    | j                  dd      S )z+
        Signup email verification
        SIGNUP_EMAIL_ENTER_TWICEFr@   rA   s    r   re   z$AppSettings.SIGNUP_EMAIL_ENTER_TWICE   s    
 }}7??r   c                 J    | j                  dd      }| j                  d|      S )z.
        Signup password verification
        SIGNUP_PASSWORD_VERIFICATIONTSIGNUP_PASSWORD_ENTER_TWICEr@   )r6   legacys     r   rh   z'AppSettings.SIGNUP_PASSWORD_ENTER_TWICE   s'    
 =tD}}:FCCr   c                 F    ddl m} | j                  d|j                        S )Nr   r#   SIGNUP_REDIRECT_URL)r)   r$   r=   LOGIN_REDIRECT_URLrL   s     r   rk   zAppSettings.SIGNUP_REDIRECT_URL   s    (}}2H4O4OPPr   c                 R    ddl m} d}|j                  s| j                  dd      }|S )z)
        Minimum password Length
        r   r#   NPASSWORD_MIN_LENGTH   )r)   r$   AUTH_PASSWORD_VALIDATORSr=   )r6   r$   rU   s      r   rn   zAppSettings.PASSWORD_MIN_LENGTH   s+    
 	)00-- 5q9C
r   c                    | j                  di       }|du ri S | j                  dd      }| j                  dd      }d }|r|r	d| d| d	}| j                  d
d      }d }|rd| d	}dddddddd||d
}|j                  |       |S )NRATE_LIMITSFLOGIN_ATTEMPTS_LIMIT   LOGIN_ATTEMPTS_TIMEOUT,  z10/m/ip,/zs/keyEMAIL_CONFIRMATION_COOLDOWN   z1/z5/m/userz	10/m/userz20/m/ip,5/m/keyz20/m/ipz30/m/ipz20/m/ip,3/m/key)
change_passwordmanage_emailreset_passwordreauthenticatereset_password_from_keysignuploginrequest_login_codelogin_failedconfirm_email)r=   update)r6   rlsattempts_amountattempts_timeoutlogin_failed_rlcooldownconfirm_email_rlrU   s           r   rr   zAppSettings.RATE_LIMITS   s    mmM2.%<I--(>B==)A6J/ ((9;K:LERO==!>G!#H:U3  *'/)'0"3+-)
, 	

3
r   c                 &    | j                  dd      S )zD
        Subject-line prefix to use for email messages sent
        EMAIL_SUBJECT_PREFIXNr@   rA   s    r   r   z AppSettings.EMAIL_SUBJECT_PREFIX   s    
 }}3T::r   c                 &    | j                  dd      S )z
        Signup form
        SIGNUP_FORM_CLASSNr@   rA   s    r   r   zAppSettings.SIGNUP_FORM_CLASS       
 }}0$77r   c                 &    | j                  dd      S )z_
        Honeypot field name. Empty string or ``None`` will disable honeypot behavior.
        SIGNUP_FORM_HONEYPOT_FIELDNr@   rA   s    r   r   z&AppSettings.SIGNUP_FORM_HONEYPOT_FIELD   s    
 }}94@@r   c                 &    | j                  dd      S )zJ
        The user is required to enter a username when signing up
        r0   Tr@   rA   s    r   r0   zAppSettings.USERNAME_REQUIRED  r   r   c                 &    | j                  dd      S )z)
        Minimum username Length
        USERNAME_MIN_LENGTH   r@   rA   s    r   r   zAppSettings.USERNAME_MIN_LENGTH  s    
 }}2A66r   c                 &    | j                  dg       S )z8
        List of usernames that are not allowed
        USERNAME_BLACKLISTr@   rA   s    r   r   zAppSettings.USERNAME_BLACKLIST  s    
 }}1266r   c                 &    | j                  dd      S )zJ
        render_value parameter as passed to PasswordInput fields
        PASSWORD_INPUT_RENDER_VALUEFr@   rA   s    r   r   z'AppSettings.PASSWORD_INPUT_RENDER_VALUE      
 }}:EBBr   c                 &    | j                  dd      S )NADAPTERz-allauth.account.adapter.DefaultAccountAdapterr@   rA   s    r   r   zAppSettings.ADAPTER"  s    }}Y(WXXr   c                 &    | j                  dd      S )NCONFIRM_EMAIL_ON_GETFr@   rA   s    r   r   z AppSettings.CONFIRM_EMAIL_ON_GET&  s    }}3U;;r   c                 &    | j                  dd      S )NAUTHENTICATED_LOGIN_REDIRECTSTr@   rA   s    r   r   z)AppSettings.AUTHENTICATED_LOGIN_REDIRECTS*  s    }}<dCCr   c                 &    | j                  dd      S )zW
        Automatically log the user in once they confirmed their email address
        LOGIN_ON_EMAIL_CONFIRMATIONFr@   rA   s    r   r   z'AppSettings.LOGIN_ON_EMAIL_CONFIRMATION.  r   r   c                 &    | j                  dd      S )zc
        Automatically log the user in immediately after resetting
        their password.
        LOGIN_ON_PASSWORD_RESETFr@   rA   s    r   r   z#AppSettings.LOGIN_ON_PASSWORD_RESET5  s     }}6>>r   c                 N    ddl m} | j                  d|j                  xs d      S )Nr   r#   LOGOUT_REDIRECT_URLrw   )r)   r$   r=   r   rL   s     r   r   zAppSettings.LOGOUT_REDIRECT_URL=  s#    (}}2H4P4P4WTWXXr   c                 &    | j                  dd      S )NLOGOUT_ON_GETFr@   rA   s    r   r   zAppSettings.LOGOUT_ON_GETC  s    }}_e44r   c                 &    | j                  dd      S )NLOGOUT_ON_PASSWORD_CHANGEFr@   rA   s    r   r   z%AppSettings.LOGOUT_ON_PASSWORD_CHANGEG      }}8%@@r   c                 &    | j                  dd      S )Nr/   r   r@   rA   s    r   r/   z%AppSettings.USER_MODEL_USERNAME_FIELDK  s    }}8*EEr   c                 &    | j                  dd      S )NUSER_MODEL_EMAIL_FIELDr   r@   rA   s    r   r   z"AppSettings.USER_MODEL_EMAIL_FIELDO  s    }}5w??r   c                 F    ddl m} | j                  d|j                        S )zP
        Deprecated -- use Django's settings.SESSION_COOKIE_AGE instead
        r   r#   SESSION_COOKIE_AGE)r)   r$   r=   r   rL   s     r   r   zAppSettings.SESSION_COOKIE_AGES  s    
 	)}}183N3NOOr   c                 &    | j                  dd      S )z
        Controls the life time of the session. Set to `None` to ask the user
        ("Remember me?"), `False` to not remember, and `True` to always
        remember.
        SESSION_REMEMBERNr@   rA   s    r   r   zAppSettings.SESSION_REMEMBER\  s     }}/66r   c                 &    | j                  dd      S )zV
        A string defining the template extension to use, defaults to `html`.
        TEMPLATE_EXTENSIONhtmlr@   rA   s    r   r   zAppSettings.TEMPLATE_EXTENSIONe  s    
 }}16::r   c                 &    | j                  di       S )NFORMSr@   rA   s    r   r   zAppSettings.FORMSl  s    }}Wb))r   c                 &    | j                  dd      S )NEMAIL_CONFIRMATION_HMACTr@   rA   s    r   r   z#AppSettings.EMAIL_CONFIRMATION_HMACp  s    }}6==r   c                 &    | j                  dd      S )NSALTaccountr@   rA   s    r   r   zAppSettings.SALTt  s    }}VY//r   c                 &    | j                  dd      S )NPRESERVE_USERNAME_CASINGTr@   rA   s    r   r   z$AppSettings.PRESERVE_USERNAME_CASINGx  s    }}7>>r   c                    ddl m} ddlm} ddlm} | j                  dd       }|r" ||      }t        |t              s |d      |S | j                  6 |       j                  j                  | j                        j                  }|S g }|S )Nr   )get_user_modelr   import_attributeUSERNAME_VALIDATORSz4ACCOUNT_USERNAME_VALIDATORS is expected to be a list)django.contrib.authr   django.core.exceptionsr   r:   r   r=   
isinstancelistr/   _meta	get_field
validators)r6   r   r   r   pathrU   s         r   r   zAppSettings.USERNAME_VALIDATORS|  s    6?2}}2D9"4(Cc4(*J  
 --9"$U99T%C%CDZ  
 
r   c                 ^    ddl m} ddlm} | j	                  dd       }|
 ||      }|S |}|S )Nr   )%EmailAwarePasswordResetTokenGeneratorr   PASSWORD_RESET_TOKEN_GENERATOR)allauth.account.formsr   r:   r   r=   )r6   r   r   token_generator_pathtoken_generators        r   r   z*AppSettings.PASSWORD_RESET_TOKEN_GENERATOR  sA    O2#}}-MtT+./CDO  DOr   c                 &    | j                  dd      S )NEMAIL_UNKNOWN_ACCOUNTSTr@   rA   s    r   r   z"AppSettings.EMAIL_UNKNOWN_ACCOUNTS  s    }}5t<<r   c                 &    | j                  dd      S )NREAUTHENTICATION_TIMEOUTrv   r@   rA   s    r   r   z$AppSettings.REAUTHENTICATION_TIMEOUT  s    }}7==r   c                 &    | j                  dd      S )NEMAIL_NOTIFICATIONSFr@   rA   s    r   r   zAppSettings.EMAIL_NOTIFICATIONS  s    }}2E::r   c                 &    | j                  dd      S )NREAUTHENTICATION_REQUIREDFr@   rA   s    r   r   z%AppSettings.REAUTHENTICATION_REQUIRED  r   r   c                 &    | j                  dd      S )NLOGIN_BY_CODE_ENABLEDFr@   rA   s    r   r   z!AppSettings.LOGIN_BY_CODE_ENABLED  s    }}4e<<r   c                 &    | j                  dd      S )NLOGIN_BY_CODE_MAX_ATTEMPTSrJ   r@   rA   s    r   r   z&AppSettings.LOGIN_BY_CODE_MAX_ATTEMPTS  s    }}91==r   c                 &    | j                  dd      S )NLOGIN_BY_CODE_TIMEOUTry   r@   rA   s    r   r   z!AppSettings.LOGIN_BY_CODE_TIMEOUT  s    }}4f==r   c                 &    | j                  dd      S )z
        The maximum allowed time (in seconds) for a login to go through the
        various login stages. This limits, for example, the time span that the
        2FA stage remains available.
        LOGIN_TIMEOUTr\   r@   rA   s    r   r   zAppSettings.LOGIN_TIMEOUT  s     }}_g66r   returnc                 `    | j                  dd      }t        |t              r|S t        |      S )a@  
        When enabled (in case of ``True``), every user logging in is
        required to input a login confirmation code sent by email.
        Alternatively, you can specify a set of authentication methods
        (``"password"``, ``"mfa"``, or ``"socialaccount"``) for which login
        codes are required.
        LOGIN_BY_CODE_REQUIREDF)r=   r   boolset)r6   values     r   r   z"AppSettings.LOGIN_BY_CODE_REQUIRED  s.     6>eT"L5zr   N)Dr   r   r   strr   r   r!   r7   r=   propertyr?   rD   rH   rN   rP   r,   r.   rW   rY   r[   r1   r2   r+   ra   r-   re   rh   rk   rn   rr   r   r   r   r0   r   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	      s   *sD *
#t &P5
 : : F F 

 

 T T 	
 	
 6 6 
1 
1 J J K K L L : : 4 4 . . 6 6 3 3 @ @ D D Q Q
 	 	 $ $L ; ; 8 8 A A 8 8 7 7 7 7 C C Y Y < < D D C C ? ? Y Y
 5 5 A A F F @ @ P P 7 7 ; ; * * > > 0 0 ? ?  0 	 	 = = > > ; ; A A = = > > > > 7 7 dCHn(=  r   r	   ACCOUNT_c                 "    t        t        |       S )N)rK   _app_settings)r;   s    r   __getattr__r     s    =$''r   )r4   enumr   typingr   r   r   r   r	   r   r   r   r   r   <module>r      s/       7J JZ J'(r   