
    g;                     ^   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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defd'Zy)(    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           
         t        j                  t        j                        }t	        |t
              rt        j                  ||z         }d|d|dt        t        j                               d|||i}|r||d<   |r t        t        j                               |d<   |r||d<   |	r|	|d<   |r||z   |d	<   |r|j                  |       t        j                  ||| |
|
      S )Nr   iatjtityper   r   aud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(   
token_datas                   Y/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/flask_jwt_extended/tokens.py_encode_jwtr4      s      ,,x||
$C%#""3;/ 	ss4::< 
HJ 
5 .
6$
5"
5-/
5/*::!      
algorithmsallow_expired
csrf_valueencoded_tokenleeway
verify_aud
verify_subc           	         |	|
d}|rd|d<   t        j                  ||| ||||      }||vrt        dj                  |            d|vrd|d<   d|vrd|d<   d	|vrd |d	<   |r)d
|vrt        d      t	        |d
   |      st        d      |S )N)r;   r<   F
verify_exp)r6   r   r   r:   optionszMissing claim: {}r#   accessr   r"   r   zMissing claim: csrfz&CSRF double submit tokens do not match)r0   decoder   formatr   r   )r6   r7   r   r8   r9   r   r   r:   r   r;   r<   r?   decoded_tokens                r3   _decode_jwtrD   M   s     (zBG % JJM .0778JKLL]" (fm#!&gM!#e& !677mF3Z@DEEr5   )r-   r   r   r   hmacr   jsonr   typingr   r	   r
   r   r   r0   flask_jwt_extended.exceptionsr   r   flask_jwt_extended.typingr   r   r,   dictboolr4   intrD    r5   r3   <module>rN      sg              
 3 8 2 +55C#&'5 5 	5
  5 5 5 5 5 5 {#5 5 5 
5 	5p000 C#&'0 	0
 0 0 0 0 0 0 0 
0r5   