
    Vvg,                        d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	  G d d          Z
 G d d          Z G d	 d
          Z eej        ej        ej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej                  d             Zed             ZdefdZdS )    )TagsWarningregister)import_string)AxesStandaloneBackend)settingsc                   "    e Zd ZdZdZdZdZdZdS )Messagesa]  You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.zMYou do not have 'axes.middleware.AxesMiddleware' in your settings.MIDDLEWARE.zmYou do not have 'axes.backends.AxesStandaloneBackend' or a subclass in your settings.AUTHENTICATION_BACKENDS.zVYou have a deprecated setting {deprecated_setting} configured in your project settingsz+{callable_setting} is not a valid callable.N__name__
__module____qualname__CACHE_INVALIDMIDDLEWARE_INVALIDBACKEND_INVALIDSETTING_DEPRECATEDCALLABLE_INVALID     H/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/axes/checks.pyr
   r
      s:        	l  	X  FOqDr   r
   c                   "    e Zd ZdZdZdZdZdZdS )HintsNzQAxesModelBackend was renamed to AxesStandaloneBackend in django-axes version 5.0.r   r   r   r   r   r      s,        MiOr   r   c                   "    e Zd ZdZdZdZdZdZdS )Codesz	axes.W001z	axes.W002z	axes.W003z	axes.W004z	axes.W005Nr   r   r   r   r   r   #   s,        M$!O$"r   r   c                 p   t          t          dd          }t          t          dd          }t          j                            |i           }|                    dd          }g d}g }|dk    rG||v rC|                    t          t          j        t          j        t          j                             |S )	NAXES_HANDLER 
AXES_CACHEdefaultBACKEND)z+django.core.cache.backends.dummy.DummyCachez-django.core.cache.backends.locmem.LocMemCachez3django.core.cache.backends.filebased.FileBasedCachez$axes.handlers.cache.AxesCacheHandlermsghintid)
getattrr   CACHESgetappendr   r
   r   r   r   )app_configskwargsaxes_handleraxes_cache_keyaxes_cache_configaxes_cache_backendaxes_cache_backend_incompatiblewarningss           r   axes_cache_checkr1   +   s    8^R88LX|Y??N ++NB??*..y"==' ' '# H===!@@@OO .,*     Or   c                     g }dt           j        vrC|                    t          t          j        t          j        t          j                             |S )Nzaxes.middleware.AxesMiddlewarer!   )r   
MIDDLEWAREr(   r   r
   r   r   r   )r)   r*   r0   s      r   axes_middleware_checkr4   H   sV    H'x/BBB/-+  	
 	
 	
 Or   c                    g }d}t           j        D ]k}	 t          |          }n?# t          $ r}t          d          |d }~wt          $ r}t	          d          |d }~ww xY wt          |t                    rd} nl|sC|                    t          t          j
        t          j
        t          j
                             |S )NFzDCan not find module path defined in settings.AUTHENTICATION_BACKENDSzHCan not import backend class defined in settings.AUTHENTICATION_BACKENDSTr!   )r   AUTHENTICATION_BACKENDSr   ModuleNotFoundErrorImportError
issubclassr   r(   r   r
   r   r   r   )r)   r*   r0   foundnamebackendes          r   axes_backend_checkr>   X   s   HE0  		#D))GG" 	 	 	%V   	 	 	Z 	
 g455 	EE	  
,*(  	
 	
 	
 Os   $
A >A AA c                    g }g d}|D ]u}	 t          t          |           |                    t          t          j                            |          d t          j                             f# t          $ r Y rw xY w|S )N)
AXES_DISABLE_SUCCESS_ACCESS_LOGAXES_LOGGERAXES_PROXY_ORDERAXES_PROXY_COUNTAXES_PROXY_TRUSTED_IPSAXES_META_PRECEDENCE_ORDERAXES_ONLY_USER_FAILURESAXES_LOCK_OUT_BY_USER_OR_IP(AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IPAXES_USE_USER_AGENT)deprecated_settingr!   )	r%   r   r(   r   r
   r   formatr   AttributeError)r)   r*   r0   deprecated_settingsrJ   s        r   axes_deprecation_checkrN   y   s    H  $ 2  	H0111OO 3::+= ;   /       	 	 	D	 Os   A"A//
A<;A<c                    g }g d}|D ]}}t          t          |          }t          |          sW|                    t	          t
          j                            |          t          j        t          j                             ~|S )N)AXES_CLIENT_IP_CALLABLEAXES_CLIENT_STR_CALLABLEAXES_LOCKOUT_CALLABLEAXES_USERNAME_CALLABLEAXES_WHITELIST_CALLABLEAXES_COOLOFF_TIMEAXES_LOCKOUT_PARAMETERS)callable_settingr!   )
r%   r   is_valid_callabler(   r   r
   r   rK   r   r   )r)   r*   r0   callable_settingsrW   values         r   axes_conf_checkr[      s    H   .  "233 '' 		OO 188)9 9   /-     Or   returnc                     | dS t          |           rdS t          | t                    r"	 t          |            n# t          $ r Y dS w xY wdS )NTF)callable
isinstancestrr   r8   )rZ   s    r   rX   rX      sp    }t t% 	%     	 	 	55	 4s   < 
A
	A
N)django.core.checksr   r   r   django.utils.module_loadingr   axes.backendsr   	axes.confr   r
   r   r   securitycachescompatibilityr1   r4   r>   rN   r[   boolrX   r   r   r   <module>ri      s           
 6 5 5 5 5 5 / / / / / /      E E E E E E E E       # # # # # # # # 
$-d&899  :98 
$-+,,  -, 
$-+,,  -,@ 
$
$ $ $N 
  
:      r   