U
    Įwh                     @   s0   d dl Z d dlmZ d dlT G dd deZdS )    N)commit_all_ds)*c                   @   sX   e Zd ZdZdZedd ZdddZedd	 Zed
d Z	edd Z
dddZdS )ResponseMixinZ      c                 C   s   i }| dkrt dddd}|S )N)z	127.0.0.1Z	localhostTZLax)ZsecureZhttponlyZsamesite)dict)cookie_domaincookie_kwargs r
    ./modules/auth/views/response.pyget_cookie_kwargs   s    zResponseMixin.get_cookie_kwargsNc                 C   s   t   t|tr$tdd|idd}ttdtj}t	|}|r| 
||| tjrhtjj|jkrhdt_tjs| |||| |jd|d n0dt_|jd	|d |jd
|d |jd|d |S )u    TODO: зарефакторить все set_access_token/set_nginx_token (кроме обнуления) на эту функцию 2.0message )jsonrpcresultcallidZAUTH_SESSION_COOKIE_DOMAINNaccess_token)domainsession_tokennginx_auth_token)r   
isinstancestrZjsonifygetattrZconfigrequesthostr   r   _set_nginx_tokengsession
user_loginlogin_set_session_tokenZdelete_cookie)selfresponseauthr   r	   r
   r
   r   _ok   s.    
 
zResponseMixin._okc                 C   s   t jj| jdgd}| | jtjd d}t j|j|j	|j
| j||d d d}|j  |j  tjrxtjd |_|  |jd	| f|tj tjtjtj d d
| d S )Nr   )r    Zfields   ZdaysZpayloadZexp)r   Z
user_emailZuser_idZ
user_scopejwtZaccess_token_expires_inr   r   r   Zexpires)ZmodelsZ	CmfPersongetr    Zrsa_unpack_jwtrsa_sign_pack_jwtr   token_ttl_daysZ
CmfSessionZemailidZscopeZ	auth_dateZset_nowZreauth_dater   Zaccess_routeZ	client_ipZsave
set_cookieZ	get_tokendatetimenow	timedeltaprolong_days)r$   r#   r   r	   Zpersonr(   r   r
   r
   r   r!   1   s2    



z ResponseMixin._set_session_tokenc                 C   sF   |j d| jtjd df|tj tjtjtj d d| d S )Nr   r&   r'   r)   )r.   r+   r   r,   r/   r0   r1   r2   )r$   r#   r   r	   r
   r
   r   _set_access_tokenO   s    
zResponseMixin._set_access_tokenc                 C   s.   | j d|tj tjtjd d| d S )Nr   password123r'   r)   )r   r4   )r.   r/   r0   r1   r   r,   )r#   r   r	   r
   r
   r   r   _   s      zResponseMixin._set_nginx_tokenc                 K   sf   t | td td| td| td| |r6|S d||ddd}|d	rb|d	 |d
 d	< |S )NzError happened: zcode=zmessage=z	response=r   )coder   r   )r   errorr   Zproblem_fieldr6   )r   printr*   )r"   r5   r   r#   kwargsr   r
   r
   r   _errork   s    



zResponseMixin._error)N)N)__name__
__module____qualname__r,   r2   staticmethodr   r%   r!   r3   r   r9   r
   r
   r
   r   r      s   




r   )r/   Zcmf.data_providers.baser   Zcmf.includeobjectr   r
   r
   r
   r   <module>   s   