o
    b                     @   s,   d d Z dd Zdd Zdd Zdd	 Zd
S )c                        fd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     }|j| d S )N)	client_idquery	filter_byfirst)r   qclient_modelsession i/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/sqla_oauth2/functions.pyquery_client      
z.create_query_client_func.<locals>.query_clientr   )r
   r	   r   r   r   r   create_query_client_func   s   r   c                    r   )zCreate an ``save_token`` function that can be used in authorization
    server.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    c                    sH   |j r	|j  }nd }|j}d|j|d| } |    d S )N)r   user_idr   )userZget_user_idclientr   addcommit)tokenrequestr   r   itemr
   token_modelr   r   
save_token   s   
z*create_save_token_func.<locals>.save_tokenr   )r
   r   r   r   r   r   create_save_token_func   s   r   c                    r   )zCreate an ``query_token`` function for revocation, introspection
    token endpoints.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    c                    sr     }|j|jdd}|dkr|j| d S |dkr%|j| d S |j| d }|r1|S |j| d S )NF)r   revokedaccess_tokenr   refresh_token)r   )r   r   r   r   )r   token_type_hintr   r   r   r   r   r   query_token,   s   
z,create_query_token_func.<locals>.query_tokenr   )r
   r   r!   r   r   r   create_query_token_func%   s   r"   c                    s0   ddl m} t| G  fddd|}|S )zCreate a revocation endpoint class with SQLAlchemy session
    and token model.

    :param session: SQLAlchemy session
    :param token_model: Token model class
        )RevocationEndpointc                       s$   e Zd Z fddZfddZdS )z7create_revocation_endpoint.<locals>._RevocationEndpointc                    s    |||S Nr   )selfr   r    r   )r!   r   r   r!   F   s   zCcreate_revocation_endpoint.<locals>._RevocationEndpoint.query_tokenc                    s   d|_  |    d S )NT)r   r   r   r&   r   )r
   r   r   revoke_tokenI   s   
zDcreate_revocation_endpoint.<locals>._RevocationEndpoint.revoke_tokenN)__name__
__module____qualname__r!   r(   r   r!   r
   r   r   _RevocationEndpointE   s    r-   )Zauthlib.oauth2.rfc7009r$   r"   )r
   r   r$   r-   r   r,   r   create_revocation_endpoint;   s   
	r.   c                    s&   ddl m} G  fd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                       s*   e Zd Z fddZdd Zdd ZdS )z<create_bearer_token_validator.<locals>._BearerTokenValidatorc                    s     }|j|d S )Nr   r   )r&   Ztoken_stringr   r   r   r   authenticate_token[   r   zOcreate_bearer_token_validator.<locals>._BearerTokenValidator.authenticate_tokenc                 S   s   dS )NFr   )r&   r   r   r   r   request_invalid_   s   zLcreate_bearer_token_validator.<locals>._BearerTokenValidator.request_invalidc                 S   s   |j S r%   )r   r'   r   r   r   token_revokedb   s   zJcreate_bearer_token_validator.<locals>._BearerTokenValidator.token_revokedN)r)   r*   r+   r0   r1   r2   r   r   r   r   _BearerTokenValidatorZ   s    r3   )Zauthlib.oauth2.rfc6750r/   )r
   r   r/   r3   r   r   r   create_bearer_token_validatorQ   s   r4   N)r   r   r"   r.   r4   r   r   r   r   <module>   s
    