
    Uњh*                         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KJr   " S S\5      rg)    )Type)	parse_qsl)ImproperlyConfigured)HttpResponseRedirect)reverse)	urlencode)render_authentication_error)Provider)
AuthAction)OAuth2Error)generate_code_challenge)OAuth2Adapterc                      ^  \ rS rSr% Sr\\   \S'   SrS r	S r
S\4S jrS	 rS
 rS rS rS rS rU 4S jrSS jrSrU =r$ )OAuth2Provider   Foauth2_adapter_classTc                 f    [        U R                  S-   5      nU(       a  US-   [        U5      -   nU$ )N_login?)r   idr   )selfrequestkwargsurls       jD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\allauth/socialaccount/providers/oauth2/provider.pyget_login_urlOAuth2Provider.get_login_url   s0    dgg())i//C
    c                 2    [        U R                  S-   5      $ )N	_callback)r   r   r   s    r   get_callback_urlOAuth2Provider.get_callback_url   s    tww,--r   returnc                     U R                   R                  R                  S5      nUc,  U R                  5       nUR                  SU R                  5      nU(       a  [        5       nU$ 0 $ )Noauth_pkce_enabledOAUTH_PKCE_ENABLED)appsettingsgetget_settingspkce_enabled_defaultr   )r   enabledr)   pkce_code_paramss       r   get_pkce_paramsOAuth2Provider.get_pkce_params   s^    ((##''(<=?((*Hll#79R9RSG68##	r   c                     U R                   R                  R                  S5      nUc"  U R                  5       nUR                  S0 5      n[	        U5      $ )
Returns a dictionary of additional parameters passed to the OAuth2
redirect URL. Additional -- so no need to pass the standard `client_id`,
`redirect_uri`, `response_type`.
auth_paramsAUTH_PARAMS)r(   r)   r*   r+   dict)r   retr)   s      r   get_auth_paramsOAuth2Provider.get_auth_params)   sK     hh##M2;((*H,,}b1CCyr   c                     U R                  5       nUR                  R                  SS5      nU(       a#  UR                  [	        [        U5      5      5        U$ )r2   r3   N)r7   GETr*   updater5   r   )r   r   actionr6   dynamic_auth_paramss        r   get_auth_params_from_request+OAuth2Provider.get_auth_params_from_request5   sF     ""$%kkoomTBJJtI&9:;<
r   c                     / $ )z#
Returns the default scope to use.
 r!   s    r   get_default_scope OAuth2Provider.get_default_scopeA   s	     	r   c                     U R                   R                  R                  S5      nUc0  U R                  5       nUR                  SU R	                  5       5      n[        U5      $ )zG
Returns the scope to use, taking settings `SCOPE` into consideration.
scopeSCOPE)r(   r)   r*   r+   rB   list)r   rE   r)   s      r   	get_scopeOAuth2Provider.get_scopeG   sT     !!%%g.=((*HLL$*@*@*BCEE{r   c                     U R                  5       nUR                  R                  SS5      nU(       a   UR                  UR	                  S5      5        U$ )z1
Returns the scope to use for the given request.
rE   N,)rH   r:   r*   extendsplit)r   r   rE   dynamic_scopes       r   get_scope_from_request%OAuth2Provider.get_scope_from_requestQ   sC      6LL,,S12r   c                 d    [        U S5      (       d  [        SU < 35      eU R                  U5      $ )Nr   z No oauth2_adapter_class set for )hasattrr   r   )r   r   s     r   get_oauth2_adapter!OAuth2Provider.get_oauth2_adapter[   s4    t344&)I$'RSS((11r   c                    > [         TU ]  U5      nU R                  U5      US'   UR                  R	                  S[
        R                  5      nU R                  X5      US'   U$ )NrE   r<   r3   )super get_redirect_from_request_kwargsrO   r:   r*   r   AUTHENTICATEr>   )r   r   r   r<   	__class__s       r   rW   /OAuth2Provider.get_redirect_from_request_kwargs`   sZ    9'B55g>w:+B+BC $ A A' R}r   c                 $   U R                   nU R                  U5      nUR                  X5      nUR                  SS 5      n	U	c  U R	                  5       n	U R                  5       n
U
R                  SS 5      nU	R                  U
5        UR                  SS 5      nUc  U R                  5       nU R                  " XX44SU0UD6nXl	         [        UR                  UR                  X5      5      $ ! [         a  n[        XSU0US9s S nA$ S nAff = f)Nr3   code_verifierrE   pkce_code_verifierstate_id)extra_context	exception)r(   rS   
get_clientpopr7   r/   r;   rH   stash_redirect_statestater   get_redirect_urlauthorize_urlr   r	   )r   r   processnext_urldatar   r(   oauth2_adapterclientr3   pkce_paramsr\   rE   r^   es                  r   redirectOAuth2Provider.redirectg   s   hh009**78jj5..0K**,#>;'

7D)=NN$E,,h
AN
RX
  		'''"00% 
  	.j(-Cq 	s   	$C. .
D8D
D
DrA   )NN)__name__
__module____qualname____firstlineno__r,   r   r   __annotations__supports_redirectr   r"   r5   r/   r7   r>   rB   rH   rO   rS   rW   rn   __static_attributes____classcell__)rY   s   @r   r   r      s]     }--. 

2
 r   r   N)typingr   urllib.parser   django.core.exceptionsr   django.httpr   django.urlsr   django.utils.httpr   allauth.socialaccount.helpersr	   $allauth.socialaccount.providers.baser
   .allauth.socialaccount.providers.base.constantsr   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.utilsr   ,allauth.socialaccount.providers.oauth2.viewsr   r   rA   r   r   <module>r      s7     " 7 ,  ' E 9 E E P FsX sr   