o
    Df=                     @   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   sP   | j j}|dkrt||}|S |dkrt||}|S t||}|s&t||}|S )z$Query requested token from database.access_tokenrefresh_token)servertoken_model_query_access_token_query_refresh_token)selftokentoken_type_hintr   rv r   e/home/ubuntu/webapp/venv/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)revokedsave)r	   r
   requestr   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getDoesNotExistr   r
   r   r   r   r   -   
   r   c                 C   r   )N)r   r   r   r   r   r   r   4   r   r   N)authlib.oauth2.rfc7009r   _RevocationEndpointr   r   r   r   r   r   <module>   s    )