
    h                     8    d dl Z d dlmZ d dl  G d de      Zy)    N)commit_all_ds)*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      ./modules/auth/views/response.pyget_cookie_kwargszResponseMixin.get_cookie_kwargs   s$     :: teLM    Nc                 l   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   
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   s   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   )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   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   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     ""(D(Dq(H"I		

 !%%))+h.@.@"11M4N4NN/P P	
 	
r   c                      | j                   	 	 d|t        j                  j                         t        j                  t        j
                        z   d| y )Nr6   r?   )r    password123)rQ   rS   rT   rU   r   rF   )r0   r   r   s      r   r(   zResponseMixin._set_nginx_token_   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_fieldr^   )cmf_rollbackprintrC   )r/   r]   r   r0   kwargsr   s         r   _errorzResponseMixin._errork   sq     !gtj'"k8$O"w7

 ::o&/5o/FF7OO,r   )N)__name__
__module____qualname__rF   rV   staticmethodr   r2   r-   rY   r(   rc    r   r   r   r      sd    NL > 
 
: 
 
 	
 	
r   r   )rS   cmf.data_providers.baser   cmf.includeobjectr   rh   r   r   <module>rl      s     1 sF sr   