Nesta aula foi implementada a lógica para quando o usuário não estiver logado e tentar acessar a rota /novo a página redireciona para a rota /login com a próxima rota sendo a /novo após o usuário realizar o login.
from flask import Flask, render_template, request, redirect, session, flash
class Jogo:
def __init__(self, nome, categoria, console):
self.nome = nome
self.categoria = categoria
self.console = console
jogo1 = Jogo('Enduro', 'Corrida', 'Atari')
jogo2 = Jogo('River Raid', 'Aeronave', 'Atari')
jogo3 = Jogo('Pitfall', 'Aventura', 'Atari')
jogos = [jogo1, jogo2, jogo3]
app = Flask(__name__)
app.secret_key = 'alura'
@app.route('/')
def index():
titulo = 'Jogos'
return render_template('lista.html', titulo = titulo, jogos = jogos)
@app.route('/novo')
def novo():
if 'usuario_logado' not in session or session['usuario_logado'] == None:
return redirect('/login?proxima=novo')
titulo = 'Novo Jogo'
return render_template('novo.html', titulo = titulo)
@app.route('/criar', methods = ['POST', ])
def criar():
nome = request.form['nome']
categoria = request.form['categoria']
console = request.form['console']
jogo = Jogo(nome, categoria, console)
jogos.append(jogo)
return redirect('/')
@app.route('/login')
def login():
proxima = request.args.get('proxima')
return render_template('login.html', proxima = proxima)
@app.route('/autenticar', methods = ['POST', ])
def autenticar():
if 'tete' == request.form['senha']:
session['usuario_logado'] = request.form['usuario']
flash(session['usuario_logado'] + ' Logado com sucesso!')
proxima_pagina = request.form['proxima']
return redirect(f'/{proxima_pagina}')
else:
flash('Usuário não logado!')
return redirect('/login')
@app.route('/logout')
def logout():
session['usuario_logado'] = None
flash('Logout realizado com sucesso!')
return redirect('/')
app.run(debug=True)
Porém se tentar realizar o login direto pela rota /login a url vai quebrar pois a variável proxima_pagina vai ser None