
    qhO!                        S SK Jr  S SKrS SKJr  SSKJr  SSKJrJ	r	  SSK
JrJr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5      r " S S5      rg)    )annotationsN)TYPE_CHECKING   )get_backend)DEFAULT_AUTH_PIPELINEDEFAULT_DISCONNECT_PIPELINE)partial_loadpartial_preparepartial_store)OpenIdSessionWrapperOpenIdStore)PARTIAL_TOKEN_SESSION_NAMEmodule_membersetting_name)BaseAuthc                  0    \ rS rSrS rSS jrS rS rSrg)	BaseTemplateStrategy   c                    Xl         g Nstrategy)selfr   s     F/var/www/html/env/lib/python3.13/site-packages/social_core/strategy.py__init__BaseTemplateStrategy.__init__   s         Nc                    U(       d  U(       d  [        S5      eU=(       d    0 nU(       a  U R                  X5      $ U R                  X#5      $ )Nz#Missing template or html parameters)
ValueErrorrender_templaterender_stringr   tplhtmlcontexts       r   renderBaseTemplateStrategy.render   sA    4BCC-R''55!!$00r   c                    [        S5      eNImplement in subclassNotImplementedError)r   r#   r%   s      r   r    $BaseTemplateStrategy.render_template       !"9::r   c                    [        S5      er)   r+   )r   r$   r%   s      r   r!   "BaseTemplateStrategy.render_string   r.   r   r   NNN)	__name__
__module____qualname____firstlineno__r   r&   r    r!   __static_attributes__ r   r   r   r      s    !1;;r   r   c                  t   \ rS rSrSr\rS.S jrS.S/S jjrS r	S r
S rS	 rS
 rS rS0S jrS0S jrS rS rS rS1S2S jjrS1S2S jjrS\4S3S jjrS1S jrS r S1       S4S jjrS5S jrS6S jrS0S jrS rS rS rS1S jr S r!S  r"S! r#S7S" jr$S# r%S1S$ jr&S% r'S& r(S1S' jr)S( r*S) r+S* r,S+ r-S, r.S-r/g)8BaseStrategy#   >abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Nc                P    Xl         U=(       d    U R                  " U 5      U l        g r   )storageDEFAULT_TEMPLATE_STRATEGYr#   )r   r=   r#   s      r   r   BaseStrategy.__init__'   s!    949994@r   c                    [        U5      U/nU(       a&  UR                  S[        UR                  U5      5        U H  n U R                  U5      s  $    U$ ! [        [
        4 a     M.  f = f)Nr   )r   insertnameget_settingAttributeErrorKeyError)r   rB   defaultbackendnamesvalues         r   settingBaseStrategy.setting+   sm    d#T*LLLt<=E''.. 
  #H- s   AA,+A,c                N    U R                   R                  R                  " U0 UD6$ r   )r=   usercreate_userr   argskwargss      r   rN   BaseStrategy.create_user6   s"    ||  ,,d=f==r   c                N    U R                   R                  R                  " U0 UD6$ r   )r=   rM   get_userrO   s      r   rT   BaseStrategy.get_user9   s"    ||  ))4:6::r   c                F    U R                  X5        U R                  U5      $ r   )session_setsession_getr   rB   rI   s      r   session_setdefaultBaseStrategy.session_setdefault<   s!    %%%r   c                8    [        U R                  U0 5      5      $ r   )r   rZ   r   rB   s     r   openid_session_dict BaseStrategy.openid_session_dict@   s     $D$;$;D"$EFFr   c                    U$ r   r7   r   vals     r   to_session_valueBaseStrategy.to_session_valueP       
