|
|
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) |
|
|
|