o
    i                     @   s\   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 deZdS )z!Microsoft SSO Oauth Helper class.    )TYPE_CHECKINGClassVarListOptionalUnionN)DiscoveryDocumentOpenIDSSOBasec                       s   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dZdefddZddeded defddZ  ZS )MicrosoftSSOz,Class providing login using Microsoft OAuth.Z	microsoft)Zopenidz	User.Reademailscopezv1.0commontenantNF	client_idclient_secretredirect_uriallow_insecure_http	use_statec                    s(   t  j||||||d |p| j| _d S )N)r   r   r   r   r   r   )super__init__r   )selfr   r   r   r   r   r   r   	__class__ P/home/app/Keep/.python/lib/python3.10/site-packages/fastapi_sso/sso/microsoft.pyr      s   
zMicrosoftSSO.__init__returnc                    s,   d| j  dd| j  dd| j ddS )Nz"https://login.microsoftonline.com/z/oauth2/v2.0/authorizez/oauth2/v2.0/tokenzhttps://graph.microsoft.com/z/me)Zauthorization_endpointZtoken_endpointZuserinfo_endpoint)r   version)r   r   r   r   get_discovery_document)   s
   z#MicrosoftSSO.get_discovery_documentresponsesessionzhttpx.AsyncClientc              	      s6   t |d|d| j|d|d|ddS )NmailZdisplayNameidZ	givenNameZsurname)r   Zdisplay_nameproviderr!   Z
first_name	last_name)r   getr"   )r   r   r   r   r   r   openid_from_response0   s   z!MicrosoftSSO.openid_from_response)NFFNN)N)__name__
__module____qualname____doc__r"   r   r   __annotations__r   r   strr   r   pydanticZ
AnyHttpUrlboolr   r   r   r   dictr   r%   __classcell__r   r   r   r   r
      s8   
 
$r
   )r)   typingr   r   r   r   r   r,   Zfastapi_sso.sso.baser   r   r	   Zhttpxr
   r   r   r   r   <module>   s    