
    ci                         d dl 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
 d d	l	mZ d d
l	mZ  G d de
      Zy)    N)Column)Integer)String)Text)
json_dumps)
json_loads)ClientMixin)list_to_scope)scope_to_listc                      e Zd Z e ed      d      Z e ed            Z eedd      Z eedd      Z	 ede
      Zed	        Zed
        Zd Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'y$)%OAuth2ClientMixin0   T)indexx   Fr   )nullabledefaultclient_metadatac                 p    t        | j                  | j                  | j                  | j                        S )zImplementation for Client Info in OAuth 2.0 Dynamic Client
        Registration Protocol via `Section 3.2.1`_.

        .. _`Section 3.2.1`: https://tools.ietf.org/html/rfc7591#section-3.2.1
        )	client_idclient_secretclient_id_issued_atclient_secret_expires_at)dictr   r   r   r   selfs    T/tmp/pip-target-z3e9_cxr/lib/python/authlib/integrations/sqla_oauth2/client_mixin.pyclient_infozOAuth2ClientMixin.client_info   s3     nn,, $ 8 8%)%B%B	
 	
    c                     d| j                   v r| j                   d   S | j                  r&t        | j                        }|| j                   d<   |S i S Nr   )__dict___client_metadatar   )r   datas     r   r   z!OAuth2ClientMixin.client_metadata$   sP    -==!233  d334D/3DMM+,K	r   c                 \    t        |      | _        d| j                  v r| j                  d= y y r    )r   r"   r!   )r   values     r   set_client_metadataz%OAuth2ClientMixin.set_client_metadata.   s-     *5 1-/0 .r   c                 :    | j                   j                  dg       S )Nredirect_urisr   getr   s    r   r(   zOAuth2ClientMixin.redirect_uris3   s    ##''<<r   c                 :    | j                   j                  dd      S )Ntoken_endpoint_auth_methodclient_secret_basicr)   r   s    r   r,   z,OAuth2ClientMixin.token_endpoint_auth_method7   s!    ##''(*?
 	
r   c                 :    | j                   j                  dg       S )Ngrant_typesr)   r   s    r   r/   zOAuth2ClientMixin.grant_types=   s    ##''r::r   c                 :    | j                   j                  dg       S )Nresponse_typesr)   r   s    r   r1   z OAuth2ClientMixin.response_typesA   s    ##''(8"==r   c                 8    | j                   j                  d      S )Nclient_namer)   r   s    r   r3   zOAuth2ClientMixin.client_nameE       ##''66r   c                 8    | j                   j                  d      S )N
client_urir)   r   s    r   r6   zOAuth2ClientMixin.client_uriI       ##''55r   c                 8    | j                   j                  d      S )Nlogo_urir)   r   s    r   r9   zOAuth2ClientMixin.logo_uriM       ##''
33r   c                 :    | j                   j                  dd      S )Nscope r)   r   s    r   r<   zOAuth2ClientMixin.scopeQ   s    ##''44r   c                 :    | j                   j                  dg       S )Ncontactsr)   r   s    r   r?   zOAuth2ClientMixin.contactsU   s    ##''
B77r   c                 8    | j                   j                  d      S )Ntos_urir)   r   s    r   rA   zOAuth2ClientMixin.tos_uriY   s    ##''	22r   c                 8    | j                   j                  d      S )N
policy_urir)   r   s    r   rC   zOAuth2ClientMixin.policy_uri]   r7   r   c                 8    | j                   j                  d      S )Njwks_urir)   r   s    r   rE   zOAuth2ClientMixin.jwks_uria   r:   r   c                 :    | j                   j                  dg       S )Njwksr)   r   s    r   rG   zOAuth2ClientMixin.jwkse   s    ##''33r   c                 8    | j                   j                  d      S )Nsoftware_idr)   r   s    r   rI   zOAuth2ClientMixin.software_idi   r4   r   c                 8    | j                   j                  d      S )Nsoftware_versionr)   r   s    r   rK   z"OAuth2ClientMixin.software_versionm   s    ##''(:;;r   c                 8    | j                   j                  d      S )Nid_token_signed_response_algr)   r   s    r   rM   z.OAuth2ClientMixin.id_token_signed_response_algq   s    ##''(FGGr   c                     | j                   S N)r   r   s    r   get_client_idzOAuth2ClientMixin.get_client_idu   s    ~~r   c                 :    | j                   r| j                   d   S y )Nr   r(   r   s    r   get_default_redirect_uriz*OAuth2ClientMixin.get_default_redirect_urix   s!    %%a(( r   c                     |syt        | j                  j                               }t        |      }t	        |D cg c]	  }||v s| c}      S c c}w )Nr=   )setr<   splitr   r
   )r   r<   allowedscopesss        r   get_allowed_scopez#OAuth2ClientMixin.get_allowed_scope|   sH    djj&&()u%@A1<a@AA@s   	AAc                     || j                   v S rO   rR   )r   redirect_uris     r   check_redirect_uriz$OAuth2ClientMixin.check_redirect_uri   s    t1111r   c                 B    t        j                  | j                  |      S rO   )secretscompare_digestr   )r   r   s     r   check_client_secretz%OAuth2ClientMixin.check_client_secret   s    %%d&8&8-HHr   c                 ,    |dk(  r| j                   |k(  S y)NtokenT)r,   )r   methodendpoints      r   check_endpoint_auth_methodz,OAuth2ClientMixin.check_endpoint_auth_method   s    w22f<<r   c                     || j                   v S rO   )r1   )r   response_types     r   check_response_typez%OAuth2ClientMixin.check_response_type   s     3 333r   c                     || j                   v S rO   )r/   )r   
grant_types     r   check_grant_typez"OAuth2ClientMixin.check_grant_type   s    T----r   N)(__name__
__module____qualname__r   r   r   r   r   r   r   r   r"   propertyr   r   r&   r(   r,   r/   r1   r3   r6   r9   r<   r?   rA   rC   rE   rG   rI   rK   rM   rP   rS   rZ   r]   ra   rf   ri   rl    r   r   r   r      s   vbz.I6#;'M 5!D%gqI/6
 
  1
 = = 
 

 ; ; > > 7 7 6 6 4 4 5 5 8 8 3 3 6 6 4 4 4 4 7 7 < < H H)B2I4.r   r   )r_   
sqlalchemyr   r   r   r   authlib.common.encodingr   r   authlib.oauth2.rfc6749r	   r
   r   r   rq   r   r   <module>ru      s1         . . . 0 0D. D.r   