o
    ˷ed	                     @   s   d dl mZ d dlZd dl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)app_settings)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   f/var/www/ideatree/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ejei Z	e	de	ddZ
de
ZdeZdeZdZdZd	d
eiZdd ZdS )MicrosoftGraphOAuth2AdapterTENANT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)businessPhonesdisplayName	givenNamer
   jobTitlemailmobilePhoneofficeLocationpreferredLanguagesurnameuserPrincipalNamemailNicknamez$select,c                 K   s<   dd |ji}tj| j| j|d}t|}|  ||S )NAuthorizationz
Bearer {0})paramsheaders)	r   tokenrequestsr   profile_urlprofile_url_paramsr   get_providersociallogin_from_response)selfrequestappr.   kwargsr-   r   
extra_datar   r   r   complete_login?   s   z*MicrosoftGraphOAuth2Adapter.complete_loginN)__name__
__module____qualname__r	   r
   provider_idr   	PROVIDERSr   settingsr   r   provider_base_urlaccess_token_urlauthorize_urlr0   user_propertiesr   r1   r9   r   r   r   r   r   #   s    


r   )
__future__r   r   r/   allauth.socialaccountr   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   providerr	   r   r   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    
'