o
    €Ýh÷  ã                   @   sž   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ ddlmZmZmZ e	ƒ Ze  e¡Zd	efd
d„Zdeegef defdd„ZdS )é    N)ÚCallable)Úsettings©ÚHttpRequestÚHttpResponse)Úget_user_modelÚlogout)Úinfoé   )ÚnowÚseconds_until_idle_time_endÚseconds_until_session_endÚrequestc                 C   sÌ   d}t ƒ }d|v rt| |d |ƒ}||dk O }t d|¡ d|v rHt| |d |ƒ}||dk O }t d|¡ |rAd| jv rA| jd= n| ¡ | jd< |rbt d| j¡ t| ƒ d	|v rdt	| |d	 ƒ d S d S d S )
NFZSESSION_TIMEr   z+Check SESSION_TIME: %ss until session ends.Z	IDLE_TIMEz%Check IDLE_TIME: %ss until idle ends.Zdjango_auto_logout_last_requestzLogout user %sZMESSAGE)
r   r   ÚloggerÚdebugr   ÚsessionÚ	isoformatÚuserr   r	   )r   ÚoptionsZshould_logoutÚcurrent_timeZsession_timeZ	idle_time© r   úe/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/django_auto_logout/middleware.pyÚ_auto_logout   s(   
ûr   Úget_responseÚreturnc                    s   dt dtf‡ fdd„}|S )Nr   r   c                    s&   | j jsttdƒrt| tjƒ ˆ | ƒS )NÚAUTO_LOGOUT)r   Zis_anonymousÚhasattrr   r   r   )r   ©r   r   r   Ú
middleware*   s   zauto_logout.<locals>.middlewarer   )r   r   r   r   r   Úauto_logout)   s   r   )ÚloggingÚtypingr   Zdjango.confr   Zdjango.httpr   r   Zdjango.contrib.authr   r   Zdjango.contrib.messagesr	   Úutilsr   r   r   Z	UserModelÚ	getLoggerÚ__name__r   r   r   r   r   r   r   Ú<module>   s    
 