U
    [Se                     @   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requestZ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.   r/   r0   r1   )r#   r"   r   r	   r
   r
   r   _set_access_tokenM   s    
	zResponseMixin._set_access_tokenc                 C   s.   | j d|tj tjtjd d| d S )Nr   password123r&   r(   )r   r3   )r-   r.   r/   r0   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_fieldr5   )r   printr)   )r!   r4   r   r"   kwargsr   r
   r
   r   _errore   s    



zResponseMixin._error)N)N)__name__
__module____qualname__r+   r1   staticmethodr   r$   r    r2   r   r8   r
   r
   r
   r   r      s   




	r   )r.   Zcmf.data_providers.baser   Zcmf.includeobjectr   r
   r
   r
   r   <module>   s   