
    PEfJ
                     *    d Z ddlmZ  G d de      Zy)z|
LoginRadius BaseOAuth2 backend, docs at:
    https://python-social-auth.readthedocs.io/en/latest/backends/loginradius.html
   )
BaseOAuth2c                   P    e Zd ZdZdZdZdZdZdZdZ	dZ
d Zd	 Zd
 Zd Zd Zd Zy)LoginRadiusAuthz.LoginRadius BaseOAuth2 authentication backend.loginradiusIDz/https://api.loginradius.com/api/v2/access_tokenz.https://api.loginradius.com/api/v2/userprofileGETFc                      y)z,Return False because we return HTML instead.F )selfs    Y/var/www/VTS_Report/venv/lib/python3.12/site-packages/social_core/backends/loginradius.pyuses_redirectzLoginRadiusAuth.uses_redirect   s        c                     | j                         \  }}| j                  dd      }| j                  j                  || || j	                         d      S )NTEMPLATEzloginradius.html)backendLOGINRADIUS_KEYLOGINRADIUS_REDIRECT_URL)tplcontext)get_key_and_secretsettingstrategyrender_htmlget_redirect_uri)r   keysecretr   s       r   	auth_htmlzLoginRadiusAuth.auth_html   s[    --/Vll:'9:}}((#&,0,A,A,C ) 
 	
r   c                      | j                   |d| j                  j                  d      | j                  d      di|S )NparamstokenSECRET)r    r   )get_jsondatagetr   )r   argskwargss      r   request_access_tokenz$LoginRadiusAuth.request_access_token$   sE    t}}
!YY]]73t||H?UV
 
 	
r   c                     | j                  | j                  d|i| j                  | j                               | j	                         | j
                        S )z4Loads user data from service. Implement in subclass.access_token)r   r#   headersmethod)r"   PROFILE_URLauth_complete_paramsvalidate_stateauth_headersACCESS_TOKEN_METHOD)r   r)   r%   r&   s       r   	user_datazLoginRadiusAuth.user_data+   sU    }}"L1**4+>+>+@A%%'++  
 	
r   c                 h    |d   xs d|d   d   d   xs d|d   xs d|d   xs d|d   xs dd	}|S )
a  Must return user details in a know internal struct:
        {'username': <username if any>,
         'email': <user email if any>,
         'fullname': <user full name if any>,
         'first_name': <user first name if any>,
         'last_name': <user last name if any>}
        NickName Email    ValueFullName	FirstNameLastName)usernameemailfullname
first_name	last_namer
   )r   responseprofiles      r   get_user_detailsz LoginRadiusAuth.get_user_details5   s]     !,2g&q)'28b ,2";/52!*-3
 r   c                 v    dj                  |j                  d      |j                  | j                              S )zReturn a unique ID for the current user, by default from server
        response. Since LoginRadius handles multiple providers, we need to
        distinguish them to prevent conflicts.z{}-{}Provider)formatr$   ID_KEY)r   detailsr@   s      r   get_user_idzLoginRadiusAuth.get_user_idF   s+     ~~hll:6T[[8QRRr   N)__name__
__module____qualname____doc__namerF   ACCESS_TOKEN_URLr,   r0   REDIRECT_STATESTATE_PARAMETERr   r   r'   r1   rB   rH   r
   r   r   r   r   	   sI    8DFHBKNO



"Sr   r   N)rL   oauthr   r   r
   r   r   <module>rR      s   
 ASj ASr   