
    TњhE>                        S SK JrJrJrJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJrJr  S SKJr  S SKJr  S SKrS S	KJr  S S
KJr  S SKJr  S SKJrJrJ r   S SK!J"r"  S SK#JrJ$r$J%r%  S S
K&Jr  S SK'J(r(  S SK)J*r*  \RV                  (       d  \" S5      e " S S\RX                  5      r- " S S\R\                  5      r/ " S S\R\                  5      r0 " S S\R\                  5      r1 " S S5      r2g)    )AnyDictListOptional)settings)authenticateget_user_model)get_current_site)ImproperlyConfiguredPermissionDenied)models)gettext_lazyN)app_settings)get_adapter)EmailAddress)filter_users_by_emailget_next_redirect_urlsetup_user_emailcontext)r   	providerssignals)statekit)get_request_paramzAallauth.socialaccount not installed, yet its models are imported.c                       \ rS rSrS rSrg)SocialAppManager    c                     [         R                  R                  (       a$  [        U5      nU R	                  UR
                  S9$ U R                  5       $ )N)	sites__id)allauthr   SITES_ENABLEDr
   filteridall)selfrequestsites      WD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\allauth/socialaccount/models.pyon_siteSocialAppManager.on_site!   s<    --#G,D;;;11xxz     N)__name__
