
    *j                     >    d dl Z d dlmZ d dl d Z G d de      Zy)    N)commit_all_ds)*c                 P    | r| j                   ry d| _         | j                          y )NT)expiredsave)sessions     ./modules/auth/views/response.pyexpire_sessionr
      s    gooGOLLN    c                   d    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y)ResponseMixinZ      c                 .    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LMr   Nc                    |st        t        j                         t                t	        |t
              rt        dd|idd      }t        t        dt        j                        }t        j                  |      }|r| j                  |||       t        j                  r2t        j                  j                  |j                  k7  rdt        _        t        j                  s'| j!                  ||||       |j#                  d|       |S dt        _        |j#                  d	|       |j#                  d
|       |j#                  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   s   199%h$  x   H  (DgllS%77F!!(M=IyyQYY11TZZ? 	99''h}U&&~m&L 	 AI""?="I""#5m"L"">-"Hr   c           	         t         j                  j                  | j                  dg      }| j	                  | j                  t        j                  dz
              }t         j                  |j                  |j                  |j                  | j                  ||d   d         }|j                  j                          |j                  j                          t        j                   rt        j                   d   |_        |j%                           |j&                  d	|j)                         f|t*        j*                  j-                         t+        j.                  t        j                  t        j0                  z         z   d
| y )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:   sG   !!%%DJJu%E!!$"8"8m>Z>Z]^>^"8"_`##v||/5||,2II/3zz(+<?	N5<Q $ S 	!!###% ' 4 4Q 7G 		

 !%%))+h.@.@"11M4N4NN/P P	
 	
r   c           	          |j                   d| j                  t        j                  dz
        f|t        j                  j                         t	        j                  t        j                  t        j                  z         z   d| y )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     ""(D(Dq(H"I		

 !%%))+h.@.@"11M4N4NN/P P	
 	
r   c                      | j                   	 	 d|t        j                  j                         t        j                  t        j
                        z   d| y )Nr:   rC   )r%   password123)rT   rV   rW   rX   r   rJ   )r4   r   r   s      r	   r.   zResponseMixin._set_nginx_tokenh   sT    	
 !%%))+h.@.@mFbFb.cc		
 	
r   c                     t                t        d       t        d|       t        d|       t        d|       |r|S d||ddd}|j                  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   sq     !gtj'"k8$O"w7

 ::o&/5o/FF7OO,r   )N)__name__
__module____qualname__rJ   rY   staticmethodr   r6   r1   r\   r.   rf    r   r	   r   r      se    NL B 
 
: 
 
 	
 	
r   r   )rV   cmf.data_providers.baser   cmf.includer
   objectr   rk   r   r	   <module>ro      s!     1 uF ur   