| from flask import Flask, render_template, request, redirect, url_for, session, flash |
| from werkzeug.security import generate_password_hash, check_password_hash |
|
|
| app = Flask(__name__) |
| app.secret_key = "supersecretkey" |
|
|
| |
| users = {} |
|
|
| @app.route("/") |
| def home(): |
| if "user" in session: |
| return redirect(url_for("dashboard")) |
| return redirect(url_for("login")) |
|
|
| @app.route("/signup", methods=["GET", "POST"]) |
| def signup(): |
| if request.method == "POST": |
| username = request.form["username"] |
| password = request.form["password"] |
| confirm_password = request.form.get("confirmPassword") |
|
|
| if password != confirm_password: |
| flash("Passwords do not match.", "danger") |
| return redirect(url_for("signup")) |
|
|
| if username in users: |
| flash("Username already exists!", "danger") |
| return redirect(url_for("signup")) |
|
|
| users[username] = generate_password_hash(password) |
| flash("Signup successful! Please login.", "success") |
| return redirect(url_for("login")) |
|
|
| return render_template("signup.html") |
|
|
| @app.route("/login", methods=["GET", "POST"]) |
| def login(): |
| if request.method == "POST": |
| username = request.form["username"] |
| password = request.form["password"] |
|
|
| if username in users and check_password_hash(users[username], password): |
| session["user"] = username |
| return redirect(url_for("dashboard")) |
| else: |
| flash("Invalid username or password", "danger") |
|
|
| return render_template("login.html") |
|
|
| @app.route("/dashboard") |
| def dashboard(): |
| if "user" not in session: |
| return redirect(url_for("login")) |
| return render_template("dashboard.html", username=session["user"]) |
|
|
| @app.route("/portfolio") |
| def portfolio(): |
| if "user" not in session: |
| return redirect(url_for("login")) |
| return render_template("portfolio.html") |
|
|
| @app.route("/logout") |
| def logout(): |
| session.pop("user", None) |
| flash("Logged out successfully.", "info") |
| return redirect(url_for("login")) |
|
|
| if __name__ == "__main__": |
| app.run(host="0.0.0.0", port=7860, debug=True) |
|
|