o
    b                     @   s0   d dl mZ G dd deZdd Zdd ZdS )	    )RevocationEndpointc                   @   s    e Zd ZdZdd Zdd ZdS )r   a  The revocation endpoint for OAuth authorization servers allows clients
    to notify the authorization server that a previously obtained refresh or
    access token is no longer needed.

    Register it into authorization server, and create token endpoint response
    for token revocation::

        from django.views.decorators.http import require_http_methods

        # see register into authorization server instance
        server.register_endpoint(RevocationEndpoint)

        @require_http_methods(["POST"])
        def revoke_token(request):
            return server.create_endpoint_response(
                RevocationEndpoint.ENDPOINT_NAME,
                request
            )
    c                 C   sf   | j j}|dkrt||}n|dkrt||}nt||}|s$t||}| }|r1|j|kr1|S dS )z$Query requested token from database.access_tokenrefresh_tokenN)servertoken_model_query_access_token_query_refresh_tokenZget_client_id	client_id)selftokenZtoken_type_hintclientr   rvr	    r   k/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/django_oauth2/endpoints.pyquery_token   s   

zRevocationEndpoint.query_tokenc                 C   s   d|_ |  dS )zMark the give token as revoked.TN)Zrevokedsave)r
   r   r   r   r   revoke_token*   s   zRevocationEndpoint.revoke_tokenN)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s    r   c                 C   (   z| j j|dW S  | jy   Y d S w )N)r   objectsgetZDoesNotExistr   r   r   r   r   r   0   
   r   c                 C   r   )N)r   r   r   r   r   r   r   7   r   r   N)Zauthlib.oauth2.rfc7009r   Z_RevocationEndpointr   r   r   r   r   r   <module>   s    ,