o
    b                     @   sB   d d Z dd Zdd Zdd Zdd	 Zd
d Z		dddZdS )c                        fdd}|S )zCreate an ``query_client`` function that can be used in authorization
    server and resource protector.

    :param session: SQLAlchemy session
    :param model_class: Client class
    c                    s     }|j| d S )N)	client_idquery	filter_byfirst)r   qmodel_classsession i/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/sqla_oauth1/functions.pyquery_client   s   
z.create_query_client_func.<locals>.query_clientr   )r
   r	   r   r   r   r   create_query_client_func   s   r   c                    r   )zCreate an ``query_token`` function that can be used in
    resource protector.

    :param session: SQLAlchemy session
    :param model_class: TokenCredential class
    c                    s     }|j| |d S )N)r   oauth_tokenr   )r   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                    sj    fdd} fdd} fdd}fdd}|  d	| |  d
| |  d| |  d| dS )zRegister temporary credential related hooks to authorization server.

    :param authorization_server: AuthorizationServer instance
    :param session: SQLAlchemy session
    :param model_class: TemporaryCredential class
    c                    s.    || d | d |d} |   |S )Nr   oauth_token_secret)r   r   r   Zoauth_callback)addcommit)tokenr   Zredirect_uriitemr   r   r   create_temporary_credential%   s   
zHregister_temporary_credential_hooks.<locals>.create_temporary_credentialc                    s     j| d}| S )Nr   r   r   r   r   r   r   get_temporary_credential0   s   zEregister_temporary_credential_hooks.<locals>.get_temporary_credentialc                    s*     j| d}|jdd   d S )Nr   F)Zsynchronize_session)r   r   deleter   r   r   r   r   delete_temporary_credential4   s   zHregister_temporary_credential_hooks.<locals>.delete_temporary_credentialc                    s*   |  |  || _ |     | S N)set_user_idget_user_idZoauth_verifierr   r   )Z
credentialZ
grant_userZverifier)r
   r   r   create_authorization_verifier9   s
   
zJregister_temporary_credential_hooks.<locals>.create_authorization_verifierr   r   r   r    Nregister_hook)authorization_serverr
   r	   r   r   r   r    r   r   r   #register_temporary_credential_hooks   s    	r$   c                    r   )zCreate an ``exists_nonce`` function that can be used in hooks and
    resource protector.

    :param session: SQLAlchemy session
    :param model_class: TimestampNonce class
    c                    s^     jj| ||d}|r|j|d}| }|rdS  | |||d}|   dS )N)nonce	timestampr   r   T)r%   r&   r   r   F)r   r%   r   r   r   r   )r%   r&   r   r   r   rvr   r   r   r   exists_nonceQ   s&   
z.create_exists_nonce_func.<locals>.exists_noncer   )r
   r	   r(   r   r   r   create_exists_nonce_funcJ   s   r)   c                 C   s   t ||}| d| dS )zRegister nonce related hooks to authorization server.

    :param authorization_server: AuthorizationServer instance
    :param session: SQLAlchemy session
    :param model_class: TimestampNonce class
    r(   N)r)   r"   )r#   r
   r	   r(   r   r   r   register_nonce_hooksi   s   
r*   c                    s    fdd}|  d| dS )zRegister token credential related hooks to authorization server.

    :param authorization_server: AuthorizationServer instance
    :param session: SQLAlchemy session
    :param model_class: TokenCredential class
    c                    s>    | d | d |  d}||  |   |S )Nr   r   )r   r   r   )Zget_client_idr   r   r   r   )r   Ztemporary_credentialr   r   r   r   create_token_credential|   s   
z@register_token_credential_hooks.<locals>.create_token_credentialr+   Nr!   )r#   r
   r	   r+   r   r   r   register_token_credential_hookst   s   r,   Nc                 C   s<   t | || |d urt| || |d urt| || d S d S r   )r,   r$   r*   )r#   r
   Ztoken_credential_modelZtemporary_credential_modelZtimestamp_nonce_modelr   r   r   register_authorization_hooks   s   r-   )NN)r   r   r$   r)   r*   r,   r-   r   r   r   r   <module>   s    .