
    i[f$                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ dd	lmZmZ dd
lmZmZ  G d de          ZddZddZdS )    )HttpResponse)import_string)settings)AuthorizationServer)BearerTokenGenerator)generate_token)
json_dumps   )DjangoOAuth2RequestDjangoJsonRequest)client_authenticatedtoken_revokedc                   L     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
r   aW  Django implementation of :class:`authlib.oauth2.rfc6749.AuthorizationServer`.
    Initialize it with client model and token model::

        from authlib.integrations.django_oauth2 import AuthorizationServer
        from your_project.models import OAuth2Client, OAuth2Token

        server = AuthorizationServer(OAuth2Client, OAuth2Token)
    c                 "   t          t          di           | _        || _        || _        | j                            d          }t                                          |           |                     d| 	                                           d S )NAUTHLIB_OAUTH2_PROVIDERscopes_supported)r   default)
getattrr   configclient_modeltoken_modelgetsuper__init__register_token_generatorcreate_bearer_token_generator)selfr   r   r   	__class__s       k/var/www/piapp/venv/lib/python3.11/site-packages/authlib/integrations/django_oauth2/authorization_server.pyr   zAuthorizationServer.__init__   s    h(A2FF(&;??+=>>*:;;;%%i1S1S1U1UVVVVV    c                 p    	 | j         j                            |          S # | j         j        $ r Y dS w xY w)zDefault method for ``AuthorizationServer.query_client``. Developers MAY
        rewrite this function to meet their own needs.
        )	client_idN)r   objectsr   DoesNotExist)r   r"   s     r   query_clientz AuthorizationServer.query_client!   sL    	$,0090EEE - 	 	 	44	s   " 55c                     |j         }|j        r|j        j        }n|j        } | j        d|j        |d|}|                                 |S )zDefault method for ``AuthorizationServer.save_token``. Developers MAY
        rewrite this function to meet their own needs.
        )r"   user_id )clientuserpkr'   r   r"   save)r   tokenrequestr)   r'   items         r   
save_tokenzAuthorizationServer.save_token*   sl     < 	%loGGnGt 
&
 
 
 

 			r    c                      t          |          S N)r   r   r.   s     r   create_oauth2_requestz)AuthorizationServer.create_oauth2_request;   s    "7+++r    c                      t          |          S r2   )r   r3   s     r   create_json_requestz'AuthorizationServer.create_json_request>   s     )))r    c                     t          |t                    rt          |          }t          ||          }|D ]
\  }}|||<   |S )N)status)
isinstancedictr	   r   )r   status_codepayloadheadersrespkvs          r   handle_responsez#AuthorizationServer.handle_responseA   sV    gt$$ 	* ))GGK888 	 	DAqDGGr    c                     |dk    rt          j        |d| j        i| d S |dk    rt          j        |d| j        i| d S d S )Nafter_authenticate_clientsenderafter_revoke_token)r   sendr   r   )r   nameargskwargss       r   send_signalzAuthorizationServer.send_signalI   sh    ... %dMT^MfMMMMM)))tFdnFvFFFFF *)r    c                 $   | j                             dd          }t          |d          }| j                             dd          }t          |d          }| j                             d          }t          |          }t	          |||          S )	z/Default method to create BearerToken generator.access_token_generatorT*   refresh_token_generatorF0   token_expires_in)rL   rN   expires_generator)r   r   create_token_generator!create_token_expires_in_generatorr   )r   confrL   rN   rQ   s        r   r   z1AuthorizationServer.create_bearer_token_generatorO   s    {7>>!7b!A!A{8%@@"8r"B"B{122=dCC##9$;/
 
 
 	
r    )__name__
__module____qualname____doc__r   r%   r0   r4   r6   rA   rJ   r   __classcell__)r   s   @r   r   r      s         W W W W W    ", , ,* * *  G G G
 
 
 
 
 
 
r    r   rM   c                     t          |           r| S t          | t                    rt          |           S | du rfd}|S d S )NTc                  "    t                    S r2   )_generate_token)rH   rI   lengths     r   token_generatorz/create_token_generator.<locals>.token_generatorh   s    "6***r    )callabler9   strr   )token_generator_confr]   r^   s    ` r   rR   rR   a   sn    $%% $##&,, 1222		%	%	+ 	+ 	+ 	+ 	+ 
&	%r    Nc                     i                      t          j                   | r                     |            fd}|S )Nc                 D                         |t          j                  S r2   )r   r   DEFAULT_EXPIRES_IN)r)   
grant_typedatas     r   
expires_inz5create_token_expires_in_generator.<locals>.expires_ins   s    xx
$8$KLLLr    )updater   GRANT_TYPES_EXPIRES_IN)expires_in_confrg   rf   s     @r   rS   rS   m   s^    DKK$;<<< %O$$$M M M M M r    )rM   r2   )django.httpr   django.utils.module_loadingr   django.confr   authlib.oauth2r   _AuthorizationServerauthlib.oauth2.rfc6750r   authlib.common.securityr   r\   authlib.common.encodingr	   requestsr   r   signalsr   r   rR   rS   r(   r    r   <module>ru      s'   $ $ $ $ $ $ 5 5 5 5 5 5                  8 7 7 7 7 7 E E E E E E . . . . . . < < < < < < < < 8 8 8 8 8 8 8 8P
 P
 P
 P
 P
. P
 P
 P
f	 	 	 		 	 	 	 	 	r    