o
    G'h  ã                   @   sT  d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ dedeee
e f dededededede	dededee dedededefdd „Zd!ed"edeee
e f d#ed$ededed%eded&edefd'd(„ZdS ))é    N)Údatetime)Ú	timedelta)Útimezone)Úcompare_digest)ÚJSONEncoder)ÚAny)ÚIterable)ÚList)ÚType)ÚUnion)Ú	CSRFError)ÚJWTDecodeError)ÚExpiresDelta)ÚFreshÚ	algorithmÚaudienceÚclaim_overridesÚcsrfÚexpires_deltaÚfreshÚheader_overridesÚidentityÚidentity_claim_keyÚissuerÚjson_encoderÚsecretÚ
token_typeÚnbfÚreturnc              
   C   s®   t  tj¡}t|tƒrt  || ¡}d|d|dtt 	¡ ƒd|||i}|r(||d< |r2tt 	¡ ƒ|d< |r8||d< |	r>|	|d< |rF|| |d	< |rM| 
|¡ tj||| |
|d
�S )Nr   ZiatÚjtiÚtyper   r   ZaudZissÚexp)r   Úheaders)r   Únowr   ÚutcÚ
isinstancer   Ú	timestampÚstrÚuuidÚuuid4ÚupdateÚjwtÚencode)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   Z
token_data© r-   úOC:\Users\shubh\Videos\agent\nova\Lib\site-packages\flask_jwt_extended/tokens.pyÚ_encode_jwt   s8   
û
ûr/   Ú
algorithmsÚallow_expiredÚ
csrf_valueÚencoded_tokenÚleewayÚ
verify_audc
              	   C   s    d|	i}
|r
d|
d< t j||| ||||
d�}||vr!td |¡ƒ‚d|vr)d|d< d|vr1d|d< d	|vr9d |d	< |rNd
|vrCtdƒ‚t|d
 |ƒsNtdƒ‚|S )Nr5   FZ
verify_exp)r0   r   r   r4   ÚoptionszMissing claim: {}r    Úaccessr   r   r   zMissing claim: csrfz&CSRF double submit tokens do not match)r+   Údecoder   Úformatr   r   )r0   r1   r   r2   r3   r   r   r4   r   r5   r6   Zdecoded_tokenr-   r-   r.   Ú_decode_jwtM   s4   ùr:   )r(   r   r   r   Úhmacr   Újsonr   Útypingr   r   r	   r
   r   r+   Zflask_jwt_extended.exceptionsr   r   Zflask_jwt_extended.typingr   r   r'   ÚdictÚboolr/   Úintr:   r-   r-   r-   r.   Ú<module>   sŒ    ÿþýüûúùø	÷
öõôóò
ñ8ÿþýüûúùø	÷
öõ