o
    odI
                     @   s$   d Z ddlmZ G dd deZdS )z|
LoginRadius BaseOAuth2 backend, docs at:
    https://python-social-auth.readthedocs.io/en/latest/backends/loginradius.html
   )
BaseOAuth2c                   @   s\   e Zd ZdZdZdZdZdZdZdZ	dZ
dd	 Zd
d Zdd Zdd Zdd Zd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                 C   s   dS )z,Return False because we return HTML instead.F )selfr   r   b/var/www/staging_poorna_satya/env/lib/python3.10/site-packages/social_core/backends/loginradius.pyuses_redirect   s   zLoginRadiusAuth.uses_redirectc                 C   s4   |   \}}| dd}| jj|| ||  d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   r   r   r	   	auth_html   s   zLoginRadiusAuth.auth_htmlc                 O   s(   | j |d| jd| ddi|S )NparamstokenSECRET)r   r   )get_jsondatagetr   )r   argskwargsr   r   r	   request_access_token#   s   z$LoginRadiusAuth.request_access_tokenc                 O   s*   | j | jd|i| |  |  | jd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    r   r   r	   	user_data*   s   zLoginRadiusAuth.user_datac                 C   sD   |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profiler   r   r	   get_user_details4   s   
	


z LoginRadiusAuth.get_user_detailsc                 C   s   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   detailsr8   r   r   r	   get_user_idE   s   zLoginRadiusAuth.get_user_idN)__name__
__module____qualname____doc__namer=   ACCESS_TOKEN_URLr%   r)   REDIRECT_STATESTATE_PARAMETERr
   r   r!   r*   r:   r?   r   r   r   r	   r      s    
r   N)rC   oauthr   r   r   r   r   r	   <module>   s    