U
    gyd                     @   sn   d dl mZ d dlT ddlmZ d dlmZmZmZmZmZ d dl	m
Z
 d dlZd dlZG dd	 d	ejZdS )
    )fields)*   )cmf_session)datedatetime	timedeltatimezonetime)AESNc                   @   s,   e Zd ZedddZeedddZdS )
CmfSession)returnc                 C   s   | j jdd }t|S )N:   )idvaluesplitcmfutilZcrypt)selfmessage r   ./models/cmf_session.py	get_token
   s    zCmfSession.get_tokenc                 C   s   zt |}W n   td Y d S X tjjd| ddgd}|rtt	j
}||jt|jjd kr|dg |j|}|rtjdd	}|jj|_|jj|_|jj|_d|_d|_td
|j d|j d|j  |S d S )NuD   Не удалось расшифровать токен сессииzCmfSession:Fr   )r   Zexpiredr   )Zsecondszplugin.plugin.*T)emptyzfrom_jwt: jwt is ok, z, z, is_local=)r   ZdecryptgdebugZmodelsr   getr   nowr	   ZutcZreauth_dater   Zaccess_token_expires_inr   Zload_fieldsZpluginZrefresh_tokenZCmfAuthZ
user_loginZloginZ
user_emailZemailZ
user_scopeZscopeZjwt_is_supportZjwt_is_match_org)clsZsession_tokenZdecrypted_tokenZsessionr   objr   r   r   
from_token   s(    



"zCmfSession.from_tokenN)__name__
__module____qualname__strr   classmethodr    r   r   r   r   r      s   r   )Zcmfr   Zcmf.includer   r   r   r   r	   r
   ZCrypto.Cipherr   Zbinasciibase64r   r   r   r   r   <module>   s   