U
    >iq                     @   s   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ dd	d
Zdd Zdd Zeee dddZeee dddZdS )    )import_module)OptionalTuple)settings)SESSION_KEYget_user_model)SessionBase)app_settings)ClientNc                 C   s   t tj}|j| dS )Nsession_key)r   r   ZSESSION_ENGINEZSessionStore)r   Zengine r   H/tmp/pip-unpacked-wheel-upujnpc2/allauth/headless/internal/sessionkit.pysession_store   s    
r   c                   C   s   t  S N)r   r   r   r   r   new_session   s    r   c                 C   s\   | j jjtjkrd S tj}|| }| jj	}| j
 }|rX|sX|| }|rT||krX|S d S r   )ZallauthZheadlessclientr
   ZAPPr	   TOKEN_STRATEGYZget_session_tokensessionmodifiedZis_emptyZcreate_session_token)requestZstrategyZ	hdr_tokenr   empty	new_tokenr   r   r   expose_session_token   s    


r   )tokenreturnc                 C   sd   t j| }|sd S |t}|r`t jj}|r`||}t j	j
|d }|r`|jr`||fS d S )N)pk)r	   r   lookup_sessiongetr   r   Z_metar   Z	to_pythonZobjectsfilterfirstZ	is_active)r   r   Zuser_id_strZmeta_pkZuser_iduserr   r   r   authenticate_by_x_session_token"   s    



r"   )r   r   c                 C   s   t  | rt | S d S r   )r   existsr   r   r   r   r   1   s    r   )N)	importlibr   typingr   r   Zdjango.confr   Zdjango.contrib.authr   r   Z%django.contrib.sessions.backends.baser   Zallauth.headlessr	   Zallauth.headless.constantsr
   r   r   r   strr"   r   r   r   r   r   <module>   s   
