You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
from flask import request
|
|
from flask import render_template
|
|
from flask import redirect
|
|
from main import app
|
|
from morsel_util import *
|
|
|
|
def session_start(form):
|
|
resp = redirect("/", code=303)
|
|
resp.set_cookie('username', form['username'])
|
|
resp.set_cookie('token', crypt(form['password'], str(int(time()))))
|
|
return resp
|
|
|
|
@app.route('/login', methods=['POST', 'GET'])
|
|
def login():
|
|
error = None
|
|
if request.method == 'POST':
|
|
if passchk(request.form['username'], request.form['password']):
|
|
return session_start(request.form)
|
|
else:
|
|
error = 'Invalid username/password'
|
|
|
|
if "success" in request.args:
|
|
error = "Successfully registered your account!"
|
|
return render_template('login.html', error=error)
|
|
|
|
@app.route('/logout')
|
|
def logout():
|
|
resp = redirect("/login", code=303)
|
|
resp.delete_cookie('username')
|
|
resp.delete_cookie('token')
|
|
return resp
|
|
|
|
@app.route('/reg', methods=['POST', 'GET'])
|
|
def register():
|
|
error = None
|
|
if request.method == 'POST':
|
|
if ((not uexist(request.form['username'])) and len(request.form['password']) >= 8
|
|
and request.form['username'].strip() != "" and not any(illegal_character in request.form['username'] for illegal_character in "%&.+?;")):
|
|
newuser(request.form['username'], request.form['password'])
|
|
return redirect('/login?success', 303)
|
|
elif len(request.form['password']) < 8:
|
|
error = "Password must be at least 8 characters."
|
|
else:
|
|
error = "Username already taken."
|
|
|
|
return render_template('register.html', error=error)
|