U
    ÔÉ>iô  ã                   @   s:   d dl mZ d dlmZ G dd„ dƒZedƒZdd„ ZdS )	é    )Ú	timedelta)ÚOptionalc                   @   s€  e Zd Zdd„ Zdd„ Zedd„ ƒZeedœ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edœdd„ƒZeedœd d!„ƒZeedœd"d#„ƒZeedœd$d%„ƒZeedœd&d'„ƒZeedœd(d)„ƒZeee dœd*d+„ƒZeedœd,d-„ƒZeedœd.d/„ƒZeedœd0d1„ƒZeee dœd2d3„ƒZ d4S )5ÚAppSettingsc                 C   s
   || _ d S ©N)Úprefix)Úselfr   © r   ú</tmp/pip-unpacked-wheel-upujnpc2/allauth/mfa/app_settings.pyÚ__init__   s    zAppSettings.__init__c                 C   s   ddl m} || j| |ƒS )Nr   )Úget_setting)Zallauth.utilsr   r   )r   ÚnameÚdfltr   r   r   r	   Ú_setting	   s    zAppSettings._settingc                 C   s   |   dd¡S )NÚADAPTERz%allauth.mfa.adapter.DefaultMFAAdapter©r   ©r   r   r   r	   r      s    zAppSettings.ADAPTER)Úreturnc                 C   s   |   dd¡S )NÚALLOW_UNVERIFIED_EMAILFr   r   r   r   r	   r      s    z"AppSettings.ALLOW_UNVERIFIED_EMAILc                 C   s   |   di ¡S )NÚFORMSr   r   r   r   r	   r      s    zAppSettings.FORMSc                 C   s   |   dd¡S )z/
        The number of recovery codes.
        ÚRECOVERY_CODE_COUNTé
   r   r   r   r   r	   r      s    zAppSettings.RECOVERY_CODE_COUNTc                 C   s   |   dd¡S )z=
        The number of digits of each recovery code.
        ÚRECOVERY_CODE_DIGITSé   r   r   r   r   r	   r   !   s    z AppSettings.RECOVERY_CODE_DIGITSc                 C   s   |   dd¡S )zL
        The period that a TOTP code will be valid for, in seconds.
        ÚTOTP_PERIODé   r   r   r   r   r	   r   (   s    zAppSettings.TOTP_PERIODc                 C   s   |   dd¡S )z5
        The number of digits for TOTP codes
        ÚTOTP_DIGITSé   r   r   r   r   r	   r   /   s    zAppSettings.TOTP_DIGITSc                 C   s   |   dd¡S )z
        The issuer.
        ÚTOTP_ISSUERÚ r   r   r   r   r	   r   6   s    zAppSettings.TOTP_ISSUERc                 C   s:   ddl m} ddlm} |  dd¡}|js6|r6|dƒ‚|S )zX
        Don't use this on production. Useful for development & E2E tests only.
        r   ©Úsettings)ÚImproperlyConfiguredÚTOTP_INSECURE_BYPASS_CODENz:MFA_TOTP_INSECURE_BYPASS_CODE is for testing purposes only)Údjango.confr    Zdjango.core.exceptionsr!   r   ÚDEBUG)r   r    r!   Úcoder   r   r	   r"   =   s    
ÿz%AppSettings.TOTP_INSECURE_BYPASS_CODEc                 C   s   |   dd¡S )z”
        The number of time steps in the past or future to allow. Lower values are more secure, but more likely to fail due to clock drift.
        ÚTOTP_TOLERANCEr   r   r   r   r   r	   r&   L   s    zAppSettings.TOTP_TOLERANCEc                 C   s   ddg}|   d|¡S )NZrecovery_codesZtotpÚSUPPORTED_TYPESr   )r   r   r   r   r	   r'   S   s    zAppSettings.SUPPORTED_TYPESc                 C   s   |   dd¡S )NÚWEBAUTHN_ALLOW_INSECURE_ORIGINFr   r   r   r   r	   r(   X   s    z*AppSettings.WEBAUTHN_ALLOW_INSECURE_ORIGINc                 C   s   d| j ko|  dd¡S )NÚwebauthnÚPASSKEY_LOGIN_ENABLEDF©r'   r   r   r   r   r	   r*   \   s     ÿz!AppSettings.PASSKEY_LOGIN_ENABLEDc                 C   s   d| j ko|  dd¡S )Nr)   ÚPASSKEY_SIGNUP_ENABLEDFr+   r   r   r   r	   r,   b   s     ÿz"AppSettings.PASSKEY_SIGNUP_ENABLEDc                 C   s   |   dd¡S )NÚTRUST_ENABLEDFr   r   r   r   r	   r-   h   s    zAppSettings.TRUST_ENABLEDc                 C   s   ddl m} | jp|jS )Nr   )Úapp_settings)Zallauth.accountr.   r-   ZLOGIN_BY_CODE_TRUST_ENABLED)r   Zaccount_settingsr   r   r	   Ú_TRUST_STAGE_ENABLEDl   s    z AppSettings._TRUST_STAGE_ENABLEDc                 C   s*   |   dtdd¡}t|tƒs&t|d}|S )NÚTRUST_COOKIE_AGEé   )Údays)Úseconds)r   r   Ú
isinstance)r   Zager   r   r	   r0   r   s    

zAppSettings.TRUST_COOKIE_AGEc                 C   s   |   dd¡S )NÚTRUST_COOKIE_NAMEZmfa_trustedr   r   r   r   r	   r5   y   s    zAppSettings.TRUST_COOKIE_NAMEc                 C   s   ddl m} |  d|j¡S )Nr   r   ÚTRUST_COOKIE_DOMAIN)r#   r    r   ZSESSION_COOKIE_DOMAIN©r   r    r   r   r	   r6   }   s    zAppSettings.TRUST_COOKIE_DOMAINc                 C   s   ddl m} |  d|j¡S )Nr   r   ÚTRUST_COOKIE_HTTPONLY)r#   r    r   ZSESSION_COOKIE_HTTPONLYr7   r   r   r	   r8   ƒ   s    z!AppSettings.TRUST_COOKIE_HTTPONLYc                 C   s   ddl m} |  d|j¡S )Nr   r   ÚTRUST_COOKIE_PATH)r#   r    r   ZSESSION_COOKIE_PATHr7   r   r   r	   r9   ‰   s    zAppSettings.TRUST_COOKIE_PATHc                 C   s   ddl m} |  d|j¡S )Nr   r   ÚTRUST_COOKIE_SAMESITE)r#   r    r   ZSESSION_COOKIE_SAMESITEr7   r   r   r	   r:      s    z!AppSettings.TRUST_COOKIE_SAMESITEc                 C   s   ddl m} |  d|j¡S )Nr   r   ÚTRUST_COOKIE_SECURE)r#   r    r   ZSESSION_COOKIE_SECUREr7   r   r   r	   r;   •   s    zAppSettings.TRUST_COOKIE_SECUREN)!Ú__name__Ú
__module__Ú__qualname__r
   r   Úpropertyr   Úboolr   r   r   r   r   r   r   r"   r&   r'   r(   r*   r,   r-   r/   r   r0   Ústrr5   r   r6   r8   r9   r:   r;   r   r   r   r	   r      s`   










r   ZMFA_c                 C   s
   t t| ƒS r   )ÚgetattrÚ_app_settings)r   r   r   r	   Ú__getattr__Ÿ   s    rD   N)Údatetimer   Útypingr   r   rC   rD   r   r   r   r	   Ú<module>   s
    