
    AHj                     b    d Z ddlmZmZmZmZmZ ddlZddlm	Z	m
Z
mZ erddlZ G d de      Zy)z!Microsoft SSO Oauth Helper class.    )TYPE_CHECKINGClassVarListOptionalUnionN)DiscoveryDocumentOpenIDSSOBasec                        e Zd ZU dZdZg dZeed<   dZdZ	e
ed<   	 	 	 	 	 dde
d	e
d
eeej                  e
f      dededeee
      dee
   f fdZdefdZddeded   defdZ xZS )MicrosoftSSOz,Class providing login using Microsoft OAuth.	microsoft)openidz	User.Reademailscopezv1.0commontenant	client_idclient_secretredirect_uriallow_insecure_http	use_statec                 Z    t         |   ||||||       |xs | j                  | _        y )N)r   r   r   r   r   r   )super__init__r   )	selfr   r   r   r   r   r   r   	__class__s	           Q/root/tools/cai/cai_env/lib/python3.12/site-packages/fastapi_sso/sso/microsoft.pyr   zMicrosoftSSO.__init__   s;     	'% 3 	 	
 +    returnc                 j   K   d| j                    dd| j                    dd| j                   ddS w)Nz"https://login.microsoftonline.com/z/oauth2/v2.0/authorizez/oauth2/v2.0/tokenzhttps://graph.microsoft.com/z/me)authorization_endpointtoken_endpointuserinfo_endpoint)r   version)r   s    r   get_discovery_documentz#MicrosoftSSO.get_discovery_document)   sB     (J4;;-Wm&n B4;;-Oab#?~S!Q
 	
s   13responsesessionzhttpx.AsyncClientc           
         K   t        |j                  d      |j                  d      | j                  |j                  d      |j                  d      |j                  d            S w)NmaildisplayNameid	givenNamesurname)r   display_nameproviderr+   
first_name	last_name)r	   getr/   )r   r&   r'   s      r   openid_from_responsez!MicrosoftSSO.openid_from_response0   sV     ,,v&!m4]]||D!||K0ll9-
 	
s   A'A))NFFNN)N)__name__
__module____qualname____doc__r/   r   r   __annotations__r$   r   strr   r   pydantic
AnyHttpUrlboolr   r   r   r%   dictr	   r3   __classcell__)r   s   @r   r   r      s    6H6E86GFC CG$)%) $,, , uX%8%8#%=>?	,
 ", , S	", ,(
.? 

4 
(K^B_ 
kq 
r   r   )r7   typingr   r   r   r   r   r:   fastapi_sso.sso.baser   r	   r
   httpxr    r   r   <module>rC      s)    ' A A  C C+
7 +
r   