o
    h                     @   s|   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 ZG d	d
 d
e
ZeeZeeZdS )    N)context)app_settings)get_adapter)OAuth2Error)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                 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/html/pos/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/microsoft/views.py_check_errors   s   
r   c                   @   sV   e Zd ZdZdd Zedd Zedd Zedd	 Zd
Z	dd
e	iZdd ZdS )MicrosoftGraphOAuth2Adapter	microsoftc                 C   sf   t j| ji }|d|dd}t jtj| jd}|jd|}|jdd}| d| | S )NTENANTtenantcommonprovider	login_urlz!https://login.microsoftonline.com/)	r   	PROVIDERSr   provider_idr   get_appr   requestsettings)selfpathr'   r   appr!   r   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_url-      
z,MicrosoftGraphOAuth2Adapter.access_token_urlc                 C   r,   )Nz/oauth2/v2.0/authorizer-   r.   r   r   r   authorize_url1   r0   z)MicrosoftGraphOAuth2Adapter.authorize_urlc                 C   s,   t  jtj| jd}|jdd}| dS )Nr   	graph_urlzhttps://graph.microsoft.comz/v1.0/me)r   r%   r   r&   r$   r'   r   )r(   r*   r2   r   r   r   profile_url5   s   
z'MicrosoftGraphOAuth2Adapter.profile_url)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   r3   profile_url_paramsr   get_providersociallogin_from_response)r(   r&   r*   rD   kwargsrC   r   
extra_datar   r   r   complete_loginL   s   	z*MicrosoftGraphOAuth2Adapter.complete_loginN)__name__
__module____qualname__r$   r+   propertyr/   r1   r3   user_propertiesr   rF   rK   r   r   r   r   r       s    



r   )r   allauth.corer   allauth.socialaccountr   allauth.socialaccount.adapterr   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   r   r   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    
;