Ë
    ûûàg×  ã                   óª   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ  G d	„ d
«      Z G d„ de	«      Z G d„ de«      ZegZy)é    N)ÚEmailAddress)Úget_adapter)ÚQUERY_EMAIL)Ú
AuthActionÚProviderAccount)ÚGoogleOAuth2Adapter)ÚOAuth2Error)ÚOAuth2Providerc                   ó   — e Zd ZdZdZy)ÚScopeÚemailÚprofileN)Ú__name__Ú
__module__Ú__qualname__ÚEMAILÚPROFILE© ó    úm/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/google/provider.pyr   r      s   „ Ø€EØ�Gr   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚGoogleAccounta–  
    The account data can be in two formats. One, originating from
    the /v2/userinfo endpoint:

        {'email': 'john.doe@gmail.com',
         'given_name': 'John',
         'id': '12345678901234567890',
         'locale': 'en',
         'name': 'John',
         'picture': 'https://lh3.googleusercontent.com/a/code',
         'verified_email': True}

    The second, which is the payload of the id_token:

        {'at_hash': '-someHASH',
         'aud': '123-pqr.apps.googleusercontent.com',
         'azp': '123-pqr.apps.googleusercontent.com',
         'email': 'john.doe@gmail.com',
         'email_verified': True,
         'exp': 1707297277,
         'given_name': 'John',
         'iat': 1707293677,
         'iss': 'https://accounts.google.com',
         'locale': 'en',
         'name': 'John',
         'picture': 'https://lh3.googleusercontent.com/a/code',
         'sub': '12345678901234567890'}
    c                 óL   — | j                   j                  j                  d«      S )NÚlink©ÚaccountÚ
extra_dataÚget©Úselfs    r   Úget_profile_urlzGoogleAccount.get_profile_url/   s   € Ø�|‰|×&Ñ&×*Ñ*¨6Ó2Ð2r   c                 óL   — | j                   j                  j                  d«      S )NÚpicturer   r   s    r   Úget_avatar_urlzGoogleAccount.get_avatar_url2   s   € Ø�|‰|×&Ñ&×*Ñ*¨9Ó5Ð5r   N)r   r   r   Ú__doc__r!   r$   r   r   r   r   r      s   „ ñò:3ó6r   r   c                   óP   ‡ — e Zd ZdZdZeZeZdZ	d„ Z
ˆ fd„Zd„ Zd„ Zd„ Zd	„ Zˆ xZS )
ÚGoogleProviderÚgoogleÚGoogleTc                 ór   — t         j                  g}t        r|j                  t         j                  «       |S )N)r   r   r   Úappendr   )r    Úscopes     r   Úget_default_scopez GoogleProvider.get_default_scope=   s%   € Ü—‘�ˆÝØ�L‰LœŸ™Ô%Øˆr   c                 óX   •— t         ‰| �  ||«      }|t        j                  k(  rd|d<   |S )Nzselect_account consentÚprompt)ÚsuperÚget_auth_params_from_requestr   ÚREAUTHENTICATE)r    ÚrequestÚactionÚretÚ	__class__s       €r   r1   z+GoogleProvider.get_auth_params_from_requestC   s0   ø€ Ü‰gÑ2°7¸FÓCˆØ”Z×.Ñ.Ò.Ø4ˆC�‰MØˆ
r   c                 ó   — d|v r|d   S |d   S )NÚsubÚidr   ©r    Údatas     r   Úextract_uidzGoogleProvider.extract_uidI   s   € Ø�D‰=Ø˜‘;ÐØ�D‰zÐr   c                 óx   — t        |j                  d«      |j                  d«      |j                  d«      ¬«      S )Nr   Úfamily_nameÚ
given_name)r   Ú	last_nameÚ
first_name)Údictr   r:   s     r   Úextract_common_fieldsz$GoogleProvider.extract_common_fieldsN   s3   € ÜØ—(‘(˜7Ó#Ø—h‘h˜}Ó-Ø—x‘x Ó-ô
ð 	
r   c                 óÄ   — g }|j                  d«      }|rJt        |j                  d«      xs |j                  d«      «      }|j                  t        ||d¬«      «       |S )Nr   Úemail_verifiedÚverified_emailT)r   ÚverifiedÚprimary)r   Úboolr+   r   )r    r;   r5   r   rG   s        r   Úextract_email_addressesz&GoogleProvider.extract_email_addressesU   sU   € ØˆØ—‘˜Ó!ˆÙÜ˜DŸH™HÐ%5Ó6ÒT¸$¿(¹(ÐCSÓ:TÓUˆHØ�J‰J”|¨%¸(ÈDÔQÔRØˆ
r   c                 ó@  — ddl m} |j                  d«      }|st        «       j	                  d«      ‚	 |j                  | j                  |¬«      }| j                  ||«      }|S # t        t        j                  f$ r}t        «       j	                  d«      |‚d }~ww xY w)Nr   )ÚviewsÚid_tokenÚinvalid_token)ÚappÚ
credential)Ú&allauth.socialaccount.providers.googlerL   r   r   Úvalidation_errorÚ_verify_and_decoderO   r	   ÚrequestsÚRequestExceptionÚsociallogin_from_response)r    r3   ÚtokenrL   rP   Úidentity_dataÚeÚlogins           r   Úverify_tokenzGoogleProvider.verify_token]   sš   € Ý@à—Y‘Y˜zÓ*ˆ
ÙÜ“-×0Ñ0°ÓAÐAð	IØ!×4Ñ4Ø—H‘H¨ð 5ó ˆMð
 ×.Ñ.¨w¸ÓFˆØˆøô œX×6Ñ6Ð7ò 	IÜ“-×0Ñ0°ÓAÀqÐHûð	Iús   ´A% Á%BÁ>BÂB)r   r   r   r9   Únamer   Úaccount_classr   Úoauth2_adapter_classÚsupports_token_authenticationr-   r1   r<   rC   rJ   r[   Ú__classcell__)r6   s   @r   r'   r'   6   s<   ø„ Ø	€BØ€DØ!€MØ.ÐØ$(Ð!òôòò

òör   r'   )rT   Úallauth.account.modelsr   Úallauth.socialaccount.adapterr   Ú"allauth.socialaccount.app_settingsr   Ú$allauth.socialaccount.providers.baser   r   Ú,allauth.socialaccount.providers.google.viewsr   Ú-allauth.socialaccount.providers.oauth2.clientr	   Ú/allauth.socialaccount.providers.oauth2.providerr
   r   r   r'   Úprovider_classesr   r   r   ú<module>ri      sL   ðÛ å /Ý 5Ý :ß LÝ LÝ EÝ J÷ñ ô
"6�Oô "6ôJ4�^ô 4ðn #Ð#Ñ r   