
    f                         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 Z G d d	e
      Z ej                  e      Z ej                  e      Zy)
    N)context)app_settings)get_adapter)OAuth2Error)OAuth2AdapterOAuth2CallbackViewOAuth2LoginViewc                 @   	 | j                         }d|vrCd}|j                  di       j                  d      }|rdj                  ||f      }t        |      |S # t         j                  j                  $ r% t        dj	                  | j
                              w xY w)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_messages       j/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/microsoft/views.py_check_errorsr      s    
}} 4<"&((7B"7";";I"F" II}6M&NOM-((K <<'' 
7>>x}}M
 	

s   A ABc                   v    e Zd ZdZd Zed        Zed        Zed        ZdZ	ddj                  e	      iZd	 Zy
)MicrosoftGraphOAuth2Adapter	microsoftc                    t         j                  j                  | j                  i       }|j                  d|j                  dd            }t	               j                  t        j                  | j                        }|j                  j                  d|      }|j                  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$   s         r   _build_tenant_urlz-MicrosoftGraphOAuth2Adapter._build_tenant_url#   s    ))--d.>.>ChXx(HIm##GOOd>N>N#O!!(F3LL$$[2UV	AfXdV,,    c                 $    | j                  d      S )Nz/oauth2/v2.0/tokenr.   r+   s    r   access_token_urlz,MicrosoftGraphOAuth2Adapter.access_token_url-   s    %%&:;;r/   c                 $    | j                  d      S )Nz/oauth2/v2.0/authorizer1   r2   s    r   authorize_urlz)MicrosoftGraphOAuth2Adapter.authorize_url1   s    %%&>??r/   c                     t               j                  t        j                  | j                        }|j
                  j                  dd      }| dS )Nr"   	graph_urlzhttps://graph.microsoft.comz/v1.0/me)r   r(   r   r)   r'   r*   r   )r+   r-   r7   s      r   profile_urlz'MicrosoftGraphOAuth2Adapter.profile_url5   sG    m##GOOd>N>N#OLL$$[2OP	H%%r/   )businessPhonesdisplayName	givenNamer   jobTitlemailmobilePhoneofficeLocationpreferredLanguagesurnameuserPrincipalNamemailNicknamecompanyNamez$select,c                    ddj                  |j                        i}t               j                         j	                  | j
                  | j                  |      }t        |      }| j                         j                  ||      S )NAuthorizationz
Bearer {0})paramsheaders)
r   tokenr   get_requests_sessionr   r8   profile_url_paramsr   get_providersociallogin_from_response)r+   r)   r-   rJ   kwargsrI   r   
extra_datas           r   complete_loginz*MicrosoftGraphOAuth2Adapter.complete_loginL   sz    "L$7$7$DEM!!#S  ..   	 #8,
  "<<WjQQr/   N)__name__
__module____qualname__r'   r.   propertyr3   r5   r8   user_propertiesr   rL   rQ    r/   r   r   r       sm    K- < < @ @ & &
O $SXXo%>?Rr/   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_callbackrW   r/   r   <module>r`      s[       . 5 E $8R- 8Rv ,++,GH1$112MNr/   