File size: 5,482 Bytes
97b7267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import streamlit as st
from utils import initialize_firebase, load_css
from auth import (
    verify_firebase_token,
    register_user_to_mongo,
    get_user_profile,
)

# ==== Cấu hình trang và tải CSS ====
st.set_page_config(page_title="Đăng nhập - Stock Insights", page_icon="🔮", layout="centered")

auth_fb = initialize_firebase()

# Khởi tạo page mặc định
if "page" not in st.session_state:
    st.session_state.page = "report"

# ==== Giao diện Đăng nhập / Đăng ký ====
if "uid" not in st.session_state:
    # Set layout về centered cho trang đăng nhập
    
    st.markdown("<h1>Stock Insights 🔮</h1>", unsafe_allow_html=True)
    st.markdown("<p class='auth-subheader'>Chào mừng! Vui lòng đăng nhập hoặc đăng ký.</p>", unsafe_allow_html=True)
    load_css()

    login_tab, register_tab = st.tabs(["✨ Đăng nhập", "📝 Đăng ký"])

    # --- FORM ĐĂNG NHẬP ---
    with login_tab:
        email_login = st.text_input("Email", key="email_login", placeholder="you@example.com")
        password_login = st.text_input("Mật khẩu", type="password", key="password_login", placeholder="••••••••")
        st.markdown("<div style='margin-top: 1rem;'></div>", unsafe_allow_html=True)
        if st.button("Đăng nhập", key="login_btn", use_container_width=True):
            if not email_login or not password_login:
                st.warning("Vui lòng nhập đầy đủ email và mật khẩu.")
            else:
                try:
                    user = auth_fb.sign_in_with_email_and_password(email_login, password_login)
                    id_token = user["idToken"]
                    info = verify_firebase_token(id_token)
                    if info:
                        st.session_state["uid"] = info["uid"]
                        st.session_state["user_email"] = info.get("email", "")
                        profile = get_user_profile(info["uid"])
                        st.session_state["user_name"] = profile.get("user_name", "") if profile else ""
                        st.rerun()
                except Exception as e:
                    st.error("Sai email hoặc mật khẩu!")

    # --- FORM ĐĂNG KÝ ---
    with register_tab:
        with st.form("registration_form", clear_on_submit=True):
            user_name_reg = st.text_input("Tên người dùng", placeholder="Nguyen Van A")
            email_reg = st.text_input("Email", placeholder="you@example.com")
            password_reg = st.text_input("Mật khẩu", type="password", placeholder="••••••••")
            password_confirm_reg = st.text_input("Nhập lại mật khẩu", type="password", placeholder="••••••••")
            st.markdown("<div style='margin-top: 1rem;'></div>", unsafe_allow_html=True)
            submitted = st.form_submit_button("Đăng ký", use_container_width=True)

            if submitted:
                # ... (Giữ nguyên logic đăng ký) ...
                st.success("Đăng ký thành công! Giờ bạn có thể đăng nhập.")

# ==== Giao diện chính sau khi đăng nhập ====
else:
    # --- Thanh điều hướng tùy chỉnh ---
    st.markdown('<div class="nav-container">', unsafe_allow_html=True)
    
    # Sử dụng st.columns để đặt các nút cạnh nhau
    col1, col2, col3 = st.columns(3)
    
    with col1:
        is_active = st.session_state.page == "report"
        if st.button("📊 Báo cáo", use_container_width=True, key="nav_report"):
            st.session_state.page = "report"
            # Reset trạng thái báo cáo cũ
            st.session_state.pop("selected_report", None)
            st.session_state["show_form"] = True
        if is_active:
            st.markdown('<style>button[data-testid="stButton-nav_report"] {border-color: #30cfd0; color: #ffffff; box-shadow: 0 0 15px rgba(48, 207, 208, 0.4);}</style>', unsafe_allow_html=True)

    with col2:
        is_active = st.session_state.page == "history"
        st.button("📜 Lịch sử", use_container_width=True, on_click=lambda: st.session_state.update(page="history"), 
                  type="secondary" if not is_active else "primary",
                  key="nav_history")
        if is_active:
            st.markdown('<style>button[data-testid="stButton-nav_history"] {border-color: #30cfd0; color: #ffffff; box-shadow: 0 0 15px rgba(48, 207, 208, 0.4);}</style>', unsafe_allow_html=True)

    with col3:
        is_active = st.session_state.page == "account"
        st.button("⚙️ Tài khoản", use_container_width=True, on_click=lambda: st.session_state.update(page="account"), 
                  type="secondary" if not is_active else "primary",
                  key="nav_account")
        if is_active:
            st.markdown('<style>button[data-testid="stButton-nav_account"] {border-color: #30cfd0; color: #ffffff; box-shadow: 0 0 15px rgba(48, 207, 208, 0.4);}</style>', unsafe_allow_html=True)

    st.markdown('</div>', unsafe_allow_html=True)

    # --- Hiển thị nội dung trang tương ứng ---
    if st.session_state.page == "report":
        from pages.page_report import main as report_main
        report_main()
    elif st.session_state.page == "history":
        from pages.page_history import main as history_main
        history_main()
    elif st.session_state.page == "account":
        from pages.page_account import main as account_main
        account_main()