", unsafe_allow_html=True)
st.markdown("
⚙️ Configuração Inicial do Sistema
", unsafe_allow_html=True)
st.markdown("
Nenhum usuário administrador encontrado no banco de dados. Crie o Administrador Principal para continuar.
", unsafe_allow_html=True)
st.markdown("
", unsafe_allow_html=True)
col_boot1, col_boot2, col_boot3 = st.columns([1, 1.3, 1])
with col_boot2:
with st.form("bootstrap_form"):
admin_user = st.text_input("Usuário Administrador:", placeholder="Ex: admin")
admin_pass = st.text_input("Senha do Administrador:", type="password", placeholder="Digite uma senha robusta")
admin_pass_confirm = st.text_input("Confirme a Senha:", type="password", placeholder="Confirme a senha")
submit_bootstrap = st.form_submit_button("Criar Administrador Principal")
if submit_bootstrap:
if not admin_user.strip():
st.error("O nome de usuário não pode estar em branco.")
elif len(admin_pass) < 6:
st.error("A senha deve conter pelo menos 6 caracteres.")
elif admin_pass != admin_pass_confirm:
st.error("As senhas informadas não coincidem.")
else:
success = db.create_user(admin_user, admin_pass, role='admin')
if success:
st.success("Administrador Principal cadastrado com sucesso! Recarregando...")
time.sleep(1.5)
st.rerun()
else:
st.error("Erro ao cadastrar. O usuário já existe ou ocorreu um erro de persistência.")
st.stop()
# Scenario 2: Unauthenticated User (Login Gate)
if not st.session_state['logged_in']:
col_login1, col_login2, col_login3 = st.columns([1, 1.2, 1])
with col_login2:
st.markdown("", unsafe_allow_html=True)
st.markdown("
⚡ NetBackup Log Insights
", unsafe_allow_html=True)
st.markdown("
Faça login para gerenciar as rotinas de backup e mitigações
", unsafe_allow_html=True)
st.markdown("
", unsafe_allow_html=True)
with st.form("login_form"):
login_user = st.text_input("Usuário:", placeholder="Nome do usuário")
login_pass = st.text_input("Senha:", type="password", placeholder="Senha de acesso")
submit_login = st.form_submit_button("Entrar")
if submit_login:
user_record = db.get_user(login_user)
if user_record and db.verify_password(user_record['password_hash'], login_pass):
st.session_state['logged_in'] = True
st.session_state['username'] = user_record['username']
st.session_state['role'] = user_record['role']
st.toast(f"Bem-vindo, {user_record['username']}!", icon="👋")
time.sleep(0.5)
st.rerun()
else:
st.error("Usuário ou senha inválidos.")
st.stop()
# --- APP LAYOUT (Authenticated Scope) ---
# Sidebar Profile Header
st.sidebar.markdown(f"""