# modules/ui/ui.py import streamlit as st import logging # Configurar logger logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Importaciones locales from session_state import initialize_session_state, logout from translations import get_translations from ..auth.auth import authenticate_user from ..admin.admin_ui import admin_page # Intento de importación con logger try: from .user_page import user_page except ImportError as e: logger.error(f"No se pudo importar user_page: {str(e)}") def user_page(lang_code, t): st.error("La página de usuario no está disponible.") ############################################################# def main(): # Inicializar session_state si no existe if 'page' not in st.session_state: st.session_state.page = 'login' logger.info(f"Entrando en main() - Página actual: {st.session_state.page}") # Configurar inglés como idioma por defecto if 'lang_code' not in st.session_state: st.session_state.lang_code = 'en' lang_code = st.session_state.get('lang_code', 'en') t = get_translations(lang_code) if st.session_state.get('logged_out', False): st.session_state.logged_out = False st.session_state.page = 'login' st.rerun() if not st.session_state.get('logged_in', False): logger.info("Usuario no ha iniciado sesión. Mostrando página de login") login_page(lang_code, t) elif st.session_state.page == 'user': if st.session_state.role == 'Administrador': logger.info("Redirigiendo a la página de administrador") st.session_state.page = 'Admin' st.rerun() else: logger.info("Renderizando página de usuario") user_page(lang_code, t) elif st.session_state.page == "Admin": logger.info("Renderizando página de administrador") admin_page() else: logger.error(f"Página no reconocida: {st.session_state.page}") st.error(t.get('unrecognized_page', 'Página no reconocida')) st.session_state.page = 'user' st.rerun() ############################################################# def login_page(lang_code, t): # CSS personalizado st.markdown(""" """, unsafe_allow_html=True) # Container principal con logos st.markdown("""
AIdeaText Logo NVIDIA Logo
""", unsafe_allow_html=True) # Título y subtítulo st.markdown("""

AIdeaText

Cognitive Development Platform

""", unsafe_allow_html=True) # Formulario de login with st.form("login_form", clear_on_submit=False): username = st.text_input("Email", placeholder="your.email@institution.edu") password = st.text_input("Password", type="password", placeholder="Enter your password") submit_button = st.form_submit_button("Sign In") if submit_button: success, role = authenticate_user(username, password) if success: st.session_state.logged_in = True st.session_state.username = username st.session_state.role = role if role == 'Administrador': st.session_state.page = 'Admin' else: st.session_state.page = 'user' logger.info(f"Usuario autenticado: {username}, Rol: {role}") st.rerun() else: st.error("❌ Invalid credentials. Please try again.") # Footer NVIDIA st.markdown(""" """, unsafe_allow_html=True) ############################################################# __all__ = ['main', 'login_page', 'initialize_session_state'] if __name__ == "__main__": main()