
    *j                     D    d dl Z d dlmZ d dlT d Z G d de          ZdS )    N)commit_all_ds)*c                 R    | r| j         rd S d| _         |                                  d S )NT)expiredsave)sessions     ./modules/auth/views/response.pyexpire_sessionr
      s0     go GOLLNNNNN    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     r	   get_cookie_kwargszResponseMixin.get_cookie_kwargs   s-     ::: teLLLMr   Nc                    |st          t          j                   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
   gr   r   
isinstancestrjsonifygetattrconfigrequesthostr   r   _set_nginx_token
user_loginlogin_set_session_tokendelete_cookie)selfresponseauthr   r   s        r	   _okzResponseMixin._ok   se    	&19%%%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   )r0   fields   dayspayloadexp)r/   
user_emailuser_id
user_scopejwtaccess_token_expires_inr   r$   r#   expires)models	CmfPersongetr0   rsa_unpack_jwtrsa_sign_pack_jwtr   token_ttl_days
CmfSessionemailidscope	auth_dateset_nowreauth_dater,   access_route	client_ipr   
set_cookie	get_tokendatetimenow	timedeltaprolong_days)r5   r4   r   r   personrA   r   s          r	   r1   z ResponseMixin._set_session_token:   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"   r9   r:   rC   )rT   rI   r   rJ   rV   rW   rX   rY   )r5   r4   r   r   s       r	   _set_access_tokenzResponseMixin._set_access_tokenX   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%   password123r:   rC   )r%   r^   )rT   rV   rW   rX   r   rJ   )r4   r   r   s      r	   r.   zResponseMixin._set_nginx_tokenh   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_fieldra   )cmf_rollbackprintrG   )r3   r`   r   r4   kwargsr   s         r	   _errorzResponseMixin._errort   s     !!!gtj'"""k8$$$ 	O"w77
 

 ::o&& 	G/5o/FF7OO,r   )N)__name__
__module____qualname__rJ   rY   staticmethodr   r6   r1   r\   r.   rf    r   r	   r   r      s        NL  \   B 
 
 \
: 
 
 \
 	
 	
 \	
     r   r   )rV   cmf.data_providers.baser   cmf.includer
   objectr   rk   r   r	   <module>ro      sy     1 1 1 1 1 1      u u u u uF u u u u ur   