
    '[f                         d dl mZmZmZmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZ  G d d          Z G d deee	          Z G d	 d
eeee	          ZdS )    )gredirectrequestsession   )OAuth1SessionOAuth2Session)BaseApp
OAuthErrorOAuth1MixinOAuth2MixinOpenIDMixinc                   X    e Zd Zed             Zej        d             Zd Zd ZddZdS )FlaskAppMixinc                     d| j          }t          j        |          }|r|S | j        r|                                 }|| _        |S d S N_oauth_token_)namer   get_fetch_tokentoken)selfattrr   s      Z/var/www/piapp/venv/lib/python3.11/site-packages/authlib/integrations/flask_client/apps.pyr   zFlaskAppMixin.token
   s]    *ty**d 	L 	%%''EDJL	 	    c                 F    d| j          }t          t          ||           d S r   )r   setattrr   )r   r   r   s      r   r   zFlaskAppMixin.token   s)    *ty**4r   c                     | j         S N)r   )r   argskwargss      r   _get_requested_tokenz"FlaskAppMixin._get_requested_token   s
    zr   c                     |                     dd           }|r#| j                            t          ||           d S t	          d          )NstatezMissing state value)pop	frameworkset_state_datar   RuntimeError)r   r!   r$   s      r   save_authorize_dataz!FlaskAppMixin.save_authorize_data   sL    

7D)) 	6N))'5&AAAAA4555r   Nc                 f     | j         |fi |} | j        dd|i| t          |d                   S )zCreate a HTTP Redirect for Authorization Endpoint.

        :param redirect_uri: Callback or redirect URI for authorization.
        :param kwargs: Extra parameters to include.
        :return: A HTTP redirect response.
        redirect_uriurl )create_authorization_urlr)   r   )r   r+   r!   rvs       r   authorize_redirectz FlaskAppMixin.authorize_redirect$   sN     +T*<BB6BB  AAlAbAAA5	"""r   r   )	__name__
__module____qualname__propertyr   setterr"   r)   r0   r-   r   r   r   r   	   s|          X \    \   6 6 6	# 	# 	# 	# 	# 	#r   r   c                       e Zd ZeZd ZdS )FlaskOAuth1Appc                    t           j                            d          }|                    d          }|st	          d          | j                            t          |          }|st	          d          |d         |d<   |                    |           | j        	                    t          |            | j
        di |}|| _        |S )	HFetch access token in one step.

        :return: A token dict.
        T)flatoauth_tokenzMissing "oauth_token" parameter)descriptionz)Missing "request_token" in temporary datarequest_tokenr-   )r   r    to_dictr   r   r&   get_state_datar   updateclear_state_datafetch_access_tokenr   )r   r!   paramsr$   datar   s         r   authorize_access_tokenz%FlaskOAuth1App.authorize_access_token3   s    
 %%4%00

=)) 	L)JKKKK~,,We<< 	V)TUUUU"&"7f''777''11&11
r   N)r1   r2   r3   r   
client_clsrE   r-   r   r   r7   r7   0   s(        J    r   r7   c                       e Zd ZeZd ZdS )FlaskOAuth2Appc                 8   t           j        dk    rt           j                            d          }|r0t           j                            d          }t	          ||          t           j        d         t           j                            d          d}n2t           j        d         t           j                            d          d}|                    dd	          }| j                            t          |                    d                    }| j        
                    t          |                    d                     |                     ||          } | j        di ||}|| _        d
|v r'd|v r#|                     ||d         |          }||d<   |S )r9   GETerrorerror_description)rK   r<   coder$   )rM   r$   claims_optionsNid_tokennonce)rP   rN   userinfor-   )r   methodr    r   r   formr%   r&   r?   r   rA   _format_state_paramsrB   r   parse_id_token)	r   r!   rK   r<   rC   rN   
state_datar   rQ   s	            r   rE   z%FlaskOAuth2App.authorize_access_tokenL   s   
 >U""L$$W--E G%l../BCC u+FFFF  V, ))'22 FF  V, ))'22 F
  $4d;;^227FJJw<O<OPP
''G1D1DEEE**:v>>'';;&;F;;
7j#8#8**5
78K\j*kkH (E*r   N)r1   r2   r3   r	   rF   rE   r-   r   r   rH   rH   I   s(        J    r   rH   N)flaskr   r   r   r   requests_clientr   r	   base_clientr
   r   r   r   r   r   r7   rH   r-   r   r   <module>rZ      s   / / / / / / / / / / / / : : : : : : : :             $# $# $# $# $# $# $# $#N    ]K   2" " " " "]Kg " " " " "r   