o
    hwI                     @   sJ   d dl Z d dlmZ d dlmZmZmZ G dd dZedZdd Z	dS )	    N)Enum)	FrozenSetSetUnionc                   @   s  e Zd ZG dd dee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efd d!Ze
defd"d#Ze
d$d% Ze
d&d' Ze
d(d) Ze
dee fd*d+Ze
d,d- Ze
d.d/ Ze
d0d1 Ze
defd2d3Z e
defd4d5Z!e
d6d7 Z"e
d8d9 Z#e
d:d; Z$e
d<d= Z%e
d>d? Z&e
d@dA Z'e
dBdC Z(e
dDdE Z)e
dFdG Z*e
dHdI Z+e
de,fdJdKZ-e
dLdM Z.e
dNdO Z/e
dPdQ Z0e
dRdS Z1e
dTdU Z2e
dVdW Z3e
dXdY Z4e
dZd[ Z5e
d\d] Z6e
d^d_ Z7e
d`da Z8e
dbdc Z9e
ddde Z:e
dfdg Z;e
dhdi Z<e
djdk Z=e
dldm Z>e
dndo Z?e
dpdq Z@e
drds ZAe
dtdu ZBe
dvdw ZCe
dxdy ZDe
dzd{ ZEe
d|d} ZFe
d~d ZGe
dd ZHe
dd ZIe
dd ZJe
dd ZKe
dd ZLe
dd ZMe
dd ZNe
dd ZOe
dePeQeRe f fddZSdS )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   S/var/www/html/pos/venv/lib/python3.10/site-packages/allauth/account/app_settings.pyAuthenticationMethod       r   c                   @   r   )zAppSettings.LoginMethodr   r	   phoneN)r   r   r   r   r   PHONEr   r   r   r   LoginMethod   r   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.confr1   r'   getattrr!   r1   r   r   r   r2   +   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   r8   8      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   r0   )EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL)r5   r1   r'   	LOGIN_URLr7   r   r   r   r;   @   s   z5AppSettings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URLc                 C   &   t jddd | jd}|o|d S )zT
        The user is required to hand over an email address when signing up
        z_app_settings.EMAIL_REQUIRED is deprecated, use: app_settings.SIGNUP_FIELDS['email']['required']r4   
stacklevelr	   requiredwarningswarnSIGNUP_FIELDSget)r!   r	   r   r   r   EMAIL_REQUIREDL      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   rH   X   s   

zAppSettings.EMAIL_VERIFICATIONc                 C   r(   )N"EMAIL_VERIFICATION_BY_CODE_ENABLEDFr*   r+   r   r   r   rJ   e   r,   z.AppSettings.EMAIL_VERIFICATION_BY_CODE_ENABLEDc                 C   r(   )N'EMAIL_VERIFICATION_BY_CODE_MAX_ATTEMPTSr4   r*   r+   r   r   r   rK   i   r,   z3AppSettings.EMAIL_VERIFICATION_BY_CODE_MAX_ATTEMPTSc                 C   r(   )N"EMAIL_VERIFICATION_BY_CODE_TIMEOUT  r*   r+   r   r   r   rL   m   r,   z.AppSettings.EMAIL_VERIFICATION_BY_CODE_TIMEOUTreturnc                 C   &   |  dd}t|tr|rdnd}|S )z{
        The maximum number of times the email can be changed after signup at
        the email veriication stage.
        "EMAIL_VERIFICATION_SUPPORTS_CHANGEF   r   r'   
isinstanceboolr!   vr   r   r   #EMAIL_VERIFICATION_MAX_CHANGE_COUNTq      
z/AppSettings.EMAIL_VERIFICATION_MAX_CHANGE_COUNTc                 C   rO   )za
        The maximum number of times the user can request a new email verification code.
        "EMAIL_VERIFICATION_SUPPORTS_RESENDFrQ   r   rR   rU   r   r   r   #EMAIL_VERIFICATION_MAX_RESEND_COUNT|   s   
z/AppSettings.EMAIL_VERIFICATION_MAX_RESEND_COUNTc                 C   s   |  dd S )NMAX_EMAIL_ADDRESSESr*   r+   r   r   r   r[      r,   zAppSettings.MAX_EMAIL_ADDRESSESc                 C   r(   )NCHANGE_EMAILFr*   r+   r   r   r   r\      r,   zAppSettings.CHANGE_EMAILc                 C   sT   t jddd | j}| jj|v r| jj|v rdS | jj|v r dS | jj|v r(dS t)NzQapp_settings.AUTHENTICATION_METHOD is deprecated, use: app_settings.LOGIN_METHODSr4   r>   r
   r	   r   )rB   rC   LOGIN_METHODSr   r   r   NotADirectoryError)r!   methodsr   r   r   AUTHENTICATION_METHOD   s   z!AppSettings.AUTHENTICATION_METHODc                    sd     dd }|d u r'  d jj}| jjkr! jj jjh}n |h}t fdd|D S )Nr]   r`   c                    s   g | ]}  |qS r   )r   ).0mr+   r   r   
