B
    f                 @   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 (кроме обнуления) на эту функцию z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   )daysZpayloadZexp)r   Z
user_emailZuser_idZ
user_scopejwtZaccess_token_expires_inr   r   )r   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   s(    

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-   r.   r/   r0   )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   password123)r%   )r   r'   )r   r2   )r,   r-   r.   r/   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=z2.0)coder   r   )r   errorr   Zproblem_fieldr4   )r   printr(   )r    r3   r   r!   kwargsr   r
   r
   r   _errork   s    



zResponseMixin._error)N)N)__name__
__module____qualname__r*   r0   staticmethodr   r#   r   r1   r   r7   r
   r
   r
   r   r      s   
r   )r-   Zcmf.data_providers.baser   Zcmf.includeobjectr   r
   r
   r
   r   <module>   s   