from flask import Flask, render_template, request, redirect, session from flask_session import Session import utils import database import mail app = Flask(__name__); app.config["SESSION_PERMANENT"] = False app.config["SESSION_TYPE"] = "filesystem" Session(app) @app.route("/") def home(): return (render_template("home.html")); @app.route("/connected") def connected(): if (not session.get("email")): return (redirect("/login")) return (render_template("connected.html")); @app.route("/login") def login(): if (session.get("email")): return (redirect("/connected")) return (render_template("login.html")); @app.route('/login', methods=['POST']) def login_post(): email = request.form.get('email') password = request.form.get('password') if (not database.user_exist(email)): return (render_template("login.html", error="Email ou mot de passe faux")) if (not database.check_password(email, password)): return (render_template("login.html", error="Email ou mot de passe faux")) session["email"] = email return (redirect("/connected")) @app.route('/logout') def logout(): session.pop('email', None) return redirect("/login") @app.route("/signin") def signin(): if (session.get("email")): return (redirect("/connected")) return (render_template("signin.html")); @app.route('/signin', methods=['POST']) def signin_post(): email = request.form.get('email') password = request.form.get('password') repassword = request.form.get('repassword') if (password != repassword): return (render_template("signin.html", error="Les deux mots de passe sont differents")) if (utils.check_email(email)): return (render_template("signin.html", error="Votre email n'est pas valdie")) if (database.user_exist(email)): return (render_template("signin.html", error="Email deja utilisé")) database.add_user(email, password); return (redirect("/connected")) @app.route("/forgot") def forgot(): return (render_template("forgot.html")); @app.route("/forgot", methods=["POST"]) def forgot_post(): email = request.form.get('email') if (not database.email_exist(email)): return (render_template("forgot.html", error="Ce compte n'existe pas'")) uuid = database.create_reset_code_by_email(email); mail.send_mail(email, "Password recovery", render_template("mails/password_recovery.html", code=uuid)) return (redirect(f"/reset/{uuid}")) @app.route("/reset/") def reset(uuid): if (not database.reset_code_exist(uuid)): return (render_template("error.html", error="code inconnu")) email = database.get_email_by_reset_code(uuid) email = email["email"] return (render_template("reset.html", email=email)) @app.route("/reset/", methods=['POST']) def reset_post(uuid): if (not database.reset_code_exist(uuid)): return (render_template("error.html", error="code inconnu")) email = database.get_email_by_reset_code(uuid) password = request.form.get('password') repassword = request.form.get('repassword') if (password != repassword): return (render_template("reset.html", error="Les deux mots de passe sont differents")) database.change_user_password(email, password); database.remove_reset_code_by_code(uuid); return (redirect("/login")) @app.route("/join/") def join(uuid): return ("bozo") if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=1)