
    .h                        d dl Z d dl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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lmZ d dlmZmZ  G d de
e                   Z G d de	          Ze G d d                      ZdS )    N)	dataclass)Any)uuid4)	BaseModel	RootModelValidationError)Request)Response)stringify_pydantic_error)PydanticJSONResponse) OAuthAuthorizationServerProviderRegistrationErrorRegistrationErrorCode)ClientRegistrationOptions)OAuthClientInformationFullOAuthClientMetadatac                       e Zd ZU eed<   dS )RegistrationRequestrootN)__name__
__module____qualname__r   __annotations__     ^/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/mcp/server/auth/handlers/register.pyr   r      s           r   r   c                   *    e Zd ZU eed<   edz  ed<   dS )RegistrationErrorResponseerrorNerror_description)r   r   r   r   r   strr   r   r   r   r      s.             Tz!!!!!r   r   c                   F    e Zd ZU eeeef         ed<   eed<   dedefdZ	dS )RegistrationHandlerprovideroptionsrequestreturnc           
        K   	 |                                  d {V }t          j        |          }nD# t          $ r7}t	          t          dt          |                    d          cY d }~S d }~ww xY wt          t                                }d }|j	        dk    rt          j        d          }|j        1| j        j        %d                    | j        j                  |_        n|j        | j        j        t#          |j                                                  }t#          | j        j                  }|                    |          s9t	          t          ddd	                    ||z
                       d          S t#          |j                  d
dhk    r t	          t          dd          d          S t+          t-          j                              }	| j        j        |	| j        j        z   nd }
t1          d!i d|d|	d|d|
d|j        d|j	        d|j        d|j        d|j        d|j        d|j        d|j        d|j        d|j        d|j         d|j!        d|j"        d|j#        d|j$        }	 | j%        &                    |           d {V  t	          |d           S # tN          $ r4}t	          t          |j(        |j)                  d          cY d }~S d }~ww xY w)"Ninvalid_client_metadata)r   r    i  )contentstatus_codenone     z Requested scopes are not valid: z, authorization_coderefresh_tokenz8grant_types must be authorization_code and refresh_token	client_idclient_id_issued_atclient_secretclient_secret_expires_atredirect_uristoken_endpoint_auth_methodgrant_typesresponse_typesclient_name
client_urilogo_uriscopecontactstos_uri
policy_urijwks_urijwkssoftware_idsoftware_version   r   )*jsonr   model_validater   r   r   r   r!   r   r6   secrets	token_hexr<   r%   default_scopesjoinvalid_scopessetsplitissubsetr7   inttimeclient_secret_expiry_secondsr   r5   r8   r9   r:   r;   r=   r>   r?   r@   rA   rB   rC   r$   register_clientr   r   r    )selfr&   bodyclient_metadatavalidation_errorr1   r3   requested_scopesrK   r2   r4   client_infoes                r   handlezRegistrationHandler.handle&   s=     	 ''''''D1@FFOO  	 	 	'13&>?O&P&P            	 LL	5??#-b11M (T\-H-T$'HHT\-H$I$IO!!!-$,2K2W"?#8#>#>#@#@AAt|899L#,,\:: +57+H99%5%DEE+H +H  
 !$    *++0Do/VVV'13'(  
      "$)++.. |8D  $,"KKK 	! 1 
 
 
i
 3 3
 (-
 &>%=	
 *77
 (7'Q'Q
 (33
 +99
 (33
 '11
 %--
 "''
 %--
 $++
  '11!
" %--#
$ !%%%
& (33'
( -==)
,	-//<<<<<<<<< (MMMM  	 	 	'1'Q5H    	        	s8   .3 
A4,A/)A4/A40K 
L )K;5L ;L N)
r   r   r   r   r   r   r   r	   r
   rZ   r   r   r   r#   r#   !   sc         .sC}====&&&&[G [ [ [ [ [ [ [r   r#   ) rG   rP   dataclassesr   typingr   uuidr   pydanticr   r   r   starlette.requestsr	   starlette.responsesr
   mcp.server.auth.errorsr   mcp.server.auth.json_responser   mcp.server.auth.providerr   r   r   mcp.server.auth.settingsr   mcp.shared.authr   r   r   r   r#   r   r   r   <module>rf      s     ! ! ! ! ! !             : : : : : : : : : : & & & & & & ( ( ( ( ( ( ; ; ; ; ; ; > > > > > >         
 ? > > > > > K K K K K K K K    )$78   " " " " "	 " " "
 _ _ _ _ _ _ _ _ _ _r   