
    7i                     R    S SK rS SKrS SKJrJrJr  S SKJr  S r	S r
S rS rS rg)	    N)	urlencodeurlparseparse_qsjwtc                  V    [         R                  S   n U S   U S   U S   U S   U S   S.$ )Nauth0domain	client_idclient_secretredirect_uriaudience)r
   r   r   r   r   )stsecrets)cfgs    iC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\Proyectos\ideasfrescas-dashboards-portal\auth.pyget_auth0_configr      s@    
**W
Ch-%_-N+
O     c                  `    [        5       n SU S   U S   SU S   S.nSU S    S	[        U5       3$ )
Ncoder   r   zopenid profile emailr   )response_typer   r   scoper   https://r
   z/authorize?)r   r   )r   paramss     r   build_login_urlr      sM    

C%N+'
OF c(m_K	&0A/BCCr   c            	      n   [        5       n [        R                  R                  S5      nU(       d  gSU S    S3nSU S   U S   UU S	   S
.n[        R
                  " X#S9nUR                  S:w  a7  [        R                  " S5        [        R                  " UR                  5        gUR                  5       nUR                  S5      nUR                  S5      n SSKJn  UR                  " U5      n	U	R                  S5      U	R                  S5      U	R                  S5      UUU	R                  S/ 5      S.nU[        R                   S'   [        R                  R#                  5         U$ ! [         a?  n
[        R                  " S5        [        R                  " [        U
5      5         Sn
A
gSn
A
ff = f)uB   Lee el parámetro ?code= de la URL y obtiene el token desde Auth0.r   Nr   r
   z/oauth/tokenauthorization_coder   r   r   )
grant_typer   r   r   r   )data   u*   Error intercambiando el código por token.id_tokenaccess_tokenr   r   zError decodificando el token.emailnamesubz'dev-ajifaa3ovgdvp4ty.us.auth0.com/roles)r#   r$   r%   raw_id_tokenr"   rolesuser)r   r   query_paramsgetrequestspoststatus_codeerrorwritetextjsonjoser   get_unverified_claims	Exceptionstrsession_stateclear)r   r   	token_urlr   resptokensr!   r"   r   decodede	user_infos               r   handle_callbackr>      sx   

C ??v&D3x=/6I*%_-N+D ==.D3
=>
YY[Fzz*%H::n-L++H5 W%F#{{5! $FKI  )BV OO)  
01
Qs   E+ +
F455F//F4c                  @    [         R                  R                  S5      $ )z3Devuelve el usuario desde session_state, si existe.r(   )r   r6   r*    r   r   get_current_userrA   S   s    ''r   c                      [        5       n [        R                  " S5      (       aX  [        R                  R	                  SS 5        SU S    S3[        U S   U S   S.5      -   n[        R                  " S	U S
3SS9  g g )Nu   Cerrar sesiónr(   r   r
   z/v2/logout?r   r   )r   returnTou"   [Click aquí para cerrar sesión]()T)unsafe_allow_html)r   r   buttonr6   popr   markdown)r   
logout_urls     r   logout_buttonrJ   W   s    

C	yy!""
VT*s8}o[1c+&6CDWXYZ 	 	8AFZ^_ #r   )	streamlitr   r+   urllib.parser   r   r   r2   r   r   r   r>   rA   rJ   r@   r   r   <module>rM      s0      6 6 	D5p(`r   