Format: application/x-python-code
⬇ Download File (10.9 KB)
   1  o
   2  
   3  G'h'�@s�ddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
   4  Z
   5  dd
   6  lmZddlm
   7  Z
   8  ddlmZdd
   9  lmZddlmZGdd�de�Ze�ZdS)�)�datetime)�	timedelta)�timezone)�JSONEncoder)�Iterable)�List)�Optional)�Sequence)�Type)�Union)�current_app)�requires_cryptography)�get_json_encoder)�ExpiresDeltac@s�eZdZdZedefdd��Zedefdd��Zedefdd��Z	ede
  10  efd	d
  11  ��Zedefdd��Zedefd
  12  d��Z
  13  edefdd��Zedefdd��Zedefdd��Zedefdd��Zedefdd��Zedefdd��Zedefdd��Zedefdd��Zedefdd ��Zedefd!d"��Zedefd#d$��Zedefd%d&��Zedefd'd(��Zedefd)d*��Zedefd+d,��Zedefd-d.��Zedefd/d0��Zedeefd1d2��Z edefd3d4��Z!edefd5d6��Z"edefd7d8��Z#edefd9d:��Z$edefd;d<��Z%edefd=d>��Z&edefd?d@��Z'edefdAdB��Z(edefdCdD��Z)edefdEdF��Z*ede+fdGdH��Z,ede+fdIdJ��Z-edefdKdL��Z.ede/efdMdN��Z0edefdOdP��Z1edefdQdR��Z2edefdSdT��Z3ede4e5fdUdV��Z6edefdWdX��Z7edeefdYdZ��Z8edefd[d\��Z9ede:e;fd]d^��Z<ede=eeeffd_d`��Z>ede=eeeffdadb��Z?edefdcdd��Z@edefdedf��ZAede5fdgdh��ZBedefdidj��ZCdkS)l�_Configa�
  14      Helper object for accessing and verifying options in this extension. This
  15      is meant for internal use of the application; modifying config options
  16      should be done with flasks ```app.config```.
  17  
  18      Default values for the configuration options are set in the jwt_manager
  19      object. All of these values are read only. This is simply a loose wrapper
  20      with some helper functionality for flasks `app.config`.
  21      �returncCs
  22  |jtvS�N)�	algorithmr
  23  ��self�r�OC:\Users\shubh\Videos\agent\nova\Lib\site-packages\flask_jwt_extended/config.py�
  24  is_asymmetric�
  25  z_Config.is_asymmetriccC�|jr|jS|jSr)r�_private_key�_secret_keyrrrr�
  26  encode_key"�z_Config.encode_keycCrr)r�_public_keyrrrrr�
  27  decode_key&rz_Config.decode_keycCsXtjd}t|t�r|f}nt|t�std��|std��|D]
  28  }|dvr)td��q|S)NZJWT_TOKEN_LOCATIONz.JWT_TOKEN_LOCATION must be a sequence or a setz_JWT_TOKEN_LOCATION must contain at least one of "headers", "cookies", "query_string", or "json")�headers�cookies�query_string�jsonzSJWT_TOKEN_LOCATION can only contain "headers", "cookies", "query_string", or "json")r�config�
  29  isinstance�strr�RuntimeError)r�	locations�locationrrr�token_location*s 
  30  
  31  
  32  ���z_Config.token_locationcC�
  33  d|jvS)Nr"�r+rrrr�jwt_in_cookies>rz_Config.jwt_in_cookiescCr,)Nr!r-rrrr�jwt_in_headersBrz_Config.jwt_in_headerscCr,)Nr#r-rrrr�jwt_in_query_stringFrz_Config.jwt_in_query_stringcCr,)Nr$r-rrrr�jwt_in_jsonJrz_Config.jwt_in_jsoncCstjd}|std��|S)NZJWT_HEADER_NAMEz&JWT_ACCESS_HEADER_NAME cannot be empty)rr%r()r�namerrr�header_nameNs
  34  z_Config.header_namecC�
  35  tjdS)NZJWT_HEADER_TYPE�rr%rrrr�header_typeUrz_Config.header_typecCr4)NZJWT_QUERY_STRING_NAMEr5rrrr�query_string_nameYrz_Config.query_string_namecCr4)NZJWT_QUERY_STRING_VALUE_PREFIXr5rrrr�query_string_value_prefix]rz!_Config.query_string_value_prefixcCr4)NZJWT_ACCESS_COOKIE_NAMEr5rrrr�access_cookie_namearz_Config.access_cookie_namecCr4)NZJWT_REFRESH_COOKIE_NAMEr5rrrr�refresh_cookie_nameerz_Config.refresh_cookie_namecCr4)NZJWT_ACCESS_COOKIE_PATHr5rrrr�access_cookie_pathirz_Config.access_cookie_pathcCr4)NZJWT_REFRESH_COOKIE_PATHr5rrrr�refresh_cookie_pathmrz_Config.refresh_cookie_pathcCr4)NZJWT_COOKIE_SECUREr5rrrr�
  36  cookie_secureqrz_Config.cookie_securecCr4)NZJWT_COOKIE_DOMAINr5rrrr�
  37  cookie_domainurz_Config.cookie_domaincCr4)NZJWT_SESSION_COOKIEr5rrrr�session_cookieyrz_Config.session_cookiecCr4)NZJWT_COOKIE_SAMESITEr5rrrr�cookie_samesite}rz_Config.cookie_samesitecCr4)NZJWT_JSON_KEYr5rrrr�json_key�rz_Config.json_keycCr4)NZJWT_REFRESH_JSON_KEYr5rrrr�refresh_json_key�rz_Config.refresh_json_keycCs|jotjdS)NZJWT_COOKIE_CSRF_PROTECT)r.rr%rrrr�csrf_protect�sz_Config.csrf_protectcCr4)NZJWT_CSRF_METHODSr5rrrr�csrf_request_methods�rz_Config.csrf_request_methodscCr4)NZJWT_CSRF_IN_COOKIESr5rrrr�csrf_in_cookies�rz_Config.csrf_in_cookiescCr4)NZJWT_ACCESS_CSRF_COOKIE_NAMEr5rrrr�access_csrf_cookie_name�rz_Config.access_csrf_cookie_namecCr4)NZJWT_REFRESH_CSRF_COOKIE_NAMEr5rrrr�refresh_csrf_cookie_name�rz _Config.refresh_csrf_cookie_namecCr4)NZJWT_ACCESS_CSRF_COOKIE_PATHr5rrrr�access_csrf_cookie_path�rz_Config.access_csrf_cookie_pathcCr4)NZJWT_REFRESH_CSRF_COOKIE_PATHr5rrrr�refresh_csrf_cookie_path�rz _Config.refresh_csrf_cookie_pathcCr4)NZJWT_ACCESS_CSRF_HEADER_NAMEr5rrrr�access_csrf_header_name�rz_Config.access_csrf_header_namecCr4)NZJWT_REFRESH_CSRF_HEADER_NAMEr5rrrr�refresh_csrf_header_name�rz _Config.refresh_csrf_header_namecCr4)NZJWT_CSRF_CHECK_FORMr5rrrr�csrf_check_form�rz_Config.csrf_check_formcCr4)NZJWT_ACCESS_CSRF_FIELD_NAMEr5rrrr�access_csrf_field_name�rz_Config.access_csrf_field_namecCr4)NZJWT_REFRESH_CSRF_FIELD_NAMEr5rrrr�refresh_csrf_field_name�rz_Config.refresh_csrf_field_namec
  38  C�jtjd}t|�turt|d�}|dur3z|t�tj�W|St	y2}zd}t
  39  |�|�d}~ww|S)NZJWT_ACCESS_TOKEN_EXPIRES��secondsFzAmust be able to add JWT_ACCESS_TOKEN_EXPIRES to datetime.datetime�rr%�type�intrr�nowr�utc�	TypeErrorr(�r�delta�e�errrrr�access_expires�s
  40  
  41  ��
  42  ��z_Config.access_expiresc
  43  CrO)NZJWT_REFRESH_TOKEN_EXPIRESrPFzBmust be able to add JWT_REFRESH_TOKEN_EXPIRES to datetime.datetimerRrXrrr�refresh_expires�s
  44  
  45  ��
  46  ��z_Config.refresh_expirescCr4)NZ
  47  JWT_ALGORITHMr5rrrrr�rz_Config.algorithmcCs0tjd}|s|jgS|j|vr|�|j�|S)NZJWT_DECODE_ALGORITHMS)rr%r�append)rZ
  48  algorithmsrrr�decode_algorithms�s
  49  
  50  z_Config.decode_algorithmscCs4tjd}|stj�dd�}|std�|j���|S)NZJWT_SECRET_KEYZ
  51  SECRET_KEYzRJWT_SECRET_KEY or flask SECRET_KEY must be set when using symmetric algorithm "{}")rr%�getr(�formatr�r�keyrrrr�s
  52  �z_Config._secret_keycC�"tjd}|std�|j���|S)NZJWT_PUBLIC_KEYzHJWT_PUBLIC_KEY must be set to use asymmetric cryptography algorithm "{}"�rr%r(rarrbrrrr��
  53  �z_Config._public_keycCrd)NZJWT_PRIVATE_KEYzIJWT_PRIVATE_KEY must be set to use asymmetric cryptography algorithm "{}"rerbrrrrrfz_Config._private_keycCs|jrdSdS)Ni C�)r?rrrr�cookie_max_agesz_Config.cookie_max_agecCr4)NZJWT_IDENTITY_CLAIMr5rrrr�identity_claim_keyrz_Config.identity_claim_keycCsdhS)N�OPTIONSrrrrr�exempt_methodssz_Config.exempt_methodscCr4)NZJWT_ERROR_MESSAGE_KEYr5rrrr�
  54  error_msg_keyrz_Config.error_msg_keycCstt�Sr)rrrrrr�json_encodersz_Config.json_encodercCr4)NZJWT_DECODE_AUDIENCEr5rrrr�decode_audience"rz_Config.decode_audiencecCr4)NZJWT_ENCODE_AUDIENCEr5rrrr�encode_audience&rz_Config.encode_audiencecCr4)NZJWT_ENCODE_ISSUERr5rrrr�
  55  encode_issuer*rz_Config.encode_issuercCr4)NZJWT_DECODE_ISSUERr5rrrr�
  56  decode_issuer.rz_Config.decode_issuercCr4)NZJWT_DECODE_LEEWAYr5rrrr�leeway2rz_Config.leewaycCr4)NZJWT_ENCODE_NBFr5rrrr�
  57  encode_nbf6rz_Config.encode_nbfN)D�__name__�
  58  __module__�__qualname__�__doc__�property�boolrr'rr r	r+r.r/r0r1r3r6r7r8r9r:r;r<r=r>r?r@rArBrCrrDrErFrGrHrIrJrKrLrMrNrr\r]rrr_rrrrrTrgrhrjrkr
  59  rrlrrmrnrorprqrrrrrrrs�
  60  
  61  
  62  rN)rrrr$r�typingrrrr	r
  63  rZflaskrZjwt.algorithmsr
  64  Z!flask_jwt_extended.internal_utilsrZflask_jwt_extended.typingr�objectrr%rrrr�<module>s$
  65  *