
    Ki]                     `    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  G d d      Zy	)
    )
JsonWebKey)JsonWebToken)jwt)CodeIDToken)ImplicitIDToken)UserInfoc                   *    e Zd ZddZd Z	 ddZd Zy)OpenIDMixinc                 x   | j                         }|j                  d      }|r|s|S |j                  d      }|st        d       | j                  di | j                  5 }|j                  d|d      }|j                          |j                         }d d d        || j                  d<   |S # 1 sw Y   xY w)Njwksjwks_urizMissing "jwks_uri" in metadataGETT)withhold_token )	load_server_metadatagetRuntimeError
client_clsclient_kwargsrequestraise_for_statusjsonserver_metadata)selfforcemetadatajwk_seturisessionresps          x/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/authlib/integrations/base_client/sync_openid.pyfetch_jwk_setzOpenIDMixin.fetch_jwk_set
   s    ,,.,,v&5Nll:&?@@T__2t112 	"g??5#d?CD!!#iikG	"
 (/V$	" 	"s   "5B00B9c                     | j                         } | j                  |d   fi |}|j                          |j                         }t	        |      S )z+Fetch user info from ``userinfo_endpoint``.userinfo_endpoint)r   r   r   r   r   )r   kwargsr   r    datas        r!   userinfozOpenIDMixin.userinfo   sL    ,,.txx!45@@yy{~    Nc                    d|vry| j                         }t        || j                        }|d|v r|d   |d<   t        }nt        }| j                         }|d|v r
dd|d   gii}|j                  d      }	|	rt        |	      }
nt        }
|
j                  |d   ||||	      }|j                  d
      du rd|j                  d<   |j                  |       t        |      S )z9Return an instance of UserInfo from token's ``id_token``.id_tokenN)nonce	client_idaccess_tokenissuerissvalues%id_token_signing_alg_values_supported)key
claims_clsclaims_optionsclaims_paramsnonce_supportedFr+   )leeway)create_load_keydictr,   r   r   r   r   r   r   decodeparamsvalidater   )r   tokenr+   r4   r3   r7   load_keyr5   r   
alg_values_jwtclaimss               r!   parse_id_tokenzOpenIDMixin.parse_id_token$   s    U"'')nn

 &05n0En-(
,
,,.!h(&:#h(1C0D%EFN\\"IJ

+DD*!)'  
 ::'(E1%)FMM'"v&r(   c                       fd}|S )Nc                 |   t        j                  j                               }	 |j                  | j	                  d      d| j	                  d            S # t
        $ rZ t        j                  j                  d            }|j                  | j	                  d      d| j	                  d            cY S w xY w)Nkidsigalg)userG   T)r   )r   import_key_setr"   find_by_kidr   
ValueError)header_r   r   s      r!   r>   z-OpenIDMixin.create_load_key.<locals>.load_keyR   s     //0B0B0DEG	**JJu%5fjj6G +    $33D4F4FT4F4RS**JJu%5fjj6G +  s   1A A B;:B;r   )r   r>   s   ` r!   r8   zOpenIDMixin.create_load_keyQ   s    	 r(   )F)NNx   )__name__
__module____qualname__r"   r'   rB   r8   r   r(   r!   r
   r
   	   s    $ JM+ Zr(   r
   N)	authlib.joser   r   r   authlib.oidc.corer   r   r   r
   r   r(   r!   <module>rT      s#    # %  ) - &V Vr(   