o
    ü„LhÍ  ã                   @   s‚   d dl Z d dlmZ d dlZd dlmZ d dlmZmZ d dlmZ de	de
dB fdd	„Zdee fd
d„Zde	defdd„ZdS )é    N)Úg)Úrequest)ÚOptionalÚDict)ÚdatetimeÚtokenÚreturnc              
   C   s`  z†t j dd¡}tj| |dgd}t ¡ }t | dd¡¡}||k r)tdƒ W d S t j	}t j dd	¡}||| 
d
d	¡| 
d
d	¡ 
dd	¡g}| d¡|vr\td|› d| d¡› ƒ W d S t j d¡}| d¡|krptdƒ W d S t j d¡}	| d¡|	kr„tdƒ W d S |W S  tjy•   tdƒ Y d S  tjy¯ }
 ztd|
› ƒ W Y d }
~
d S d }
~
ww )NÚ
secret_keyÚinsecure_defaultÚHS256)Ú
algorithmsÚexpr   u   âŒ Token expirado.Úfrontend_domainÚ úhttps://zwww.Údomainu1   âŒ Dominio del JWT no coincide. Esperado uno de z, recibido: Úflask_subdomainu   âŒ Subdominio no coincide.ÚlicenciaÚlicense_keyu   âŒ Licencia no coincide.u   âŒ Token invÃ¡lido: )r   Úcliente_configÚgetÚjwtÚdecoder   ÚutcnowÚutcfromtimestampÚprintÚ
cliente_idÚreplaceÚExpiredSignatureErrorÚInvalidTokenError)r   r	   ÚdecodedÚnowr   Úexpected_slugÚexpected_frontendÚexpected_domain_variantsÚexpected_flaskÚexpected_licenseÚe© r(   ú*/var/www/html/flask_server/shared/utils.pyÚvalidate_jwt_token   sF   
ü
þ€þr*   c                  C   sX   t j d¡} | stdƒ d S |  d¡std| › ƒ d S |  d¡d }td|ƒ t|ƒS )NÚAuthorizationu&   âš ï¸ Header Authorization no enviadoúBearer u)   âš ï¸ Header Authorization mal formado: ú é   u   ðŸ” Token recibido:)r   Úheadersr   r   Ú
startswithÚsplitr*   )Úauth_headerr   r(   r(   r)   Úverify_request_token<   s   

r3   c              
   C   sÚ   zQt | ƒ}| di ¡ d¡}| di ¡ d¡}|r|s"tdƒ i W S d|› d|› }dd| › i}tj||d	}|jd
krItd| ¡ ƒ | ¡ W S td|jƒ i W S  tyl } ztdt|ƒƒ i W  Y d }~S d }~ww )NÚdataÚclientÚappu   âŒ Token sin cliente o appr   z(.com.au/wp-json/wpflask/v1/provider?app=r+   r,   )r/   éÈ   u*   âœ… Contexto de usuario recibido desde WP:u$   âŒ Error al obtener contexto de WP:u$   âŒ Error al conectar con WordPress:)	r*   r   r   ÚrequestsÚstatus_codeÚjsonÚtextÚ	ExceptionÚstr)r   r    Úclient_slugÚapp_nameÚurlr/   Úresponser'   r(   r(   r)   Úget_wp_user_contextK   s(   

€þrB   )r   Úflaskr   r8   r   Útypingr   r   r   r=   Údictr*   r3   rB   r(   r(   r(   r)   Ú<module>   s   1