o
    lc                     @   s:   d dl mZ d dlmZ d dlmZmZ G dd dZdS )    )Session)get_client_ip)UserLoginInUserc                   @   s   e Zd Zdd Zdd ZdS )OneSessionPerUserMiddlewarec                 C   s
   || _ d S )N)get_response)selfr    r	   =/var/www/html/docker_usevoice/src/apps/accounts/middleware.py__init__	   s   
z$OneSessionPerUserMiddleware.__init__c                 C   s   t |jtrZ|jjrZz9|jjj}|r.||jjkr.ztjj	|d
  W n
 tjy-   Y nw |jj|jj_t||jj_|jj  W n tjyY   tjj|jtt|d Y nw | |}|S )N)session_key)userr   
ip_address)
isinstancer   r   is_authenticatedlogin_in_userr   sessionr   objectsgetdeleteDoesNotExistr   r   saver   creater   )r   requestZstored_session_keyresponser	   r	   r
   __call__   s"   

z$OneSessionPerUserMiddleware.__call__N)__name__
__module____qualname__r   r   r	   r	   r	   r
   r      s    r   N)Zdjango.contrib.sessions.modelsr   apps.process.utilsr   Zapps.accounts.modelsr   r   r   r	   r	   r	   r
   <module>   s    