__module____qualname____firstlineno__r)   __static_attributes__r,   r+   r(   r   r       s    r+   r   c                       \ rS rSr\" 5       r\R                  " \" S5      SS9r	\R                  " \" S5      SSS9r
\R                  " \" S	5      SS9r\R                  " \" S
5      S\" S5      S9r\R                  " \" S5      SS\" S5      S9r\R                  " \" S5      SS\" S5      S9r\R                  " \SS9r\R&                  R(                  (       a  \R*                  " SSS9r " S S5      rS rS rSrg)	SocialApp(   provider   verbose_name
max_lengthzprovider ID   T)r8   r9   blanknamez	client id   zApp ID, or consumer key)r8   r9   	help_textz
secret keyz-API secret, client secret, or consumer secret)r8   r9   r;   r>   keyKey)defaultr;   z
sites.Site)r;   c                   4    \ rS rSr\" S5      r\" S5      rSrg)SocialApp.MetaQ   zsocial applicationzsocial applicationsr,   N)r-   r.   r/   r0   _r8   verbose_name_pluralr1   r,   r+   r(   MetarC   Q   s    -. 56r+   rG   c                     U R                   $ N)r<   r%   s    r(   __str__SocialApp.__str__U   s    yyr+   c                 `    [         R                  R                  U R                  5      nU" XS9$ )N)r&   app)r   registry	get_classr5   )r%   r&   provider_classs      r(   get_providerSocialApp.get_providerX   s'    "++55dmmDg88r+   r,   N)r-   r.   r/   r0   r   objectsr   	CharFieldrE   r5   provider_idr<   	client_idsecretr?   	JSONFielddictr   r    r   r!   ManyToManyFieldsitesrG   rK   rR   r1   r,   r+   r(   r3   r3   (   s    G z]H ""}%K
 6rBD  {^-.I
 |_CD	F 

uX#TQuXC D9H))
 &&|4@7 79r+   r3   c                      \ rS rSr\R
                  " \R                  \R                  S9r	\R                  " \" S5      SS9r\R                  " \" S5      \R                  S9r\R                   " \" S5      SS	9r\R                   " \" S
5      SS9r\R&                  " \" S5      \S9r " S S5      rS rS rS rS rSS jrS rSrg)SocialAccount]   	on_deleter5   r:   r7   uidz
last loginT)r8   auto_nowzdate joined)r8   auto_now_addz
extra data)r8   rA   c                   8    \ rS rSrSr\" S5      r\" S5      rSrg)SocialAccount.Meta|   r5   rb   zsocial accountzsocial accountsr,   N	r-   r.   r/   r0   unique_togetherrE   r8   rF   r1   r,   r+   r(   rG   rf   |   s    -)* 12r+   rG   c                     [        U S9$ )N)account)r   rJ   s    r(   r   SocialAccount.authenticate   s    D))r+   c                     SSK Jn  U" U 5      $ )N   )socialaccount_user_display)helpersrp   )r%   rp   s     r(   rK   SocialAccount.__str__   s    7)$//r+   c                 >    U R                  5       R                  5       $ rI   )get_provider_accountget_profile_urlrJ   s    r(   ru   SocialAccount.get_profile_url   s    ((*::<<r+   c                 >    U R                  5       R                  5       $ rI   )rt   get_avatar_urlrJ   s    r(   rx   SocialAccount.get_avatar_url   s    ((*99;;r+   Nc                     [        U SS 5      nU(       a  U$ [        5       nUR                  U=(       d    [        R                  U R
                  S9=o l        U$ )N	_provider)r5   )getattrr   rR   r   r&   r5   r{   )r%   r&   r5   adapters       r(   rR   SocialAccount.get_provider   sT    4d3O-$+$8$8&w %9 %
 	
> r+   c                 @    U R                  5       R                  U 5      $ rI   )rR   wrap_accountrJ   s    r(   rt   "SocialAccount.get_provider_account   s      "//55r+   )r{   rI   )r-   r.   r/   r0   r   
ForeignKeyr   AUTH_USER_MODELCASCADEuserrU   rE   r5   r   UID_MAX_LENGTHrb   DateTimeField
last_logindate_joinedrY   rZ   
extra_datarG   r   rK   ru   rx   rR   rt   r1   r,   r+   r(   r^   r^   ]   s    X55PD z]H( 

uX,*E*EC %%1\?TRJ&&Am4DSWXK!!qMJ3 3
*0
=<6r+   r^   c                   D   \ rS rSr\R
                  " \\R                  SSS9r\R
                  " \	\R                  S9r\R                  " \" S5      \" S5      S9r\R                  " S\" S5      \" S	5      S
9r\R                   " SS\" S5      S9r " S S5      rS rSrg)SocialToken   T)ra   r;   nullr`   tokenz/"oauth_token" (OAuth1) or access token (OAuth2))r8   r>   ztoken secretz7"oauth_token_secret" (OAuth1) or refresh token (OAuth2))r;   r8   r>   z
expires at)r;   r   r8   c                   8    \ rS rSrSr\" S5      r\" S5      rSrg)SocialToken.Meta   )rN   rl   zsocial application tokenzsocial application tokensr,   Nri   r,   r+   r(   rG   r      s    ,34 ;<r+   rG   c                 R    U R                   R                  < SU R                  < S3$ )Nz ())_metar8   pkrJ   s    r(   rK   SocialToken.__str__   s     JJ33TWW==r+   r,   N)r-   r.   r/   r0   r   r   r3   SET_NULLrN   r^   r   rl   	TextFieldrE   r   token_secretr   
expires_atrG   rK   r1   r,   r+   r(   r   r      s    


ISW
XCHGwZEFE ##~&MNL
 %%AlOJ= =
>r+   r   c                      \ rS rSr% Sr\\S'   \\   \S'   \	\
   \S'   \\S'   \\   \S'   \\   \S'   \\S	'          SS\\   S\\   S\\	\
      S\\   S	\4
S jjrS S jr\S\4S j5       rS\\\4   4S jr\S\\\4   SS 4S j5       rS!S\SS
4S jjr\S\4S j5       rS S jrS\4S jrS S jrS S jrS S jrS\\   4S jr\S\\\4   4S j5       r\S"S\\\\4      S\4S jj5       r\S\\\\4      4S j5       r Sr!g
)#SocialLogin   a  
Represents a social user that is in the process of being logged
in. This consists of the following information:

`account` (`SocialAccount` instance): The social account being
logged in. Providers are not responsible for checking whether or
not an account already exists or not. Therefore, a provider
typically creates a new (unsaved) `SocialAccount` instance. The
`User` instance pointed to by the account (`account.user`) may be
prefilled by the provider for use as a starting point later on
during the signup process.

`token` (`SocialToken` instance): An optional access token token
that results from performing a successful authentication
handshake.

`state` (`dict`): The state to be preserved during the
authentication handshake. Note that this state may end up in the
url -- do not put any secrets in here. It currently only contains
the url to redirect to after login.

`email_addresses` (list of `EmailAddress`): Optional list of
email addresses retrieved from the provider.
rl   r   email_addressesstate_did_authenticate_by_emailphonephone_verifiedNc                     XPl         U(       a  UR                  b  UR                  U:X  d   eX0l        Xl        U(       a  X l        U(       a  UO/ U l        0 U l        X`l        Xpl        g rI   )r5   rl   r   r   r   r   r   r   )r%   r   rl   r   r   r5   r   r   s           r(   __init__SocialLogin.__init__   sW     !==(EMMW,DDD
	"L2Ar

,r+   returnc                    X l         U R                  USS9  [        R                  R	                  [
        XS9  [        5       R                  SU R                   U R                  U R                  R                  5       S.S9  g )NT)connectsenderr&   socialloginz%socialaccount/email/account_connected)rl   r5   r   )
r   saver   social_account_addedsendr   r   send_notification_mailrl   rR   )r%   r&   r   s      r(   r   SocialLogin.connect   sr    			'4	($$)) 	* 	
 	,,3II<< LL557 	- 	
r+   c                 J    [        U R                  R                  S5      5      $ )Nheadless)boolr   getrJ   s    r(   is_headlessSocialLogin.is_headless   s    DJJNN:.//r+   c                    [        5       R                  n[        U R                  R	                  5       U" U R
                  5      U" U R                  5      U R                  U R                   Vs/ s H
  o!" U5      PM     snU R                  U R                  S9nU R                  (       a  U" U R                  5      US'   U$ s  snf )N)r5   rl   r   r   r   r   r   r   )r   serialize_instancerZ   r5   	serializerl   r   r   r   r   r   r   )r%   r   earets       r(   r   SocialLogin.serialize  s    (]==]],,.&t||4#DII.**>B>R>RS>R/3>RS**..
 ::-djj9CL
 Ts   .Cdatac                    SSK Jn  [        5       R                  nUR	                  US   5      nU" [
        US   5      nU" [        5       US   5      nSU;   a  U" [        US   5      nOS n/ nUS    H!  n	U" [        U	5      n
UR                  U
5        M#     U " 5       nXKl
        X{l        X[l        Xkl        Xl        US   Ul        UR!                  S	5      Ul        UR!                  S
S5      Ul        U$ )Nr   )Providerr5   rl   r   r   r   r   r   r   F)-allauth.socialaccount.providers.base.providerr   r   deserialize_instancedeserializer^   r	   r   r   appendr5   r   rl   r   r   r   r   r   r   )clsr   r   r   r5   rl   r   r   r   r   email_addressr   s               r(   r   SocialLogin.deserialize  s    J*}AA''Z(89&}d9oF#N$4d6lCd?(d7mDEE()B0rBM""=1 * e	-M	HHW%	!XX&6>
r+   r   c                 *   U R                   nUR                  5         X0R                  l         U R                  R                  5         [        R                  (       aF  U R
                  (       a5  U R                  U R
                  l        U R
                  R                  5         U(       a  O[        XU R                  5        U R                  (       aC  [        5       nUR                  (       a'  UR                  X0R                  U R                  5        ggg)zu
Saves a new account. Note that while the account is new,
the user may be an existing one (when connecting accounts)
N)r   r   rl   r   STORE_TOKENSr   r   r   r   get_account_adapter_has_phone_impl	set_phoner   )r%   r&   r   r   account_adapters        r(   r   SocialLogin.save,  s    
 yy		 $$!%DJJJJOOWD,@,@A::13O..))$

D<O<OP / r+   c                     U R                   R                  c  g[        5       R                  R	                  U R                   R                  S9R                  5       $ )zeWhen `False`, this social login represents a temporary account, not
yet backed by a database record.
F)r   )r   r   r	   rT   r"   existsrJ   s    r(   is_existingSocialLogin.is_existingB  sC    
 99<<''..$)),,.?FFHHr+   c                 ^    SU l         U R                  5       (       d  U R                  5         gg)zSLook up the existing local user account to which this social login
points, if any.
N)r   _lookup_by_socialaccount_lookup_by_emailrJ   s    r(   lookupSocialLogin.lookupK  s,     +/',,..!!# /r+   c                    U R                   (       a   e [        R                  R                  U R                  R
                  U R                  R                  S9nU R                  R                  Ul        Xl        U R                  R                  U l        UR                  5         [        R                  R                  [        [        R                  U S9  U R!                  5         g! [        R"                   a     gf = f)Nrh   r   TF)r   r^   rT   r   rl   r5   rb   r   r   r   r   social_account_updatedr   r   r   r&   _store_tokenDoesNotExist)r%   as     r(   r   $SocialLogin._lookup_by_socialaccountS  s    ####	%%))..DLL4D4D * A  <<22ALL))DIFFH**//"GOO 0  )) 		s   CC) )D ?D c                     [         R                  (       a  U R                  (       d  g U R                  R                  (       a   eU R                  R                  nU(       a  UR                  (       d  S n [
        R                  R                  U R                  US9nU R                  R                  Ul        U R                  R                  (       a  U R                  R                  Ul	        U R                  R                  Ul
        UR                  5         X l        g ! [
        R                   aH    U R                  U R                  l        XR                  l        U R                  R                  5          g f = f)N)rl   rN   )r   r   r   r   rN   r   rT   r   rl   r   r   r   r   )r%   rN   ts      r(   r   SocialLogin._store_tokenf  s    ((

::==  jjnnsvvC	##''#'FAjj&&AGzz&& "&!8!8::00ALFFHJ'' 	!%DJJ JJNJJOO	s   6B*D! !AE=<E=c                    U R                    Vs/ s H!  oR                  (       d  M  UR                  PM#     nnU HF  n[        5       R	                  X5      (       d  M#  [        USS9nU(       d  M6  US   U l        X0l          g    g s  snf )NT)prefer_verifiedr   )r   verifiedemailr   can_authenticate_by_emailr   r   r   )r%   eemailsr   userss        r(   r   SocialLogin._lookup_by_email~  ss    #'#7#7F#7a::'!''#7FE=::4GG)%FEu!!H	27/  Gs
   BBc                     SSK Jn  U R                  (       a^  U" XR                  U R                  5        [        R
                  (       a+  U R                  [        R                  U R                  5        g g g )Nr   )wipe_password)	9allauth.socialaccount.internal.flows.email_authenticationr   r   r   r   !EMAIL_AUTHENTICATION_AUTO_CONNECTr   r   r&   )r%   r&   r   s      r(   _accept_loginSocialLogin._accept_login  sO    	
 **'99d.M.MN==W__dii8 > +r+   c                 <    U R                   R                  S5      nU$ )Nnext)r   r   )r%   r&   urls      r(   get_redirect_urlSocialLogin.get_redirect_url  s    jjnnV$
r+   c                     0 n[        U5      nU(       a  X2S'   [        USS5      US'   [        USS5      US'   [        USS5      US'   U$ )z=
TODO: Deprecated! To be integrated with provider.redirect()
r   processloginscope auth_params)r   r   )r   r&   r   next_urls       r(   state_from_requestSocialLogin.state_from_request  sZ    
 (1$&M,WiIi*7GR@g0-Lmr+   c                 V    Uc  U R                  U5      n[        R                  " X5      $ rI   )r   r   stash_stater   r&   r   s      r(   r   SocialLogin.stash_state  s(    =**73E##G33r+   c                 L    [         R                  " U5      nUc
  [        5       eU$ rI   )r   unstash_last_stater   r   s      r(   unstash_stateSocialLogin.unstash_state  s%    ++G4="$$r+   )	r   rl   r   r   r   r5   r   r   r   )NNNNNNF)r   N)FrI   )"r-   r.   r/   r0   __doc__r^   __annotations__r   r   r   r   r   strr   r   r   propertyr   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r  r1   r,   r+   r(   r   r      s   2 K  ,''K (-C= +/'+8<#$- -(- $	-
 "$|"45- }- -,
  0T 0 04S>  tCH~ -  4QT Qd Q, IT I I$$ &0	98C=  DcN   4$sCx.)A 4S 4 4 xS#X'?  r+   r   )3typingr   r   r   r   django.confr   django.contrib.authr   r	   django.contrib.sites.shortcutsr
   django.core.exceptionsr   r   	django.dbr   django.utils.translationr   rE   allauth.app_settingsr    r   allauth_settingsallauth.account.adapterr   r   allauth.account.modelsr   allauth.account.utilsr   r   r   allauth.corer   allauth.socialaccountr   r   allauth.socialaccount.adapterallauth.socialaccount.internalr   allauth.utilsr   SOCIALACCOUNT_ENABLEDManagerr   Modelr3   r^   r   r   r,   r+   r(   <module>r     s    , ,   < ; I  6  4 F / 
 ! B B 5 3 + --
K 
v~~ 29 29j=6FLL =6@>&,, >2{ {r+   