o
    Lf?                     @   s   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZ dd	lmZ d
d ZG dd deZeeZeeZdS )    )unicode_literalsN)context)app_settings)get_adapter)OAuth2Error)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )MicrosoftGraphProviderc                 C   sl   z|   }W n t jjy   td| jw d|vr4d}|di d}|r0d||f}t||S )Nz)Invalid JSON from Microsoft Graph API: {}idz"Error retrieving Microsoft profileerrormessagez: )jsondecoderJSONDecodeErrorr   formattextgetjoin)responsedataerror_messagemicrosoft_error_message r   p/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/socialaccount/providers/microsoft/views.py_check_errors   s   
r   c                   @   sP   e Zd ZejZdd Zedd Zedd Z	dZ
dZd	d
eiZdd ZdS )MicrosoftGraphOAuth2Adapterc                 C   sT   t j| ji }|d|dd}t jtj| jd}|jd|}d| | S )NTENANTtenantcommon)providerz"https://login.microsoftonline.com/)	r   	PROVIDERSr   provider_idr   get_appr   requestsettings)selfpathr&   r   appr   r   r   _build_tenant_url'   s
   z-MicrosoftGraphOAuth2Adapter._build_tenant_urlc                 C   
   |  dS )Nz/oauth2/v2.0/tokenr*   r'   r   r   r   access_token_url0      
z,MicrosoftGraphOAuth2Adapter.access_token_urlc                 C   r+   )Nz/oauth2/v2.0/authorizer,   r-   r   r   r   authorize_url4   r/   z)MicrosoftGraphOAuth2Adapter.authorize_urlz#https://graph.microsoft.com/v1.0/me)businessPhonesdisplayName	givenNamer   jobTitlemailmobilePhoneofficeLocationpreferredLanguagesurnameuserPrincipalNamemailNicknamecompanyNamez$select,c                 K   sB   dd |ji}t  j| j| j|d}t|}|  	||S )NAuthorizationz
Bearer {0})paramsheaders)
r   tokenr   get_requests_sessionr   profile_urlprofile_url_paramsr   get_providersociallogin_from_response)r'   r%   r)   rA   kwargsr@   r   
extra_datar   r   r   complete_loginK   s   	z*MicrosoftGraphOAuth2Adapter.complete_loginN)__name__
__module____qualname__r   r   r#   r*   propertyr.   r0   rC   user_propertiesr   rD   rI   r   r   r   r   r   $   s    	

r   )
__future__r   r   allauth.corer   allauth.socialaccountr   allauth.socialaccount.adapterr   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r	   r!   r   r   r   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    
6