o
    DfB                     @   sl   d dl Z d dlZd dlmZmZmZ ddlmZ ddlm	Z	 e
eZG dd deeZG dd	 d	e	ZdS )
    N)jwt	JoseError	JWTClaims   )
TokenMixin)BearerTokenValidatorc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )JWTBearerTokenc                 C   s   | d |  kS )N	client_id)get_client_id)selfclient r   Y/home/ubuntu/webapp/venv/lib/python3.10/site-packages/authlib/oauth2/rfc7523/validator.pycheck_client      zJWTBearerToken.check_clientc                 C   s
   |  dS )Nscope)getr   r   r   r   	get_scope   s   
zJWTBearerToken.get_scopec                 C   s   | d | d  S )Nexpiatr   r   r   r   r   get_expires_in   r   zJWTBearerToken.get_expires_inc                 C   s   | d t   k S )Nr   )timer   r   r   r   
is_expired   r   zJWTBearerToken.is_expiredc                 C   s   dS )NFr   r   r   r   r   
is_revoked   s   zJWTBearerToken.is_revokedN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   
   s    r   c                       s.   e Zd ZdZeZd fdd	Zdd Z  ZS )JWTBearerTokenValidatorbearerNc                    sN   t  j|fi | || _ddiddiddid}|r"d|d|d< || _d S )N	essentialT)r   r	   
grant_type)r    valueiss)super__init__
public_keyclaims_options)r   r&   issuerrealmextra_attributesr'   	__class__r   r   r%      s   
z JWTBearerTokenValidator.__init__c              
   C   sZ   zt j|| j| j| jd}|  |W S  ty, } ztd| W Y d }~d S d }~ww )N)r'   
claims_clszAuthenticate token failed. %r)	r   decoder&   r'   	token_clsvalidater   loggerdebug)r   token_stringclaimserrorr   r   r   authenticate_token+   s   z*JWTBearerTokenValidator.authenticate_token)NN)	r   r   r   
TOKEN_TYPEr   r/   r%   r6   __classcell__r   r   r+   r   r      s
    r   )r   loggingauthlib.joser   r   r   rfc6749r   rfc6750r   	getLoggerr   r1   r   r   r   r   r   r   <module>   s    
