| | from flask import Blueprint, render_template, request, redirect, url_for, flash, session |
| | from api.models import db, User |
| | from functools import wraps |
| |
|
| | auth_bp = Blueprint("auth", __name__) |
| |
|
| | @auth_bp.route("/signup", methods=["GET", "POST"]) |
| | def signup(): |
| | if request.method == "POST": |
| | first_name = request.form.get("first_name") |
| | last_name = request.form.get("last_name") |
| | email = request.form.get("email") |
| | password = request.form.get("password") |
| | confirm_password = request.form.get("confirm_password") |
| | |
| | if password != confirm_password: |
| | flash("Passwords do not match!") |
| | return redirect(url_for("auth.signup")) |
| |
|
| | if User.query.filter_by(email=email).first(): |
| | flash("Email already registered!") |
| | return redirect(url_for("auth.signup")) |
| | |
| | user = User(first_name=first_name, last_name=last_name, email=email) |
| | user.set_password(password=password) |
| | db.session.add(user) |
| | db.session.commit() |
| | |
| | session['user_id'] = user.id |
| | session['user_name'] = user.first_name |
| | session['last_name'] = user.last_name |
| |
|
| | flash("Login Successful!") |
| | return render_template("signup.html") |
| | |
| | return render_template("signup.html") |
| |
|
| | @auth_bp.route("/login", methods=["GET", "POST"]) |
| | def login(): |
| | if request.method == "POST": |
| | email = request.form.get("email") |
| | password = request.form.get("password") |
| | |
| | user = User.query.filter_by(email=email).first() |
| | if user and user.check_password(password): |
| | session['user_id'] = user.id |
| | session['user_name'] = user.first_name |
| | session['last_name'] = user.last_name |
| | flash("Login Successful!") |
| | return render_template("login.html") |
| | else: |
| | flash("Invalid email or password.") |
| | return redirect(url_for("auth.login")) |
| | |
| | return render_template("login.html") |
| |
|
| | @auth_bp.route("/logout") |
| | def logout(): |
| | session.pop('user_id', None) |
| | session.pop('user_name', None) |
| | return redirect(url_for("home")) |
| |
|
| |
|
| | def login_required(f): |
| | @wraps(f) |
| | def decorated_function(*args, **kwargs): |
| | if "user_id" not in session: |
| | return redirect(url_for("auth.login")) |
| | return f(*args, **kwargs) |
| | return decorated_function |