
    $gJ
                     2    d Z ddlmZ  G d de          ZdS )z|
LoginRadius BaseOAuth2 backend, docs at:
    https://python-social-auth.readthedocs.io/en/latest/backends/loginradius.html
   )
BaseOAuth2c                   R    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dS )LoginRadiusAuthz.LoginRadius BaseOAuth2 authentication backend.loginradiusIDz/https://api.loginradius.com/api/v2/access_tokenz.https://api.loginradius.com/api/v2/userprofileGETFc                     dS )z,Return False because we return HTML instead.F )selfs    `/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/social_core/backends/loginradius.pyuses_redirectzLoginRadiusAuth.uses_redirect   s    u    c                     |                                  \  }}|                     dd          }| 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   sl    --//Vll:'9::}((#&,0,A,A,C,C  ) 
 
 	
r   c                 |     | j         |d| j                            d          |                     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$   sO    t}
!Y]]733t||H?U?UVV
 
 
 	
r   c                     |                      | j        d|i|                     |                                           |                                 | 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+   s]    }}"L1**4+>+>+@+@AA%%''+  
 
 	
r   c                 ~    |d         pd|d         d         d         pd|d         pd|d         pd|d         p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   sb     !,2g&q)'28b ,2";/52!*-3
 
 r   c                     d                     |                    d          |                    | 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   s2     ~~hll:66T[8Q8QR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   	   s        88DFHBKNO  

 

 


 
 

 
 
  "S S S S Sr   r   N)rL   oauthr   r   r
   r   r   <module>rR      sk    
      AS AS AS AS ASj AS AS AS AS ASr   