65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
from flask import Flask, render_template, session, request, url_for, redirect, g
|
|
from werkzeug.security import generate_password_hash, check_password_hash
|
|
from functools import wraps
|
|
from core.forms import SignupForm, LoginForm
|
|
|
|
app = Flask(__name__, template_folder="../ui/templates/")
|
|
app.config["SECRET_KEY"] = ""
|
|
|
|
@app.before_request
|
|
def logged_in_user():
|
|
g.user = session.get("username", None)
|
|
g.admin = session.get("username", None)
|
|
|
|
def login_required(view):
|
|
"""add at start of routes where users need to be logged in to access"""
|
|
@wraps(view)
|
|
def wrapped_view(*args, **kwargs):
|
|
if g.user is None:
|
|
return redirect(url_for("login", next=request.url))
|
|
return view(*args, **kwargs)
|
|
return wrapped_view
|
|
|
|
def admin_required(view):
|
|
"""add at start of routes where users admin needs to be logged in to access"""
|
|
@wraps(view)
|
|
def wrapped_view(*args, **kwargs):
|
|
if g.admin != "admin":
|
|
return redirect(url_for("login", next=request.url))
|
|
return view(*args, **kwargs)
|
|
return wrapped_view
|
|
|
|
@app.route('/')
|
|
def index():
|
|
"""
|
|
Home page of the platform
|
|
|
|
Contains a list of some of the streams that are currently live and the most popular categories.
|
|
"""
|
|
|
|
return render_template('index.html')
|
|
|
|
@app.route("/signup", methods=["GET", "POST"])
|
|
def signup():
|
|
form = SignupForm()
|
|
if form.validate_on_submit():
|
|
# Retrieve data from the sign up form
|
|
username = form.username.data
|
|
email = form.email.data
|
|
password = form.password.data
|
|
password2 = form.password2.data
|
|
|
|
# Store in database
|
|
return
|
|
|
|
@app.route("/login", methods=["GET", "POST"])
|
|
def login():
|
|
form = LoginForm()
|
|
if form.validate_on_submit():
|
|
# Retrieve data from the login form
|
|
username = form.username.data
|
|
password = form.username.data
|
|
|
|
# Compare with database
|
|
return
|