o
    "4g 5                     @   s>   d dl mZ d dlmZmZ G dd dZedZdd ZdS )	    )Enum)SetUnionc                   @   s  e Zd ZG dd deeZG dd deeZdd Zdd Ze	d	d
 Z
e	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd  Ze	d!d" Ze	d#d$ Ze	d%d& Ze	d'd( Ze	d)d* Ze	d+d, Ze	d-d. Ze	d/d0 Ze	d1d2 Ze	d3d4 Ze	d5d6 Z e	d7d8 Z!e	d9d: Z"e	d;d< Z#e	d=d> Z$e	d?d@ Z%e	dAdB Z&e	dCdD Z'e	dEdF Z(e	dGdH Z)e	dIdJ Z*e	dKdL Z+e	dMdN Z,e	dOdP Z-e	dQdR Z.e	dSdT Z/e	dUdV Z0e	dWdX Z1e	dYdZ Z2e	d[d\ Z3e	d]d^ Z4e	d_d` Z5e	dadb Z6e	dcdd Z7e	dedf Z8e	dgdh Z9e	didj Z:e	dkdl Z;e	dmdn Z<e	dodp Z=e	dqdr Z>e	dsdt Z?e	due@eAeBe f fdvdwZCdxS )yAppSettingsc                   @      e Zd ZdZdZdZdS )z AppSettings.AuthenticationMethodusernameemailusername_emailN)__name__
__module____qualname__USERNAMEEMAILUSERNAME_EMAIL r   r   e/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/account/app_settings.pyAuthenticationMethod   s    r   c                   @   r   )z#AppSettings.EmailVerificationMethod	mandatoryoptionalnoneN)r
   r   r   	MANDATORYOPTIONALNONEr   r   r   r   EmailVerificationMethod   s    r   c                 C   s
   || _ d S N)prefix)selfr   r   r   r   __init__   s   
