boa tarde,
criei uma rota adm, onde possui um login somente para administradores, para que somente eles poderem entrar na pagina admin(com os dados dos inscritos) ta funcionando ok, o problema e que se algum hacker escrever nomesite/admin ele tem acesso. existe uma forma de eu fazer com que somente as pessoas do adm entrem em admin? não consegui fazer isso direto no admin por isso criei a rota adm, mas pela logica nao adianta nada, estou a muitos dias tentando fazer isso mas não to conseguindo
segue o views
rom flask import render_template, request, redirect, session, flash, url_for from painel import app, db from models import Usuarios from flask_bcrypt import check_password_hash, generate_password_hash
@app.route('/') def index(): return render_template('index.html')
@app.route('/cadastro') def cadastro(): return render_template('cadastro.html')
@app.route('/cadastrar', methods = ["POST"], ) def cadastrar(): nome = request.form ['nome'] sobrenome = request.form ['sobrenome'] cpf = request.form ['cpf'] telefone = request.form ['telefone'] email = request.form ['email'] senha = request.form ['senha']
usuario = Usuarios.query.filter_by(cpf=cpf).first()
senha = generate_password_hash('senha').decode('utf-8')
if usuario:
flash('Usuario já existente')
return redirect(url_for('login'))
novo_usuario = Usuarios (nome=nome, sobrenome=sobrenome, cpf=cpf, telefone=telefone, email=email, senha=senha)
db.session.add(novo_usuario)
db.session.commit()
session['usuario_logado'] = True
return redirect(url_for('pagamento'))
@app.route('/pagamento') def pagamento(): return render_template('pagamento.html')
@app.route('/admin') def admin(): usuarios = Usuarios.query.order_by(Usuarios.id) return render_template('admin.html', usuarios = usuarios) #ESSA E A ROTA QUE EU QUERO PROTEGER
@app.route('/editar/int:id') def editar(id): if 'usuario_logado' not in session or session['usuario_logado'] == None: return redirect(url_for('login'))
usuario = Usuarios.query.filter_by(id=id).first()
return render_template('editar.html', usuario=usuario)
@app.route('/atualizar', methods = ['POST', ]) def atualizar(): usuario = Usuarios.query.filter_by(id=request.form['id']).first()
usuario.nome = request.form ['nome']
usuario.sobrenome = request.form ['sobrenome']
usuario.cpf = request.form ['cpf']
usuario.telefone = request.form ['telefone']
usuario.email = request.form ['email']
usuario.senha = request.form ['senha']
db.session.add(usuario)
db.session.commit()
return redirect(url_for('admin'))
@app.route('/deletar/int:id') def deletar(id): if 'usuario_logado' not in session or session['usuario_logado'] == None: return redirect(url_for('login'))
Usuarios.query.filter_by(id=id).delete()
db.session.commit()
flash('usuario excluido com sucesso')
return redirect(url_for('admin'))
@app.route('/login') def login(): return render_template('login.html')
@app.route('/autenticar', methods = ["POST"], ) def autenticar(): usuario = request.form['usuario'] senha = request.form['senha']
usuario = Usuarios.query.filter_by(email=request.form['usuario']).first()
if not usuario or not check_password_hash(usuario.senha, senha):
session['usuario_logado'] = usuario.email
flash(usuario.nome + ' logado com sucesso!')
return redirect(url_for('dashboard'))
else:
flash('Usuário não logado.')
return redirect(url_for('login'))
@app.route('/dashboard') def dashboard(): if 'usuario_logado' not in session or session['usuario_logado'] == None: return redirect(url_for('login')) return render_template('dashboard.html')
@app.route('/logout') def logout(): session['usuario_logado'] = None flash ('Logout efetuado com sucesso') return redirect(url_for('index'))
@app.route('/adm') #aqui tem um login em html so para administradores def adm(): return render_template('adm.html')
@app.route('/acao', methods = ["POST"], ) def acao(): if 'paty@gmail.com' == request.form['usuario'] or 'caio@gmail.com' == request.form['usuario']: #aqui e para pegar so os dois usuarios if 'paty' == request.form['senha'] or 'caio' == request.form['senha']: return redirect(url_for('admin')) else: return redirect(url_for('login'))