r   c                    U$ r   r7   ra   s     r   from_session_valueBaseStrategy.from_session_valueS   re   r   c                "    [        XU/UQ70 UD6$ r   )r   r   	next_steprG   rP   rQ   s        r   partial_saveBaseStrategy.partial_saveV   s    TIGGGGr   c                "    [        XU/UQ70 UD6$ r   )r
   rj   s        r   r
   BaseStrategy.partial_prepareY   s    tiI$I&IIr   c                    [        X5      $ r   )r	   )r   tokens     r   r	   BaseStrategy.partial_load\   s    D((r   c                    U R                   R                  R                  U5        U R                  [        5      nX!:X  a  U R                  [        5        g g r   )r=   partialdestroyrX   r   session_pop)r   rq   current_token_in_sessions      r   clean_partial_pipeline#BaseStrategy.clean_partial_pipeline_   sF    $$U+#'#3#34N#O #,78 -r   c                    [        U 5      $ r   )r   r   s    r   openid_storeBaseStrategy.openid_storee   s    4  r   c                0    U R                  S[        U5      $ )NPIPELINE)rJ   r   r   rG   s     r   get_pipelineBaseStrategy.get_pipelineh   s    ||J(=wGGr   c                0    U R                  S[        U5      $ )NDISCONNECT_PIPELINE)rJ   r   r   s     r   get_disconnect_pipeline$BaseStrategy.get_disconnect_pipelinek   s    ||13NPWXXr      c                    SR                  [        U5       Vs/ s H  n[        R                  " U5      PM     sn5      $ s  snf )N )joinrangesecretschoice)r   lengthcharsis       r   random_stringBaseStrategy.random_stringn   s0    wwuV}E}!u-}EFFEs    A c                    U R                  U5      nU(       a(  U R                  S5      (       a  UR                  SS5      nU$ )NREDIRECT_IS_HTTPSzhttp://zhttps://)build_absolute_urirJ   replace)r   pathuris      r   absolute_uriBaseStrategy.absolute_uriq   s9    %%d+4<< 344++i4C
r   c                    g)zReturn current languager   r7   r{   s    r   get_languageBaseStrategy.get_languagew   s    r   c                    U R                  S5      n[        U5      nU R                  R                  R	                  U5      nU" XXc5        U$ )NEMAIL_VALIDATION_FUNCTION)rJ   r   r=   code	make_code)r   rG   emailpartial_tokenemail_validation
send_emailr   s          r   send_email_validation"BaseStrategy.send_email_validation{   sH      <<(CD"#34
||  **514$6r   c                    U R                   R                  R                  U5      nU(       a  UR                  U:w  a  gUR                  U:w  a  gUR                  (       a  gUR                  5         g)NFT)r=   r   get_coder   verifiedverify)r   r   r   verification_codes       r   validate_emailBaseStrategy.validate_email   s]     LL--66t< $5$:$:d$B""e+%%  "r   c                :    U R                   R                  XU5      $ )z4Render given template or raw html with given context)r#   r&   r"   s       r   render_htmlBaseStrategy.render_html   s    xxs'22r   c                |    XS'   U R                   US'   XS'   U R                  " U0 UD6u  p#UR                  " U0 UD6$ )zBTrigger the authentication mechanism tied to the current
frameworkr   r=   rG   )r=   clean_authenticate_argsauthenticate)r   rG   rP   rQ   s       r   r   BaseStrategy.authenticate   sO     "z LLy#y33TDVD##T4V44r   c                    X4$ )zBTake authenticate arguments and return a "cleaned" version
of themr7   rO   s      r   r   $BaseStrategy.clean_authenticate_args   s     |r   c                &    U R                  S/ 5      $ )zReturn configured backendsAUTHENTICATION_BACKENDS)rJ   r{   s    r   get_backendsBaseStrategy.get_backends   s    ||5r::r   c                6    [        U R                  5       U5      $ )z!Return a configured backend class)r   r   r]   s     r   get_backend_classBaseStrategy.get_backend_class   s    4,,.55r   c                @    U R                  U5      nU" U /UQ7SU0UD6$ )z$Return a configured backend instanceredirect_uri)r   )r   rB   r   rP   rQ   Backends         r   r   BaseStrategy.get_backend   s,    ((.tHH,HHHr   c                    [        S5      e)z+Return a response redirect to the given URLr*   r+   )r   urls     r   redirectBaseStrategy.redirect       !"9::r   c                    [        S5      e)z#Return value for given setting namer*   r+   r]   s     r   rC   BaseStrategy.get_setting   r   r   c                    [        S5      e)z'Return HTTP response with given contentr*   r+   )r   contents     r   r$   BaseStrategy.html   r   r   c                    [        S5      e)z)Return current request data (POST or GET)r*   r+   )r   merges     r   request_dataBaseStrategy.request_data   r   r   c                    [        S5      e)zReturn current host valuer*   r+   r{   s    r   request_hostBaseStrategy.request_host   r   r   c                    [        S5      e)z"Return session value for given keyr*   r+   )r   rB   rF   s      r   rX   BaseStrategy.session_get   r   r   c                    [        S5      e)zSet session value for given keyr*   r+   rY   s      r   rW   BaseStrategy.session_set   r   r   c                    [        S5      e)zPop session value for given keyr*   r+   r]   s     r   rv   BaseStrategy.session_pop   r   r   c                    [        S5      e)z-Build absolute URI with given (optional) pathr*   r+   )r   r   s     r   r   BaseStrategy.build_absolute_uri   r   r   c                    [        S5      e)zIs the request using HTTPS?r*   r+   r{   s    r   request_is_secureBaseStrategy.request_is_secure   r   r   c                    [        S5      e)zpath of the current requestr*   r+   r{   s    r   request_pathBaseStrategy.request_path   r   r   c                    [        S5      e)zPort in use for this requestr*   r+   r{   s    r   request_portBaseStrategy.request_port   r   r   c                    [        S5      e)zRequest GET datar*   r+   r{   s    r   request_getBaseStrategy.request_get   r   r   c                    [        S5      e)zRequest POST datar*   r+   r{   s    r   request_postBaseStrategy.request_post   r   r   )r=   r#   )NN)rB   strrG   BaseAuth | None)rG   r   r   )rG   r   )r   intr   r   returnr   )rG   r   r   r   r   z
str | Noner   r   )r   r   r   r   r   boolr1   )T)0r2   r3   r4   r5   ALLOWED_CHARSr   r>   r   rJ   rN   rT   rZ   r^   rc   rg   rl   r
   r	   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   r$   r   r   rX   rW   rv   r   r   r   r   r   r   r6   r7   r   r   r9   r9   #   s   TM 4A	>;&G HJ)9!HY +-= G
 JN(+<F		35
;6I;;;;;;;;;;;;;;r   r9   )
__future__r   r   typingr   backends.utilsr   pipeliner   r   pipeline.utilsr	   r
   r   storer   r   utilsr   r   r   backends.baser   r   r9   r7   r   r   <module>r      s?    "    ' H H H 4 J J'; ;&C; C;r   