
    k7io                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r
  S SKJr  S SKJr  SS	KJr  SS
KJr  SSKJr  SSKJr   " S S\5      rSS jrSS jrg)    )settings)HttpResponse)import_string)
json_dumps)generate_token)AuthorizationServer)BearerTokenGenerator   DjangoJsonRequestDjangoOAuth2Request)client_authenticated)token_revokedc                   \   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )r      aC  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                 z   > [         TU ]  5         Xl        X l        U R	                  [        [        S0 5      5        g )NAUTHLIB_OAUTH2_PROVIDER)super__init__client_modeltoken_modelload_configgetattrr   )selfr   r   	__class__s      q/home/james-whalen/.local/lib/python3.13/site-packages/authlib/integrations/django_oauth2/authorization_server.pyr   AuthorizationServer.__init__   s2    (&+DbIJ    c                     Xl         U R                   R                  S5      nX l        U R                  SU R	                  5       5        g )Nscopes_supporteddefault)configgetr!   register_token_generatorcreate_bearer_token_generator)r   r#   r!   s      r   r   AuthorizationServer.load_config    s:    ;;??+=> 0%%i1S1S1UVr   c                      U R                   R                  R                  US9$ ! U R                   R                   a     gf = f)zwDefault 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_client AuthorizationServer.query_client'   sE    	$$,,0090EE  -- 		s   "% AAc                     UR                   nUR                  (       a  UR                  R                  nOUR                  nU R                  " SUR
                  US.UD6nUR                  5         U$ )zuDefault 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requestr1   r/   items         r   
save_tokenAuthorizationServer.save_token0   sX     <<llooGnnGU&*:*:GUuU		r   c                     [        U5      $ Nr   r   r6   s     r   create_oauth2_request)AuthorizationServer.create_oauth2_request=   s    "7++r   c                     [        U5      $ r;   r   r<   s     r   create_json_request'AuthorizationServer.create_json_request@   s     ))r   c                 v    [        U[        5      (       a  [        U5      n[        X!S9nU H	  u  pVXdU'   M     U$ )N)status)
isinstancedictr   r   )r   status_codepayloadheadersrespkvs          r   handle_response#AuthorizationServer.handle_responseC   s;    gt$$ )GG8DAG r   c                     US:X  a#  [         R                  " USU R                  0UD6  g US:X  a#  [        R                  " USU R                  0UD6  g g )Nafter_authenticate_clientsenderafter_revoke_token)r   sendr   r   )r   nameargskwargss       r   send_signalAuthorizationServer.send_signalK   sQ    .. %%tMDNNMfM))FT^^FvF *r   c                    U R                   R                  SS5      n[        US5      nU R                   R                  SS5      n[        US5      nU R                   R                  S5      n[        U5      n[	        UUUS9$ )	z/Default method to create BearerToken generator.access_token_generatorT*   refresh_token_generatorF0   token_expires_in)rY   r[   expires_generator)r#   r$   create_token_generator!create_token_expires_in_generatorr	   )r   confrY   r[   r^   s        r   r&   1AuthorizationServer.create_bearer_token_generatorQ   sz    {{7>!7b!A{{8%@"8r"B{{12=dC##9$;/
 	
r   )r   r#   r!   r   )__name__
__module____qualname____firstlineno____doc__r   r   r,   r8   r=   r@   rL   rV   r&   __static_attributes____classcell__)r   s   @r   r   r      s=    KW,*G
 
r   r   c                    ^ [        U 5      (       a  U $ [        U [        5      (       a  [        U 5      $ U SL a  U4S jnU$ g )NTc                     > [        T5      $ r;   )_generate_token)rT   rU   lengths     r   token_generator/create_token_generator.<locals>.token_generatork   s    "6**r   )callablerD   strr   )token_generator_confrm   rn   s    ` r   r_   r_   c   sI    $%%##&,,122		%	+  
&r   Nc                    ^ 0 mTR                  [        R                  5        U (       a  TR                  U 5        U4S jnU$ )Nc                 D   > TR                  U[        R                  5      $ r;   )r$   r	   DEFAULT_EXPIRES_IN)r1   
grant_typedatas     r   
expires_in5create_token_expires_in_generator.<locals>.expires_inw   s    xx
$8$K$KLLr   )updater	   GRANT_TYPES_EXPIRES_IN)expires_in_confrx   rw   s     @r   r`   r`   q   s8    DKK$;;<O$M r   )rZ   r;   )django.confr   django.httpr   django.utils.module_loadingr   authlib.common.encodingr   authlib.common.securityr   rl   authlib.oauth2r   _AuthorizationServerauthlib.oauth2.rfc6750r	   requestsr   r   signalsr   r   r_   r`   r0   r   r   <module>r      s@      $ 5 . E F 7 ' ) ) "P
. P
f	r   