From 725f1844cc2aa1181b8452b27df29573780fefbe Mon Sep 17 00:00:00 2001 From: Domagoj Zecevic Date: Wed, 26 Jul 2023 18:46:37 +0200 Subject: [PATCH] Every start is hard --- app.py | 66 ++++++++++++++++++++++++++++++++++++++++++ templates/home.html | 28 ++++++++++++++++++ templates/login.html | 30 +++++++++++++++++++ templates/sign_up.html | 32 ++++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 app.py create mode 100644 templates/home.html create mode 100644 templates/login.html create mode 100644 templates/sign_up.html diff --git a/app.py b/app.py new file mode 100644 index 0000000..9347f3a --- /dev/null +++ b/app.py @@ -0,0 +1,66 @@ +from flask import Flask, render_template, request, url_for, redirect +from flask_sqlalchemy import SQLAlchemy +from flask_login import LoginManager, UserMixin, login_user, logout_user + +app = Flask(__name__) +app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///db.sqlite" +app.config["SECRET_KEY"] = "abc" +db = SQLAlchemy() + +login_manager = LoginManager() +login_manager.init_app(app) + + +class Users(UserMixin, db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(250), unique=True, nullable=False) + password = db.Column(db.String(250), nullable=False) + + +db.init_app(app) + + +with app.app_context(): + db.create_all() + + +@login_manager.user_loader +def loader_user(user_id): + return Users.query.get(user_id) + + +@app.route('/register', methods=["GET", "POST"]) +def register(): + if request.method == "POST": + user = Users(username=request.form.get("username"), + password=request.form.get("password")) + db.session.add(user) + db.session.commit() + return redirect(url_for("login")) + return render_template("sign_up.html") + + +@app.route("/login", methods=["GET", "POST"]) +def login(): + if request.method == "POST": + user = Users.query.filter_by( + username=request.form.get("username")).first() + if user.password == request.form.get("password"): + login_user(user) + return redirect(url_for("home")) + return render_template("login.html") + + +@app.route("/logout") +def logout(): + logout_user() + return redirect(url_for("home")) + + +@app.route("/") +def home(): + return render_template("home.html") + + +if __name__ == "__main__": + app.run() diff --git a/templates/home.html b/templates/home.html new file mode 100644 index 0000000..1f4df0d --- /dev/null +++ b/templates/home.html @@ -0,0 +1,28 @@ + + + + + + + Home + + + + + {% if current_user.is_authenticated %} +

You are logged in

+ Logout + {% else %} +

You are not logged in

+ {% endif %} + + diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..88b387e --- /dev/null +++ b/templates/login.html @@ -0,0 +1,30 @@ + + + + + + + Login + + + + +

Login to your account

+
+ + + + + +
+ + diff --git a/templates/sign_up.html b/templates/sign_up.html new file mode 100644 index 0000000..6239de0 --- /dev/null +++ b/templates/sign_up.html @@ -0,0 +1,32 @@ + + + + + + + Sign Up + + + + +

Create an account

+
+ + + + + + + +
+ +