
    c^h                     X   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Zerd dlmZ ddZdefdZdefdZdededdfdZdededdfdZdededdfdZ G d de j4                        Zdedee j4                     fdZy# e$ r dZY jw xY w)    N)Any)Type)TYPE_CHECKING)current_app)Flask)RevokedTokenError)UserClaimsVerificationErrorWrongTokenError)DefaultJSONProviderTF)
JWTManagerreturnc                  \    	 t         j                  d   S # t        $ r t        d      d w xY w)Nzflask-jwt-extendedzUYou must initialize a JWTManager with this flask application before using this method)r   
extensionsKeyErrorRuntimeError     `/var/www/html/sistema/sos/venv/lib/python3.12/site-packages/flask_jwt_extended/internal_utils.pyget_jwt_managerr      s?    %%&:;; 3
 	s    +c                  2    t               } | j                  d uS Nr   _user_lookup_callback)jwt_managers    r   has_user_lookupr   %   s    !#K,,D88r   c                  V    t               }|j                  xr  |j                  | i |S r   r   )argskwargsr   s      r   user_lookupr    *   s8    !#K,, 1R1R1R	22 r   decoded_tokenrefreshc                 Z    |s| d   dk(  rt        d      |r| d   dk7  rt        d      y y )Ntyper"   z#Only non-refresh tokens are allowedzOnly refresh tokens are allowedr
   )r!   r"   s     r   verify_token_typer%   1   s?    }V,	9CDD	]6*i7?@@ 8r   
jwt_headerjwt_datac                 T    t               }|j                  | |      rt        | |      y r   )r   _token_in_blocklist_callbackr   )r&   r'   r   s      r   verify_token_not_blocklistedr*   8   s-    !#K//
HE
H55 Fr   c                 Z    t               }|j                  | |      sd}t        || |      y )NzUser claims verification failed)r   _token_verification_callbackr	   )r&   r'   r   	error_msgs       r   custom_verification_for_tokenr.   >   s4    !#K33JI5	))ZJJ Jr   c                        e Zd ZdZdedefdZy)JSONEncoderzEA JSON encoder which uses the app.json_provider_class for the defaultor   c                 d    t        t        j                  dt        j                        } ||      S )Ndefault)getattrr   json_provider_classr   r3   )selfr1   r3   s      r   r3   zJSONEncoder.defaultH   s.     ++Y8K8S8S
 qzr   N)__name__
__module____qualname____doc__r   r3   r   r   r   r0   r0   E   s    O  r   r0   appc                 2    t         s| j                  S t        S )a  Get the JSON Encoder for the provided flask app

    Starting with flask version 2.2 the flask application provides a
    interface to register a custom JSON Encoder/Decoder under the json_provider_class.
    As this interface is not compatible with the standard JSONEncoder, the `default`
    method of the class is wrapped.

    Lookup Order:
      - app.json_encoder - For Flask < 2.2
      - app.json_provider_class.default
      - flask.json.provider.DefaultJSONProvider.default

    )HAS_JSON_PROVIDERjson_encoderr0   )r;   s    r   get_json_encoderr?   Q   s     r   )r   r   )jsontypingr   r   r   flaskr   r   flask_jwt_extended.exceptionsr   r	   r   flask.json.providerr   r=   ModuleNotFoundErrorflask_jwt_extendedr   r   boolr   r    dictr%   r*   r.   r0   r?   r   r   r   <module>rI      s           ; E 97 -9 9
C AT AD AT A6T 6T 6d 6Kd Kd Kt K	$"" 	% D)9)9$: A   s   B B)(B)