39 lines
1.8 KiB
Python
39 lines
1.8 KiB
Python
import streamlit as st
|
|
from api_client import APIClient
|
|
|
|
def render_profile_view(api_client: APIClient):
|
|
st.title("👤 Meu Perfil & Segurança")
|
|
|
|
user_info = st.session_state.get('user', {})
|
|
|
|
c1, c2 = st.columns([1, 1])
|
|
|
|
with c1:
|
|
with st.container(border=True):
|
|
st.subheader("📋 Dados da Conta")
|
|
st.write(f"**Nome:** {user_info.get('nome', 'N/A')}")
|
|
st.write(f"**E-mail:** {user_info.get('email', 'N/A')}")
|
|
st.write(f"**Perfil:** `{user_info.get('role', 'user').upper()}`")
|
|
st.write(f"**Status da Conta:** {'🟢 Ativo' if user_info.get('ativo') else '🔴 Inativo'}")
|
|
|
|
with c2:
|
|
with st.container(border=True):
|
|
st.subheader("🔒 Alterar Minha Senha")
|
|
old_pass = st.text_input("Senha Atual", type="password", key="pwd_old")
|
|
new_pass = st.text_input("Nova Senha (min 6 caracteres)", type="password", key="pwd_new")
|
|
confirm_pass = st.text_input("Confirmar Nova Senha", type="password", key="pwd_conf")
|
|
|
|
if st.button("🔑 Atualizar Senha", type="primary", use_container_width=True):
|
|
if not old_pass or not new_pass or not confirm_pass:
|
|
st.error("Preencha todos os campos de senha.")
|
|
elif new_pass != confirm_pass:
|
|
st.error("A nova senha e a confirmação não coincidem.")
|
|
elif len(new_pass) < 6:
|
|
st.error("A nova senha deve ter no mínimo 6 caracteres.")
|
|
else:
|
|
success, msg = api_client.change_password(old_pass, new_pass)
|
|
if success:
|
|
st.success("Senha alterada com sucesso! Faça login com sua nova senha.")
|
|
else:
|
|
st.error(msg)
|