Login funcionando
This commit is contained in:
75
app.py
75
app.py
@@ -37,7 +37,7 @@ def login_required(f):
|
||||
def decorated_function(*args, **kwargs):
|
||||
if 'user_id' not in session:
|
||||
flash('Por favor, faça login para acessar esta página.', 'warning')
|
||||
return redirect(url_for('login', next=request.url))
|
||||
return redirect(url_for('login'))
|
||||
return f(*args, **kwargs)
|
||||
return decorated_function
|
||||
|
||||
@@ -59,16 +59,35 @@ def login():
|
||||
password = request.form.get("password")
|
||||
otp = request.form.get("otp")
|
||||
|
||||
# Log dos dados recebidos (sem a senha)
|
||||
print(f"Tentativa de login - Username: {username}, OTP fornecido: {'Sim' if otp else 'Não'}")
|
||||
|
||||
user = db_session.query(Usuario).filter_by(username=username).first()
|
||||
|
||||
if user and user.check_password(password) and user.verify_otp(otp):
|
||||
session['user_id'] = user.id # Usando a sessão do Flask
|
||||
session['is_admin'] = user.is_admin
|
||||
next_page = request.args.get('next')
|
||||
flash('Login realizado com sucesso!', 'success')
|
||||
return redirect(next_page or url_for('home'))
|
||||
else:
|
||||
flash('Credenciais inválidas', 'danger')
|
||||
if not user:
|
||||
print(f"Erro: Usuário '{username}' não encontrado")
|
||||
flash('Usuário não encontrado', 'danger')
|
||||
return render_template('login.html')
|
||||
|
||||
if not user.check_password(password):
|
||||
print(f"Erro: Senha incorreta para o usuário '{username}'")
|
||||
flash('Senha incorreta', 'danger')
|
||||
return render_template('login.html')
|
||||
|
||||
if not user.verify_otp(otp):
|
||||
print(f"Erro: Código OTP inválido para o usuário '{username}'")
|
||||
print(f"OTP fornecido: {otp}")
|
||||
print(f"OTP secret do usuário: {user.otp_secret}")
|
||||
flash('Código OTP inválido', 'danger')
|
||||
return render_template('login.html')
|
||||
|
||||
# Se chegou aqui, login bem sucedido
|
||||
print(f"Login bem sucedido para o usuário '{username}'")
|
||||
session['user_id'] = user.id
|
||||
session['is_admin'] = user.is_admin
|
||||
next_page = request.args.get('next')
|
||||
flash('Login realizado com sucesso!', 'success')
|
||||
return redirect(next_page or url_for('home'))
|
||||
|
||||
return render_template('login.html')
|
||||
|
||||
@@ -84,14 +103,36 @@ def logout():
|
||||
@login_required
|
||||
def home():
|
||||
"""Página inicial do sistema"""
|
||||
links = []
|
||||
for rule in app.url_map.iter_rules():
|
||||
if "GET" in rule.methods and has_no_empty_params(rule):
|
||||
url = url_for(rule.endpoint, **(rule.defaults or {}))
|
||||
endpoint_name = 'Início' if rule.endpoint == 'home' else rule.endpoint
|
||||
links.append((url, endpoint_name))
|
||||
|
||||
return render_template('home.html', links=links)
|
||||
try:
|
||||
links = []
|
||||
# Filtrar apenas as rotas que queremos mostrar
|
||||
allowed_endpoints = {
|
||||
'listar_militantes': 'Militantes',
|
||||
'listar_cotas': 'Cotas',
|
||||
'listar_pagamentos': 'Pagamentos',
|
||||
'listar_materiais': 'Materiais',
|
||||
'listar_vendas_jornal': 'Vendas de Jornal',
|
||||
'listar_assinaturas': 'Assinaturas'
|
||||
}
|
||||
|
||||
for rule in app.url_map.iter_rules():
|
||||
if (rule.endpoint in allowed_endpoints and
|
||||
"GET" in rule.methods and
|
||||
len(rule.arguments) == 0): # Apenas rotas sem parâmetros
|
||||
url = url_for(rule.endpoint)
|
||||
nome = allowed_endpoints[rule.endpoint]
|
||||
links.append((url, nome))
|
||||
|
||||
# Ordenar links pelo nome
|
||||
links.sort(key=lambda x: x[1])
|
||||
|
||||
return render_template('home.html', links=links)
|
||||
except Exception as e:
|
||||
print(f"Erro na página inicial: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
flash('Erro ao carregar a página inicial', 'error')
|
||||
return render_template('home.html', links=[])
|
||||
|
||||
# Rota para criar um novo militante
|
||||
@app.route("/militantes/novo", methods=["GET", "POST"])
|
||||
|
||||
Reference in New Issue
Block a user