
    f                     >    d dl Z d dlmZ d dlT  G d de          ZdS )    N)commit_all_ds)*c                   ~    e Zd ZdZdZed             Zd
dZed             Zed             Z	ed             Z
d
d	ZdS )ResponseMixinZ      c                 6    i }| dvrt          ddd          }|S )N)z	127.0.0.1	localhostTLax)securehttponlysamesite)dict)cookie_domaincookie_kwargss      ./modules/auth/views/response.pyget_cookie_kwargszResponseMixin.get_cookie_kwargs   s-     ::: teLLLM    Nc                    t                       t          |t                    rt          dd|idd          }t	          t
          dt          j                  }t          	                    |          }|r| 
                    |||           t          j        r&t          j        j        |j        k    rdt          _        t          j        s/|                     ||||           |                    d|           nQdt          _        |                    d	|           |                    d
|           |                    d|           |S )u    TODO: зарефакторить все set_access_token/set_nginx_token (кроме обнуления) на эту функцию 2.0message )jsonrpcresultcallidAUTH_SESSION_COOKIE_DOMAINNaccess_token)domainsession_tokennginx_auth_token)r   
isinstancestrjsonifygetattrconfigrequesthostr   r   _set_nginx_tokengsession
user_loginlogin_set_session_tokendelete_cookie)selfresponseauthr   r   s        r   _okzResponseMixin._ok   sM   h$$ 		  x      H  (DglSS%77FF 	I!!(M=IIIy !QY1TZ?? 	9 M''h}UUU&&~m&LLLAI""?="III""#5m"LLL"">-"HHHr   c           	         t           j                            | j        dg          }|                     |                     t          j        dz
                      }t                               |j        |j	        |j
        | j        ||d         d                   }|j                                         |j                                         t          j        rt          j        d         |_        |                                  |j        d	|                                f|t*          j                                        t+          j        t          j        t          j        z             z   d
| d S )Nr   )r,   fields   dayspayloadexp)r+   
user_emailuser_id
user_scopejwtaccess_token_expires_inr   r   r   expires)models	CmfPersongetr,   rsa_unpack_jwtrsa_sign_pack_jwtr   token_ttl_days
CmfSessionemailidscope	auth_dateset_nowreauth_dater&   access_route	client_ipsave
set_cookie	get_tokendatetimenow	timedeltaprolong_days)r1   r0   r   r   personr=   r*   s          r   r-   z ResponseMixin._set_session_token1   sk   !%%DJu%EE!!$"8"8m>Z]^>^"8"_"_``##v|/5|,2I/3z(+<?	N5<Q $ S S 	!!#####%%% 	8 ' 4Q 7G 		

 !%))++h.@"1M4NN/P /P /P P	
 	
 	
 	
 	
 	
 	
r   c           	           |j         d|                     t          j        dz
            f|t          j                                        t	          j        t          j        t          j        z             z   d| d S )Nr   r5   r6   r?   )rQ   rE   r   rF   rS   rT   rU   rV   )r1   r0   r   r   s       r   _set_access_tokenzResponseMixin._set_access_tokenO   s     ""(Dq(H"II		

 !%))++h.@"1M4NN/P /P /P P	
 	
 	
 	
 	
 	
 	
r   c                      | j         	 	 d|t          j                                        t          j        t          j                  z   d| d S )Nr    password123r6   r?   )r    r[   )rQ   rS   rT   rU   r   rF   )r0   r   r   s      r   r(   zResponseMixin._set_nginx_token_   sj    	
 !%))++h.@mFb.c.c.cc		
 	
 	
 	
 	
 	
 	
r   c                    t          |           t          d           t          d|           t          d|           t          d|           |r|S d||ddd}|                    d	          r|d	         |d
         d	<   |S )NzError happened: zcode=zmessage=z	response=r   )coder   r   )r   errorr   problem_fieldr^   )r   printrC   )r/   r]   r   r0   kwargsr   s         r   _errorzResponseMixin._errork   s    g !!!gtj'"""k8$$$ 	O"w77
 

 ::o&& 	G/5o/FF7OO,r   )N)__name__
__module____qualname__rF   rV   staticmethodr   r2   r-   rY   r(   rb    r   r   r   r      s        NL  \   > 
 
 \
: 
 
 \
 	
 	
 \	
     r   r   )rS   cmf.data_providers.baser   cmf.includeobjectr   rg   r   r   <module>rk      sj     1 1 1 1 1 1    s s s s sF s s s s sr   