
    c^h                     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 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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                   X/var/www/html/sistema/sos/venv/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_audc
           	         d|	i}
|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 )Nr;   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>   decoded_tokens               r3   _decode_jwtrC   M   s     Z(G % 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   intrC    r5   r3   <module>rM      s]              
 3 8 2 +55C#&'5 5 	5
  5 5 5 5 5 5 {#5 5 5 
5 	5p/// C#&'/ 	/
 / / / / / / 
/r5   