
    qh+                        S SK Jr  S SKrS SKJrJrJrJr  S SKrS SKJ	r	  SSK
JrJr  SSKJrJrJr  \(       a  S SKJr  S S	KJr   " S
 S5      rg)    )annotationsN)TYPE_CHECKINGAnyLiteralcast)Response   )AuthConnectionErrorAuthUnknownError)module_memberparse_qs
user_agent)Mapping)AuthBasec                  n   \ rS rSr% SrSrSrSrS\S'   Sr	S\S	'   Sr
SrSrS&S
 jrS&S jrS rS rS rS rS rS rS rS'S jrS rS'S jr        S(S jrS rS rS rS)S jrS rS rS r S*S jr!SSSSSS .             S+S! jjr"     S,             S-S" jjr#S.S# jr$S/S$ jr%S%r&g)0BaseAuth   zSA authentication backend that authenticates the user based on
the provider response FstrID_KEYNz:list[str | tuple[str, str] | tuple[str, str, bool]] | None
EXTRA_DATAc                    Xl         X l        U R                   R                  5       U l        U R                   R	                  U R                  5      U l        g N)strategyredirect_urirequest_datadataabsolute_uri)selfr   r   s      K/var/www/html/env/lib/python3.13/site-packages/social_core/backends/base.py__init__BaseAuth.__init__   s>     (MM..0	 MM66t7H7HI    c                6    U R                   R                  XU S9$ )z"Return setting value from strategy)defaultbackend)r   setting)r   namer%   s      r    r'   BaseAuth.setting$   s    }}$$TD$IIr#   c                    U R                  5       (       a)  U R                  R                  U R                  5       5      $ U R                  R	                  U R                  5       5      $ r   )uses_redirectr   redirectauth_urlhtml	auth_htmlr   s    r    startBaseAuth.start(   sH    ==))$--/::}}!!$.."233r#   c                &    U R                   " U0 UD6$ r   )auth_completer   argskwargss      r    completeBaseAuth.complete-   s    !!42622r#   c                    [        S5      e)z)Must return redirect URL to auth providerImplement in subclassNotImplementedErrorr0   s    r    r-   BaseAuth.auth_url0       !"9::r#   c                    [        S5      e)z3Must return login HTML content returned by providerr;   r<   r0   s    r    r/   BaseAuth.auth_html4   r?   r#   c                    [        S5      e)z2Completes login process, must return user instancer;   r<   r5   s      r    r4   BaseAuth.auth_complete8   r?   r#   c                    g)zfProcess data for errors, raise exception if needed.
Call this method on any override of auth_complete.N )r   r   s     r    process_errorBaseAuth.process_error<   s    r#   c                   SU;  d)  US   R                   U R                   :w  d  SU;  d  SU;  a  gUR                  S5      =(       d    U R                  U l        UR                  S5      =(       d    U R                  U l        U R                  R	                  5       U l        UR                  SS5        U R                  R                  U 5      nU R                  R                  " U0 UD6u  pU R                  " U/UQ70 UD6$ )zAuthenticate user using social credentials

