Added profile view, cookie support for accounts

This commit is contained in:
Socks 2018-01-30 04:00:00 +00:00
parent f44e07a414
commit eab5b4c22f

View file

@ -1,30 +1,39 @@
from flask import Flask, render_template, request
from flask import Flask, render_template, request, redirect, url_for, session
from backend import accounts
app = Flask(__name__)
app.secret_key = "eVZ4EmVK70iETb03KqDAXV5sBHb3T73t"
@app.route('/')
def hello_world():
return render_template("index.html")
def index():
if 'username' in session.keys():
return redirect(url_for('profile'))
else:
return redirect(url_for('register'))
@app.route('/login', methods=['POST'])
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
login_attempt = accounts.login(username, password)
return render_template('status.html',
title_status=login_attempt['status'].title(),
if login_attempt['status'] == 'success':
session['username'] = username
return redirect(url_for('profile'))
else:
return render_template('login.html',
status=login_attempt['status'],
message=login_attempt['message'])
elif request.method == 'GET':
return render_template('login.html')
@app.route('/register', methods=['POST'])
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == "POST":
username = request.form['username']
email = request.form['email']
password = request.form['password']
@ -32,9 +41,41 @@ def register():
if password == confirm_password:
register_attempt = accounts.create_account(email, username, password)
return register_attempt['message']
return render_template('register.html',
status=register_attempt['status'],
message=register_attempt['message'])
else:
return "Passwords do not match!"
return render_template("register.html",
status="danger",
message="Passwords do not match!")
elif request.method == 'GET':
return render_template('register.html')
@app.route('/profile', methods=['GET'])
@app.route('/profile/<name>', methods=['GET'])
def profile(name=None):
logged_in = True if ('username' in session.keys()) else False
if not logged_in and name is None:
return redirect(url_for('index'))
if logged_in and name is None:
name = session['username']
name = name.lower()
logged_in = 'username' in session.keys()
dname = accounts.get_display_name(name)
return render_template('profile.html', user=accounts.account_details(name), logged_in=logged_in)
@app.route('/logout')
def logout():
session.pop('username')
return redirect(url_for('login'))
@app.route('/layout')
def layout():
return render_template('layout.html', logged_in=True)
if __name__ == '__main__':