zAppSettings.__init__c                 C   s   ddl m} || j| |S )Nr   )get_setting)allauth.utilsr   r   )r   namedfltr   r   r   r   _setting   s   zAppSettings._settingc                 C      |  ddS )NPREVENT_ENUMERATIONTr"   r   r   r   r   r$         zAppSettings.PREVENT_ENUMERATIONc                 C   s   |  dd S )NDEFAULT_HTTP_PROTOCOLhttp)r"   lowerr&   r   r   r   r(   !   s   z!AppSettings.DEFAULT_HTTP_PROTOCOLc                 C   s    ddl m} | dt|ddS )z`
        Determines the expiration date of email confirmation mails (#
        of days)
        r   settingsEMAIL_CONFIRMATION_EXPIRE_DAYSEMAIL_CONFIRMATION_DAYS   )django.confr,   r"   getattrr   r,   r   r   r   r-   %   s
   
z*AppSettings.EMAIL_CONFIRMATION_EXPIRE_DAYSc                 C   r#   )zx
        The URL to redirect to after a successful email confirmation, in
        case of an authenticated user
        -EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLNr%   r&   r   r   r   r3   2      z9AppSettings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLc                 C      ddl m} | 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)r0   r,   r"   	LOGIN_URLr2   r   r   r   r6   :   s   z5AppSettings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URLc                 C   r#   )zT
        The user is required to hand over an email address when signing up
        EMAIL_REQUIREDFr%   r&   r   r   r   r8   F      zAppSettings.EMAIL_REQUIREDc                 C   s<   |  d| jj}|du r| jj}n|du r| jj}| |S )z/
        See email verification method
        EMAIL_VERIFICATIONTF)r"   r   r   r   r   retr   r   r   r:   M   s   

zAppSettings.EMAIL_VERIFICATIONc                 C   r#   )N"EMAIL_VERIFICATION_BY_CODE_ENABLEDFr%   r&   r   r   r   r=   Z   r'   z.AppSettings.EMAIL_VERIFICATION_BY_CODE_ENABLEDc                 C   r#   )N'EMAIL_VERIFICATION_BY_CODE_MAX_ATTEMPTSr/   r%   r&   r   r   r   r>   ^   r'   z3AppSettings.EMAIL_VERIFICATION_BY_CODE_MAX_ATTEMPTSc                 C   r#   )N"EMAIL_VERIFICATION_BY_CODE_TIMEOUT  r%   r&   r   r   r   r?   b   r'   z.AppSettings.EMAIL_VERIFICATION_BY_CODE_TIMEOUTc                 C   s   |  dd S )NMAX_EMAIL_ADDRESSESr%   r&   r   r   r   rA   f   r'   zAppSettings.MAX_EMAIL_ADDRESSESc                 C   r#   )NCHANGE_EMAILFr%   r&   r   r   r   rB   j   r'   zAppSettings.CHANGE_EMAILc                 C   s   |  d| jj}| |S )NAUTHENTICATION_METHOD)r"   r   r   r;   r   r   r   rC   n   s   
z!AppSettings.AUTHENTICATION_METHODc                 C   r#   )z6
        Adjust max_length of email addresses
        EMAIL_MAX_LENGTH   r%   r&   r   r   r   rD   s   r9   zAppSettings.EMAIL_MAX_LENGTHc                 C   r#   )z7
        Enforce uniqueness of email addresses
        UNIQUE_EMAILTr%   r&   r   r   r   rF   z   r9   zAppSettings.UNIQUE_EMAILc                 C   r#   )z+
        Signup email verification
        SIGNUP_EMAIL_ENTER_TWICEFr%   r&   r   r   r   rG      r9   z$AppSettings.SIGNUP_EMAIL_ENTER_TWICEc                 C   s   |  dd}|  d|S )z.
        Signup password verification
        SIGNUP_PASSWORD_VERIFICATIONTSIGNUP_PASSWORD_ENTER_TWICEr%   )r   legacyr   r   r   rI      s   z'AppSettings.SIGNUP_PASSWORD_ENTER_TWICEc                 C   r5   )Nr   r+   SIGNUP_REDIRECT_URL)r0   r,   r"   LOGIN_REDIRECT_URLr2   r   r   r   rK      s   zAppSettings.SIGNUP_REDIRECT_URLc                 C   s&   ddl m} d}|js| dd}|S )z)
        Minimum password Length
        r   r+   NPASSWORD_MIN_LENGTH   )r0   r,   AUTH_PASSWORD_VALIDATORSr"   )r   r,   r<   r   r   r   rM      s
   zAppSettings.PASSWORD_MIN_LENGTHc                 C   s   |  di }|du ri S |  dd}|  dd}d }|r'|r'd| d| d	}| jr-d
}n|  dd}d }|r=d| d	}dddddddd||d
}|| |S )NRATE_LIMITSFLOGIN_ATTEMPTS_LIMIT   LOGIN_ATTEMPTS_TIMEOUT,  z10/m/ip,/zs/keyz	1/10s/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"   r=   update)r   rlsattempts_amountattempts_timeoutlogin_failed_rlconfirm_email_rlcooldownr<   r   r   r   rP      s6   
zAppSettings.RATE_LIMITSc                 C   r#   )zD
        Subject-line prefix to use for email messages sent
        EMAIL_SUBJECT_PREFIXNr%   r&   r   r   r   ri      r9   z AppSettings.EMAIL_SUBJECT_PREFIXc                 C   r#   )z
        Signup form
        SIGNUP_FORM_CLASSNr%   r&   r   r   r   rj      r9   zAppSettings.SIGNUP_FORM_CLASSc                 C   r#   )z_
        Honeypot field name. Empty string or ``None`` will disable honeypot behavior.
        SIGNUP_FORM_HONEYPOT_FIELDNr%   r&   r   r   r   rk      r9   z&AppSettings.SIGNUP_FORM_HONEYPOT_FIELDc                 C   r#   )zJ
        The user is required to enter a username when signing up
        USERNAME_REQUIREDTr%   r&   r   r   r   rl      r9   zAppSettings.USERNAME_REQUIREDc                 C   r#   )z)
        Minimum username Length
        USERNAME_MIN_LENGTH   r%   r&   r   r   r   rm      r9   zAppSettings.USERNAME_MIN_LENGTHc                 C   s   |  dg S )z8
        List of usernames that are not allowed
        USERNAME_BLACKLISTr%   r&   r   r   r   ro      r9   zAppSettings.USERNAME_BLACKLISTc                 C   r#   )zJ
        render_value parameter as passed to PasswordInput fields
        PASSWORD_INPUT_RENDER_VALUEFr%   r&   r   r   r   rp      r9   z'AppSettings.PASSWORD_INPUT_RENDER_VALUEc                 C   r#   )NADAPTERz-allauth.account.adapter.DefaultAccountAdapterr%   r&   r   r   r   rq      r'   zAppSettings.ADAPTERc                 C   r#   )NCONFIRM_EMAIL_ON_GETFr%   r&   r   r   r   rr     r'   z AppSettings.CONFIRM_EMAIL_ON_GETc                 C   r#   )NAUTHENTICATED_LOGIN_REDIRECTSTr%   r&   r   r   r   rs     r'   z)AppSettings.AUTHENTICATED_LOGIN_REDIRECTSc                 C   r#   )zW
        Automatically log the user in once they confirmed their email address
        LOGIN_ON_EMAIL_CONFIRMATIONFr%   r&   r   r   r   rt   
  r9   z'AppSettings.LOGIN_ON_EMAIL_CONFIRMATIONc                 C   r#   )zc
        Automatically log the user in immediately after resetting
        their password.
        LOGIN_ON_PASSWORD_RESETFr%   r&   r   r   r   ru     r4   z#AppSettings.LOGIN_ON_PASSWORD_RESETc                 C   s   ddl m} | d|jpdS )Nr   r+   LOGOUT_REDIRECT_URLrU   )r0   r,   r"   rv   r2   r   r   r   rv     s   zAppSettings.LOGOUT_REDIRECT_URLc                 C   r#   )NLOGOUT_ON_GETFr%   r&   r   r   r   rw     r'   zAppSettings.LOGOUT_ON_GETc                 C   r#   )NLOGOUT_ON_PASSWORD_CHANGEFr%   r&   r   r   r   rx   #  r'   z%AppSettings.LOGOUT_ON_PASSWORD_CHANGEc                 C   r#   )NUSER_MODEL_USERNAME_FIELDr   r%   r&   r   r   r   ry   '  r'   z%AppSettings.USER_MODEL_USERNAME_FIELDc                 C   r#   )NUSER_MODEL_EMAIL_FIELDr   r%   r&   r   r   r   rz   +  r'   z"AppSettings.USER_MODEL_EMAIL_FIELDc                 C   r5   )zP
        Deprecated -- use Django's settings.SESSION_COOKIE_AGE instead
        r   r+   SESSION_COOKIE_AGE)r0   r,   r"   r{   r2   r   r   r   r{   /  s   zAppSettings.SESSION_COOKIE_AGEc                 C   r#   )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%   r&   r   r   r   r|   8     zAppSettings.SESSION_REMEMBERc                 C   r#   )zV
        A string defining the template extension to use, defaults to `html`.
        TEMPLATE_EXTENSIONhtmlr%   r&   r   r   r   r~   A  r9   zAppSettings.TEMPLATE_EXTENSIONc                 C   s   |  di S )NFORMSr%   r&   r   r   r   r   H  r'   zAppSettings.FORMSc                 C   r#   )NEMAIL_CONFIRMATION_HMACTr%   r&   r   r   r   r   L  r'   z#AppSettings.EMAIL_CONFIRMATION_HMACc                 C   r#   )NSALTaccountr%   r&   r   r   r   r   P  r'   zAppSettings.SALTc                 C   r#   )NPRESERVE_USERNAME_CASINGTr%   r&   r   r   r   r   T  r'   z$AppSettings.PRESERVE_USERNAME_CASINGc                 C   sz   ddl m} ddlm} ddlm} | dd }|r)||}t|ts'|d|S | j	d ur9| j
| j	j}|S g }|S )Nr   )get_user_model)ImproperlyConfiguredimport_attributeUSERNAME_VALIDATORSz4ACCOUNT_USERNAME_VALIDATORS is expected to be a list)django.contrib.authr   django.core.exceptionsr   r   r   r"   
isinstancelistry   _meta	get_field
validators)r   r   r   r   pathr<   r   r   r   r   X  s&   


zAppSettings.USERNAME_VALIDATORSc                 C   s@   ddl m} ddlm} | dd }|d ur||}|S |}|S )Nr   )%EmailAwarePasswordResetTokenGeneratorr   PASSWORD_RESET_TOKEN_GENERATOR)allauth.account.formsr   r   r   r"   )r   r   r   token_generator_pathtoken_generatorr   r   r   r   q  s   z*AppSettings.PASSWORD_RESET_TOKEN_GENERATORc                 C   r#   )NEMAIL_UNKNOWN_ACCOUNTSTr%   r&   r   r   r   r   }  r'   z"AppSettings.EMAIL_UNKNOWN_ACCOUNTSc                 C   r#   )NREAUTHENTICATION_TIMEOUTrT   r%   r&   r   r   r   r     r'   z$AppSettings.REAUTHENTICATION_TIMEOUTc                 C   r#   )NEMAIL_NOTIFICATIONSFr%   r&   r   r   r   r     r'   zAppSettings.EMAIL_NOTIFICATIONSc                 C   r#   )NREAUTHENTICATION_REQUIREDFr%   r&   r   r   r   r     r'   z%AppSettings.REAUTHENTICATION_REQUIREDc                 C   r#   )NLOGIN_BY_CODE_ENABLEDFr%   r&   r   r   r   r     r'   z!AppSettings.LOGIN_BY_CODE_ENABLEDc                 C   r#   )NLOGIN_BY_CODE_MAX_ATTEMPTSr/   r%   r&   r   r   r   r     r'   z&AppSettings.LOGIN_BY_CODE_MAX_ATTEMPTSc                 C   r#   )NLOGIN_BY_CODE_TIMEOUTrW   r%   r&   r   r   r   r     r'   z!AppSettings.LOGIN_BY_CODE_TIMEOUTc                 C   r#   )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%   r&   r   r   r   r     r}   zAppSettings.LOGIN_TIMEOUTreturnc                 C   s"   |  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)r   valuer   r   r   r     s   	
z"AppSettings.LOGIN_BY_CODE_REQUIREDN)Dr
   r   r   strr   r   r   r   r"   propertyr$   r(   r-   r3   r6   r8   r:   r=   r>   r?   rA   rB   rC   rD   rF   rG   rI   rK   rM   rP   ri   rj   rk   rl   rm   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   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    




















*

































 r   ACCOUNT_c                 C   s
   t t| S r   )r1   _app_settings)r    r   r   r   __getattr__  s   
r   N)enumr   typingr   r   r   r   r   r   r   r   r   <module>   s       /