Authentication is made if this is the correct backend, backend
verification is made by kwargs inspection for current backend
name presence.
r&   r   responseNr   is_newF)
r(   getr   r   r   r   
setdefaultget_pipelineclean_authenticate_argspipeliner   r6   r7   rO   s       r    authenticateBaseAuth.authenticate@   s     V#i %%2''

:.?$--"JJ~6K$:K:KMM..0	(E*==--d3}}<<dMfM}}X7777r#   c                    U R                   " X/UQ70 UD6n[        U[        5      (       d  U$ UR                  S5      nU(       a,  UR                  S5      Ul        UR                  S5      Ul        U$ )NusersocialrJ   )run_pipeline
isinstancedictrK   social_userrJ   )r   rO   pipeline_indexr6   r7   outrT   s          r    rO   BaseAuth.pipeline[   sd    J4J6J#t$$Jwwv"wwx0D''(+DKr#   c                    U R                   R                  U 5      nU R                  US'   U R                   R                  R                  US'   U R
                  " U/UQ70 UD6$ )Nr(   user_storage)r   get_disconnect_pipeliner(   storagerT   rV   rP   s       r    
disconnectBaseAuth.disconnecte   sX    ==88>v!%!6!6!;!;~  ;D;F;;r#   c                ^   UR                  5       nUR                  SU R                  5        UR                  SUR                  U R                  S 5      =(       d    U 5        UR                  SU R                  R                  5       5        UR                  S0 5        [        U[        5      (       a  US:  d  U[        U5      :  a  Sn[        XS  5       HR  u  pgX&-   US'   [        U5      nU" U0 UD6=(       d    0 n	[        U	[        5      (       d  U	s  $ UR                  U	5        MT     U$ )Nr   r&   requestdetailsr   rZ   )copyrL   r   popr(   r   rW   intlen	enumerater   rX   update)
r   rO   rZ   r6   r7   r[   idxr(   funcresults
             r    rV   BaseAuth.run_pipelinek   s    kkmz4==1y#''$))T":"BdCy$--"<"<">?y"% >3//!X.N"8O#<=IC$2$8C ! &D4'3'-2Ffd++JJv > 
r#   c           
        S[        [        R                  " 5       5      0n/ nU R                  (       d  U R                  SS5      (       a  [	        UR                  5       5      nO2U R                  =(       d    / [        SU R                  S/ 5      5      -   nU H  n	[        U	[        5      (       a  [        [        SU	5      5      n	Sn
[        U	[        5      (       a  U	=pOO[        U	5      S:X  a  U	u  pn
O:[        U	5      S:X  a  U	u  pO&[        U	5      S	:X  a  U	S
   =pO[        U SU	< 35      eUR                  XR                  XR                  U5      5      5      nU
(       a	  U(       d  M  XU'   M     U$ )z6Return default extra data to store in extra_data field	auth_timeGET_ALL_EXTRA_DATAFz3list[str | tuple[str, str] | tuple[str, str, bool]]r   z	list[str]   r	      r   zInvalid EXTRA_DATA item: )rh   timerr   r'   listkeysr   r   rW   tupler   ri   r   rK   )r   rT   uidrI   re   r6   r7   r   extra_data_entriesentrydiscardr(   aliasvalues                 r    
extra_dataBaseAuth.extra_data   sO    TYY[) 
 SU""dll3G&O&O!%hmmo!6"&//"7R4E\2.< " (E%&&d;67G%%%$$uUq',$WUq#eUq$Qx'u&t/H	-RSSLL{{4U9K'LMEuK# ($ r#   c                   U R                  S/ 5       Vs/ s H  o3R                  5       PM     nnU R                  S/ 5       Vs/ s H  oUR                  5       PM     nnUR                  S5      nSnU(       aB  U(       d  U(       a4  UR                  5       nUR                  SS5      S   nX4;   =(       d    XV;   nU$ s  snf s  snf )z|Return True if the user should be allowed to authenticate, by
default check if email is whitelisted (if there's a whitelist)WHITELISTED_EMAILSWHITELISTED_DOMAINSemailT@rt   )r'   lowerrK   split)r   rI   re   r   emailsdomaindomainsalloweds           r    auth_allowedBaseAuth.auth_allowed   s     .2\\:NPR-ST-SE++--ST04=RTV0WX0Wf<<>0WXG$fKKME[[a(+Fo:):G UXs   B=Cc                8    UR                  U R                  5      $ )zIReturn a unique ID for the current user, by default from server
response.)rK   r   )r   re   rI   s      r    get_user_idBaseAuth.get_user_id   s     ||DKK((r#   c                    [        S5      e)zMust return user details in a know internal struct:
{'username': <username if any>,
 'email': <user email if any>,
 'fullname': <user full name if any>,
 'first_name': <user first name if any>,
 'last_name': <user last name if any>}
r;   r<   )r   rI   s     r    get_user_detailsBaseAuth.get_user_details   s     ""9::r#   c                t   U=(       d    SnU=(       d    SnU=(       d    SnU(       a#  U(       d  U(       d   UR                  SS5      u  p#U=(       d    U SU 3nUR                  5       UR                  5       UR                  5       4$ ! [         a"    U=(       d    U=(       d    SnU=(       d    Sn Njf = f)Nr    rt   )r   
ValueErrorstrip)r   fullname
first_name	last_names       r    get_user_namesBaseAuth.get_user_names   s    >r%2
O	Z9,(0sA(>%
 :*Qyk:~~!1!1!3Y__5FFF	  ,'989r
%O	,s   B )B76B7c                8    U R                   R                  U5      $ )zw
Return user with given ID from the User model used by this backend.
This is called by django.contrib.auth.middleware.
)r   get_user)r   user_ids     r    r   BaseAuth.get_user   s    
 }}%%g..r#   c                    U R                   R                  " U /UR                  Q7SUR                  0UR                  D6$ )z!Continue previous halted pipelinerZ   )r   rQ   r6   	next_stepr7   )r   partials     r    continue_pipelineBaseAuth.continue_pipeline   sB    }}))
5<\\
!(!2!2
EL^^
 	
r#   c                ~   ^  T R                  S0 5      R                  5       nUR                  U 4S jU 5       5        U$ )z`Return extra arguments needed on auth process. The defaults can be
overridden by GET parameters.AUTH_EXTRA_ARGUMENTSc              3  h   >#    U  H'  oTR                   ;   d  M  UTR                   U   4v   M)     g 7fr   )r   ).0keyr   s     r    	<genexpr>0BaseAuth.auth_extra_arguments.<locals>.<genexpr>   s-      
-<ctyy@P!S$))C.!_s   22)r'   rf   rk   )r   extra_argumentss   ` r    auth_extra_argumentsBaseAuth.auth_extra_arguments   sB     ,,'=rBGGI 
-<
 	
 r#   c                    g)zNReturn True if this provider uses redirect url method,
otherwise return false.TrE   r0   s    r    r+   BaseAuth.uses_redirect   s     r#   GETmethodheadersr   authparamsc                  Uc  0 O
[        U5      nU R                  S5      nU R                  SS5      nU R                  S5      =(       d    U R                  S5      n	U R                  (       a+  SU;  a%  U R                  S5      =(       d
    [        5       US'    [        R
                  " UUUUUUU	UUS9	n
U
R                  5         U
$ ! [        R                   a  n[        U [        U5      5      UeS nAff = f)	NPROXIES
VERIFY_SSLTREQUESTS_TIMEOUTURLOPEN_TIMEOUTz
User-Agent
USER_AGENT)r   r   r   r   timeoutproxiesverify)
rX   r'   SEND_USER_AGENTr   requestsrd   ConnectionErrorr
   r   raise_for_status)r   urlr   r   r   r   r   r   r   r   rI   errs               r    rd   BaseAuth.request   s      "T'],,y)lD1,,12UdllCT6UL$?$(LL$>$N*,GL!	?''
H 	!!# '' 	?%dCH53>	?s   C C7C22C7c           	     @    U R                  XX4XVS9R                  5       $ )Nr   )rd   json)r   r   r   r   r   r   r   s          r    get_jsonBaseAuth.get_json  s(     ||  

$&	r#   c                T    [        U R                  " U/UQ70 UD6R                  5      $ r   )r   rd   text)r   r   r6   r7   s       r    get_querystringBaseAuth.get_querystring"  s&    S:4:6:??@@r#   c                F    U R                  S5      U R                  S5      4$ )zReturn tuple with Consumer Key and Consumer Secret for current
service provider. Must return (key, secret), order *must* be respected.
KEYSECRET)r'   r0   s    r    get_key_and_secretBaseAuth.get_key_and_secret%  s!     ||E"DLL$:::r#   )r   r   r   r   )r   )ry   r   rI   dict[str, Any]re   r   returnr   )r   r   r   )r   bool)r   r   r    Literal['GET', 'POST', 'DELETE']r    Mapping[str, str | bytes] | Noner   dict | bytes | str | Noner   !tuple[str, str] | AuthBase | Noner   dict | Noner   r   )r   NNNN)r   r   r   r   r   r   r   r   r   r   r   r   r   zdict[Any, Any])r   zdict[str, str])r   ztuple[str, str])'__name__
__module____qualname____firstlineno____doc__r(   supports_inactive_userr   __annotations__r   rr   REQUIRES_EMAIL_VALIDATIONr   r!   r'   r1   r8   r-   r/   r4   rF   rQ   rO   ra   rV   r   r   r   r   r   r   r   r   r+   rd   r   r   r   __static_attributes__rE   r#   r    r   r      s    D"FCMQJJQ %OJJ4
3;;;>86<.( ( !	(
  ( 
(T)
;G/
 4948*.26""" 1	"
 2" (" 0" " 
"N 4948*.26" 1 2	
 ( 0  
A;r#   r   )
__future__r   ru   typingr   r   r   r   r   r   
exceptionsr
   r   utilsr   r   r   collections.abcr   requests.authr   r   rE   r#   r    <module>r      s5    "  4 4   > 7 7'&W; W;r#   