
    qh                     n    S r SSKJr  SSKJr  SSKJr   " S S\5      r " S S	\5      r " S
 S\5      r	g)z
Yandex OpenID and OAuth2 support.

This contribution adds support for Yandex.ru OpenID service in the form
openid.yandex.ru/user. Username is retrieved from the identity url.

If username is not specified, OpenID 2.0 url used for authentication.
    )urlsplit   )
BaseOAuth2)
OpenIdAuthc                   :   ^  \ rS rSrSrSrSrS rU 4S jrSr	U =r
$ )YandexOpenId   z$Yandex OpenID authentication backendzyandex-openidzhttp://openid.yandex.ruc                 2    US   =(       d    UR                   $ )Nemail)identity_url)selfdetailsresponses      M/var/www/html/env/lib/python3.13/site-packages/social_core/backends/yandex.pyget_user_idYandexOpenId.get_user_id   s    w88#8#88    c                    > [         TU ]  U5      nUR                  S5      =(       d.    [        UR                  5      R
                  R                  S5      US'   UR                  SS5      US'   U$ )z#Generate username from identity urlusername/r    )superget_user_detailsgetr   r   pathstrip)r   r   values	__class__s      r   r   YandexOpenId.get_user_details   se    )(3#ZZ
3 x!!8

$uuSz 	z !**Wb1wr    )__name__
__module____qualname____firstlineno____doc__nameURLr   r   __static_attributes____classcell__)r   s   @r   r   r      s    .D
#C9 r   r   c                   4    \ rS rSrSrSrSrSrSrS r	S r
S	rg
)YandexOAuth2#   z+Legacy Yandex OAuth2 authentication backendzyandex-oauth2"https://oauth.yandex.com/authorizehttps://oauth.yandex.com/tokenFc                 &   U R                  UR                  S5      =(       d    UR                  S5      =(       d    S5      u  p#nUR                  S5      nU(       d  UR                  S5      nU(       a  US   OSnUR                  S5      UUUUS.$ N	real_namedisplay_namer   default_emailemailsr   )r   r   fullname
first_name	last_nameget_user_namesr   r   r   r5   r6   r7   r   r4   s          r   r   YandexOAuth2.get_user_details+       *.*=*=LL%Kn)EK+
'i _-\\(+F!'F1IRE ^4 $"
 	
r   c                 (    U R                  SUSS.S9$ Nzhttps://login.yandex.ru/infojson)oauth_tokenformat)paramsget_jsonr   access_tokenargskwargss       r   	user_dataYandexOAuth2.user_data;   #    }}*#/6B  
 	
r   r    N)r!   r"   r#   r$   r%   r&   AUTHORIZATION_URLACCESS_TOKEN_URLREDIRECT_STATEr   rI   r(   r    r   r   r+   r+   #   s%    5D<7N
 
r   r+   c                   0    \ rS rSrSrSrSrSrS rS r	Sr
g	)

YaruOAuth2B   yarur-   r.   Fc                 &   U R                  UR                  S5      =(       d    UR                  S5      =(       d    S5      u  p#nUR                  S5      nU(       d  UR                  S5      nU(       a  US   OSnUR                  S5      UUUUS.$ r0   r8   r:   s          r   r   YaruOAuth2.get_user_detailsH   r<   r   c                 (    U R                  SUSS.S9$ r>   rC   rE   s       r   rI   YaruOAuth2.user_dataX   rK   r   r    N)r!   r"   r#   r$   r&   rL   rM   rN   r   rI   r(   r    r   r   rP   rP   B   s"    D<7N
 
r   rP   N)
r%   urllib.parser   oauthr   open_idr   r   r+   rP   r    r   r   <module>rZ      s9    "  : &
: 
>
 
r   