<listcomp>   s    z-AppSettings.LOGIN_METHODS.<locals>.<listcomp>)r'   r   r   r   r   r   	frozenset)r!   r_   auth_methodr   r+   r   r]      s   zAppSettings.LOGIN_METHODSc                 C   r(   )z6
        Adjust max_length of email addresses
        EMAIL_MAX_LENGTH   r*   r+   r   r   r   rf         zAppSettings.EMAIL_MAX_LENGTHc                 C   r(   )NPHONE_VERIFICATION_ENABLEDTr*   r+   r   r   r   ri      r,   z&AppSettings.PHONE_VERIFICATION_ENABLEDc                 C   r(   )NPHONE_VERIFICATION_MAX_ATTEMPTSr4   r*   r+   r   r   r   rj      r,   z+AppSettings.PHONE_VERIFICATION_MAX_ATTEMPTSc                 C   rO   )z
        The maximum number of times the phone number can be changed after
        signup at the phone number verification stage.
        "PHONE_VERIFICATION_SUPPORTS_CHANGEFrQ   r   rR   rU   r   r   r   #PHONE_VERIFICATION_MAX_CHANGE_COUNT   rX   z/AppSettings.PHONE_VERIFICATION_MAX_CHANGE_COUNTc                 C   rO   )zp
        The maximum number of times the user can request a new phone number
        verification code.
        "PHONE_VERIFICATION_SUPPORTS_RESENDFrQ   r   rR   rU   r   r   r   #PHONE_VERIFICATION_MAX_RESEND_COUNT   rX   z/AppSettings.PHONE_VERIFICATION_MAX_RESEND_COUNTc                 C   r(   )NPHONE_VERIFICATION_TIMEOUTrM   r*   r+   r   r   r   ro      r,   z&AppSettings.PHONE_VERIFICATION_TIMEOUTc                 C   r(   )z7
        Enforce uniqueness of email addresses
        UNIQUE_EMAILTr*   r+   r   r   r   rp      rh   zAppSettings.UNIQUE_EMAILc                 C      t jddd d| jv S )z+
        Signup email verification
        z`app_settings.SIGNUP_EMAIL_ENTER_TWICE is deprecated, use: 'email2' in app_settings.SIGNUP_FIELDSr4   r>   email2rB   rC   rD   r+   r   r   r   SIGNUP_EMAIL_ENTER_TWICE   
   
z$AppSettings.SIGNUP_EMAIL_ENTER_TWICEc                 C   rq   )z.
        Signup password verification
        zfapp_settings.SIGNUP_PASSWORD_ENTER_TWICE is deprecated, use: 'password2' in app_settings.SIGNUP_FIELDSr4   r>   	password2rs   r+   r   r   r   SIGNUP_PASSWORD_ENTER_TWICE   ru   z'AppSettings.SIGNUP_PASSWORD_ENTER_TWICEc                 C   r:   )Nr   r0   SIGNUP_REDIRECT_URL)r5   r1   r'   LOGIN_REDIRECT_URLr7   r   r   r   rx      s   zAppSettings.SIGNUP_REDIRECT_URLc                 C   s&   ddl m} d}|js| dd}|S )z)
        Minimum password Length
        r   r0   NPASSWORD_MIN_LENGTH   )r5   r1   AUTH_PASSWORD_VALIDATORSr'   )r!   r1   rI   r   r   r   rz      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||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1/m/userz	10/m/userz20/m/ip,5/m/keyz20/m/ipz30/m/ipz20/m/ip,3/m/keyz1/30s/key,3/m/ip)change_passwordchange_phonemanage_emailreset_passwordreauthenticatereset_password_from_keysignuploginrequest_login_codelogin_failedconfirm_emailverify_phone)r'   rJ   update)r!   rlsattempts_amountattempts_timeoutlogin_failed_rlconfirm_email_rlcooldownrI   r   r   r   r}     s:   
zAppSettings.RATE_LIMITSc                 C   r(   )zD
        Subject-line prefix to use for email messages sent
        EMAIL_SUBJECT_PREFIXNr*   r+   r   r   r   r   2  rh   z AppSettings.EMAIL_SUBJECT_PREFIXc                 C   r(   )z
        Signup form
        SIGNUP_FORM_CLASSNr*   r+   r   r   r   r   9  rh   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   r   @  rh   z&AppSettings.SIGNUP_FORM_HONEYPOT_FIELDc                 C   s   |  dd }|sQg }|  dd}|  dd}|  dd}|  d|  dd}|r.|d	 n|d
 |r>||r;dnd |rE|d |d |rQ|d i }|D ]}|d\}}	}
dt|	i||< qU|S )NrD   USERNAME_REQUIREDTrF   Frt   rw   SIGNUP_PASSWORD_VERIFICATIONzemail*r	   zemail2*rr   z	username*z
password1*z
password2**r@   )r'   append	partitionrT   )r!   fieldsr   r	   rr   rv   rI   fieldfreq_r   r   r   rD   G  s2   




zAppSettings.SIGNUP_FIELDSc                 C   r=   )zJ
        The user is required to enter a username when signing up
        zeapp_settings.USERNAME_REQUIRED is deprecated, use: app_settings.SIGNUP_FIELDS['username']['required']r4   r>   r   r@   rA   )r!   r   r   r   r   r   d  rG   zAppSettings.USERNAME_REQUIREDc                 C   r(   )z)
        Minimum username Length
        USERNAME_MIN_LENGTH   r*   r+   r   r   r   r   p  rh   zAppSettings.USERNAME_MIN_LENGTHc                 C   s   |  dg S )z8
        List of usernames that are not allowed
        USERNAME_BLACKLISTr*   r+   r   r   r   r   w  rh   zAppSettings.USERNAME_BLACKLISTc                 C   r(   )zJ
        render_value parameter as passed to PasswordInput fields
        PASSWORD_INPUT_RENDER_VALUEFr*   r+   r   r   r   r   ~  rh   z'AppSettings.PASSWORD_INPUT_RENDER_VALUEc                 C   r(   )NADAPTERz-allauth.account.adapter.DefaultAccountAdapterr*   r+   r   r   r   r     r,   zAppSettings.ADAPTERc                 C   r(   )NCONFIRM_EMAIL_ON_GETFr*   r+   r   r   r   r     r,   z AppSettings.CONFIRM_EMAIL_ON_GETc                 C   r(   )NAUTHENTICATED_LOGIN_REDIRECTSTr*   r+   r   r   r   r     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   r     rh   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   r     r9   z#AppSettings.LOGIN_ON_PASSWORD_RESETc                 C   s   ddl m} | d|jpdS )Nr   r0   LOGOUT_REDIRECT_URLr   )r5   r1   r'   r   r7   r   r   r   r     s   zAppSettings.LOGOUT_REDIRECT_URLc                 C   r(   )NLOGOUT_ON_GETFr*   r+   r   r   r   r     r,   zAppSettings.LOGOUT_ON_GETc                 C   r(   )NLOGOUT_ON_PASSWORD_CHANGEFr*   r+   r   r   r   r     r,   z%AppSettings.LOGOUT_ON_PASSWORD_CHANGEc                 C   r(   )NUSER_MODEL_USERNAME_FIELDr   r*   r+   r   r   r   r     r,   z%AppSettings.USER_MODEL_USERNAME_FIELDc                 C   r(   )NUSER_MODEL_EMAIL_FIELDr	   r*   r+   r   r   r   r     r,   z"AppSettings.USER_MODEL_EMAIL_FIELDc                 C   r:   )zP
        Deprecated -- use Django's settings.SESSION_COOKIE_AGE instead
        r   r0   SESSION_COOKIE_AGE)r5   r1   r'   r   r7   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        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     rh   zAppSettings.TEMPLATE_EXTENSIONc                 C   s   |  di S )NFORMSr*   r+   r   r   r   r     r,   zAppSettings.FORMSc                 C   r(   )NEMAIL_CONFIRMATION_HMACTr*   r+   r   r   r   r     r,   z#AppSettings.EMAIL_CONFIRMATION_HMACc                 C   r(   )NSALTaccountr*   r+   r   r   r   r     r,   zAppSettings.SALTc                 C   r(   )NPRESERVE_USERNAME_CASINGTr*   r+   r   r   r   r     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'   rS   listr   _meta	get_field
validators)r!   r   r   r   pathrI   r   r   r   r     s&   


zAppSettings.USERNAME_VALIDATORSc                 C   r(   )NPASSWORD_RESET_BY_CODE_ENABLEDFr*   r+   r   r   r   r     r,   z*AppSettings.PASSWORD_RESET_BY_CODE_ENABLEDc                 C   r(   )N#PASSWORD_RESET_BY_CODE_MAX_ATTEMPTSr4   r*   r+   r   r   r   r     r,   z/AppSettings.PASSWORD_RESET_BY_CODE_MAX_ATTEMPTSc                 C   r(   )NPASSWORD_RESET_BY_CODE_TIMEOUTr   r*   r+   r   r   r   r      r,   z*AppSettings.PASSWORD_RESET_BY_CODE_TIMEOUTc                 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     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_TIMEOUTr   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_ATTEMPTSr4   r*   r+   r   r   r   r   $  r,   z&AppSettings.LOGIN_BY_CODE_MAX_ATTEMPTSc                 C   r(   )NLOGIN_BY_CODE_TIMEOUTr   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_TIMEOUTrM   r*   r+   r   r   r   r   ,  r   zAppSettings.LOGIN_TIMEOUTc                 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'   rS   rT   set)r!   valuer   r   r   r   5  s   	
z"AppSettings.LOGIN_BY_CODE_REQUIREDN)Tr   r   r   strr   r   r   r   r"   r'   propertyr)   r-   r2   r8   r;   rF   rH   rJ   rK   rL   intrW   rZ   r[   r\   r`   r   r]   rf   ri   rj   rl   rn   ro   rp   rt   rw   rx   rz   r}   r   r   r   dictrD   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   rT   r   r   r   r   r   r   r      s   











	
















.




































 r   ACCOUNT_c                 C   s
   t t| S r   )r6   _app_settings)r%   r   r   r   __getattr__G  s   
r   )
rB   enumr   typingr   r   r   r   r   r   r   r   r   r   <module>   s        B