
    qh                         S 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
   " S S	\5      r " S
 S\
5      r " S S\5      rg)z}
LinkedIn OAuth1 and OAuth2 backend, docs at:
    https://python-social-auth.readthedocs.io/en/latest/backends/linkedin.html
    N)timegm)OpenIdConnectAuth)AuthCanceledAuthTokenError   )
BaseOAuth2c                   *    \ rS rSrSrSrSrSrS rSr	g)	LinkedinOpenIdConnect   z
Linkedin OpenID Connect backend. Oauth2 has been deprecated as of August 1, 2023.
https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin-v2?context=linkedin/consumer/context
zlinkedin-openidconnectzhttps://www.linkedin.com/oauthclient_secret_postc                 :   [        [        R                  R                  [        R                  R                  5      R                  5       5      nSU;   a  X!S   :  a  [        U S5      eU R                  SU R                  5      nX!S   U-   :  a  [        U S5      eg)zHCopy of the regular validate_claims method without the nonce validation.nbfzIncorrect id_token: nbfID_TOKEN_MAX_AGEiatzIncorrect id_token: iatN)	r   datetimenowtimezoneutc	timetupler   settingr   )selfid_tokenutc_timestamp
iat_leeways       O/var/www/html/env/lib/python3.13/site-packages/social_core/backends/linkedin.pyvalidate_claims%LinkedinOpenIdConnect.validate_claims   s     x0044X5F5F5J5JKUUWXH%!@ '@AA \\"4d6K6KL
E?Z77 '@AA 8     N)
__name__
__module____qualname____firstlineno____doc__nameOIDC_ENDPOINTTOKEN_ENDPOINT_AUTH_METHODr   __static_attributes__r   r   r   r
   r
      s!    
 $D4M
 "6Br   r
   c                      ^  \ rS rSrSrSrSrSrSrSr	/ SQr
/ S	QrS
 rS rS rS rS rS rU 4S jrU 4S jrSrU =r$ )LinkedinOAuth2/   zlinkedin-oauth2z/https://www.linkedin.com/oauth/v2/authorizationz-https://www.linkedin.com/oauth/v2/accessTokenz>https://api.linkedin.com/v2/userinfo?projection=({projection})zRhttps://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))F)emailprofileopenid))idr/   )
expires_inexpires)	firstName
first_name)lastName	last_name)refresh_tokenr6   )refresh_token_expires_inrefresh_expires_inc                     U R                   $ N)USER_DETAILS_URLr   s    r   user_details_urlLinkedinOAuth2.user_details_urlC   s    $$$r   c                     U R                   $ r:   )USER_EMAILS_URLr<   s    r   user_emails_urlLinkedinOAuth2.user_emails_urlF   s    ###r   c                     U R                  U R                  5       U R                  U5      S9nS[        U R	                  S/ 5      5      ;   a%  U R
                  " U/UQ70 UD6nU(       a  US   US'   U$ )Nheadersr,   FIELD_SELECTORSr   )get_jsonr=   user_data_headerssetr   
email_data)r   access_tokenargskwargsresponseemailss         r   	user_dataLinkedinOAuth2.user_dataI   sw    ==!!#T-C-CL-Q ! 
 c$,,'8"=>>__\CDCFCF$*1I!r   c                     U R                  U R                  5       U R                  U5      S9n/ nUR                  S/ 5       H5  nUR                  S0 5      R                  S5      nUR	                  U5        M7     [        [        S U5      5      $ )NrD   elementszhandle~r,   )rG   rA   rH   getappendlistfilter)r   rK   rL   rM   rN   email_addresseselementemail_addresss           r   rJ   LinkedinOAuth2.email_dataU   s    ==  "D,B,B<,P ! 
 ||J3G#KK	26::7CM""=1 4 F4122r   c                     U R                  US   S9nU R                  US   US   S9u  p#nUR                  SS5      nUR                  SS5      X4-   UUUUS	.$ )
z)Return user details from Linkedin accountrK   )rK   
given_namefamily_name)r3   r5   r,    sub)r/   usernamefullnamer3   r5   r,   )rP   get_user_namesrT   )r   rN   rb   r3   r5   r,   s         r   get_user_detailsLinkedinOAuth2.get_user_details_   s}    >>x/G>H*.*=*=-}- +> +
'i Wb),,ub)". $"
 	
r   c                     0 nU R                  S5      nU(       a$  USLa  UOU R                  R                  5       US'   SU 3US'   U$ )NFORCE_PROFILE_LANGUAGETzAccept-LanguagezBearer Authorization)r   strategyget_language)r   rK   rE   langs       r   rH    LinkedinOAuth2.user_data_headersp   sU    ||45D(dmm.H.H.J %& &-\N#; r   c                 L   > UR                  S5      US'   [        TU ]  " U0 UD6$ )Ndataparams)popsuperrequest_access_token)r   rL   rM   	__class__s      r   rr   #LinkedinOAuth2.request_access_tokenz   s-     "::f-xw+T<V<<r   c                    > [         TU ]  U5        UR                  S5      (       a2  [        XR                  S5      =(       d    UR                  S5      5      eg )NserviceErrorCodemessagestatus)rq   process_errorrT   r   )r   rn   rs   s     r   ry   LinkedinOAuth2.process_error   sG    d#88&''tXXi%8%NDHHX<NOO (r   r   )r    r!   r"   r#   r%   AUTHORIZATION_URLACCESS_TOKEN_URLr;   r@   REDIRECT_STATEDEFAULT_SCOPE
EXTRA_DATAr=   rA   rP   rJ   rd   rH   rr   ry   r(   __classcell__rs   s   @r   r*   r*   /   sf    DIFW	5  N2MJ%$
3
"=P Pr   r*   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )LinkedinMobileOAuth2   zlinkedin-mobile-oauth2c                 0   > [         TU ]  U5      nSUS'   U$ )Nmsdkzx-li-src)rq   rH   )r   rK   rE   rs   s      r   rH   &LinkedinMobileOAuth2.user_data_headers   s!    '+L9$
r   r   )r    r!   r"   r#   r%   rH   r(   r   r   s   @r   r   r      s    #D r   r   )r$   r   calendarr   $social_core.backends.open_id_connectr   social_core.exceptionsr   r   oauthr   r
   r*   r   r   r   r   <module>r      sH   
   B ? B- B@TPZ TPn> r   