
    i[f{                     ,    d dl Z d Zd Zd Zd Zd ZdS )    Nc                       fd}|S )zCreate an ``query_client`` function that can be used in authorization
    server.

    :param session: SQLAlchemy session
    :param client_model: Client model class
    c                 ~                                   }|                    |                                           S )N)	client_idquery	filter_byfirst)r   qclient_modelsessions     ^/var/www/piapp/venv/lib/python3.11/site-packages/authlib/integrations/sqla_oauth2/functions.pyquery_clientz.create_query_client_func.<locals>.query_client   s4    MM,''{{Y{//55777     )r   r   r   s   `` r   create_query_client_funcr      s*    8 8 8 8 8 8 r   c                       fd}|S )zCreate an ``save_token`` function that can be used in authorization
    server.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    c                     |j         r|j                                         }nd }|j        } d|j        |d| }                    |                                            d S )N)r   user_idr   )userget_user_idclientr   addcommit)tokenrequestr   r   itemr   token_models        r   
save_tokenz*create_save_token_func.<locals>.save_token   s    < 	l..00GGG{ 
&
 
 
 

 	Dr   r   )r   r   r   s   `` r   create_save_token_funcr      s*          r   c                       fd}|S )zCreate an ``query_token`` function for revocation, introspection
    token endpoints.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    c                                                   }|dk    r(|                    |                                           S |dk    r(|                    |                                           S |                    |                                           }|r|S |                    |                                           S )Naccess_tokenr"   refresh_token)r$   r   )r   token_type_hintr
   r   r   r   s       r   query_tokenz,create_query_token_func.<locals>.query_token/   s    MM+&&n,,;;E;2288::://;;U;3399;;;{{{..4466 	K{{{//55777r   r   )r   r   r&   s   `` r   create_query_token_funcr'   (   s*    
8 
8 
8 
8 
8 
8 r   c                 X     ddl m} t           |           G  fdd|          }|S )zCreate a revocation endpoint class with SQLAlchemy session
    and token model.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    r   )RevocationEndpointc                   $    e Zd Z fdZfdZdS )7create_revocation_endpoint.<locals>._RevocationEndpointc                      ||          S )Nr   )selfr   r%   r&   s      r   r&   zCcreate_revocation_endpoint.<locals>._RevocationEndpoint.query_tokenH   s    ;uo666r   c                     t          t          j                              }|j                            d          }||_        |dk    r||_                            |                                            d S )Nr%   r"   )inttimeformgetaccess_token_revoked_atrefresh_token_revoked_atr   r   )r-   r   r   nowhintr   s        r   revoke_tokenzDcreate_revocation_endpoint.<locals>._RevocationEndpoint.revoke_tokenK   so    dikk""C<##$566D,/E)~%%14.KKNNr   N)__name__
__module____qualname__r&   r7   )r&   r   s   r   _RevocationEndpointr+   G   sG        	7 	7 	7 	7 	7	 	 	 	 	 	 	r   r;   )authlib.oauth2.rfc7009r)   r'   )r   r   r)   r;   r&   s   `   @r   create_revocation_endpointr=   =   si     :99999)';??K       0    r   c                 8     ddl m}  G  fdd|          }|S )zCreate an bearer token validator class with SQLAlchemy session
    and token model.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    r   )BearerTokenValidatorc                       e Zd Z fdZdS )<create_bearer_token_validator.<locals>._BearerTokenValidatorc                 ~                                   }|                    |                                          S )Nr#   r   )r-   token_stringr
   r   r   s      r   authenticate_tokenzOcreate_bearer_token_validator.<locals>._BearerTokenValidator.authenticate_tokena   s4    k**A;;L;99??AAAr   N)r8   r9   r:   rD   )r   r   s   r   _BearerTokenValidatorrA   `   s;        	B 	B 	B 	B 	B 	B 	B 	Br   rE   )authlib.oauth2.rfc6750r?   )r   r   r?   rE   s   ``  r   create_bearer_token_validatorrG   W   se     <;;;;;B B B B B B B B 4 B B B
 ! r   )r0   r   r   r'   r=   rG   r   r   r   <module>rH      sc    
 
 
  .  *  4! ! ! ! !r   