1
resposta

Faça como eu fiz: autorização de usuários

from flask import Flask, render_template, request, redirect, session, flash, url_for


class Jogo:
    def __init__(self, nome, categoria, console):
        self.nome = nome
        self.categoria = categoria
        self.console = console


class Usuario:
    def __init__(self, nome, nick, senha):
        self.nome = nome
        self.nick = nick
        self.senha = senha


usuario1 = Usuario("Bruno Divino", "BD", "alohomora")
usuario2 = Usuario("Henrique Valente", "HV", "hipopotamo")
usuario3 = Usuario("Kratos", "Kratos", "zeus")
usuarios = {usuario1.nick: usuario1, usuario2.nick: usuario2, usuario3.nick: usuario3}


app = Flask(__name__)
app.secret_key = "Alura"

jogo1 = Jogo("Tetris", "Puzzle", "Atari")
jogo2 = Jogo("God of War", "Hack n Slash", "PS2")
jogo3 = Jogo("Mortal Kombat", "Luta", "PS2")
lista = [jogo1, jogo2, jogo3]


@app.route("/")
def index():
    return render_template("lista.html", titulo="Jogos", jogos=lista)


@app.route("/inicio")
def ola():
    return render_template("lista.html", titulo="Jogos", jogos=lista)


@app.route("/novo")
def novo():
    if "usuario_logado" not in session or (session["usuario_logado"] is None):
        return redirect(url_for("login", proxima=url_for("novo")))
    return render_template("novo.html", titulo="Novo Jogo")


@app.route("/criar", methods=["POST", ])
def criar():
    nome = request.form["nome"]
    categoria = request.form["categoria"]
    console = request.form["console"]
    jogo = Jogo(nome, categoria, console)
    lista.append(jogo)
    return redirect(url_for("index"))


@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 request.form["usuario"] in usuarios:
        usuario = usuarios[request.form['usuario']]
        if request.form['senha'] == usuario.senha:
            session['usuario_logado'] = usuario.nick
            flash(usuario.nick + ' logado com sucesso!')
            proxima_pagina = request.form['proxima']
            return redirect(proxima_pagina)
        else:
            flash("Senha incorreta")
            return redirect(url_for("login"))
    else:
        flash("Usuario não logado")
        return redirect(url_for("login"))


@app.route("/logout")
def logout():
    session["usuario_logado"] = None
    flash("Logout efetuado com sucesso!")
    return redirect(url_for("index"))


app.run(debug=True)
1 resposta

Olá, Henrique! Tudo bem?

Gostei bastante da sua resolução do desafio da atividade, parabéns!

É muito gratificando acompanhar a sua evolução, continue firme nos estudos e na prática.

Bons estudos, Henrique!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software