a
    Z4`                     @   sx   d dl mZ d dlZd dl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)OAuth2Error)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )MicrosoftGraphProviderc                 C   sp   z|   }W n& t jjy2   td| jY n0 d|vrld}|di d}|rdd||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dataZerror_messageZmicrosoft_error_message r   g/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/microsoft/views.py_check_errors   s    

r   c                       s*   e Zd ZejZ fddZdd Z  ZS )MicrosoftGraphOAuth2Adapterc                    sV   t t| | |  }| dp(d}d|}d|| _d|| _d| _	d S )Ntenantcommonz%https://login.microsoftonline.com/{0}z{0}/oauth2/v2.0/tokenz{0}/oauth2/v2.0/authorizez$https://graph.microsoft.com/v1.0/me/)
superr   __init__get_providerZget_settingsr   r   Zaccess_token_urlZauthorize_urlprofile_url)selfrequestproviderr   Zbase_url	__class__r   r   r   %   s    
z$MicrosoftGraphOAuth2Adapter.__init__c                 K   s8   dd |ji}tj| j|d}t|}|  ||S )NZAuthorizationz
Bearer {0})headers)r   tokenrequestsr   r   r   r   Zsociallogin_from_response)r   r    Zappr%   kwargsr$   r   
extra_datar   r   r   complete_login.   s    z*MicrosoftGraphOAuth2Adapter.complete_login)	__name__
__module____qualname__r   r	   Zprovider_idr   r)   __classcell__r   r   r"   r   r   "   s   	r   )
__future__r   r   r&   Z-allauth.socialaccount.providers.oauth2.clientr   Z,allauth.socialaccount.providers.oauth2.viewsr   r   r   r!   r   r   r   Zadapter_viewZoauth2_loginZoauth2_callbackr   r   r   r   <module>   s   
