summaryrefslogtreecommitdiffstats
path: root/nfsw/auth.py
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2019-09-13 22:13:03 -0400
committerrsiddharth <s@ricketyspace.net>2019-09-13 22:13:03 -0400
commit42ca2d3366372e01d99b7b9d49fab662e3e0a1e2 (patch)
tree51111cfd11e2d70ebd155943dc4af5ec0fb6f622 /nfsw/auth.py
parent879a10131d8cc5250484bc02d29941ff571f6854 (diff)
nfsw/auth.py: Add register route.
Diffstat (limited to 'nfsw/auth.py')
-rw-r--r--nfsw/auth.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/nfsw/auth.py b/nfsw/auth.py
index 5fd46f6..1652738 100644
--- a/nfsw/auth.py
+++ b/nfsw/auth.py
@@ -85,3 +85,48 @@ def login():
return render()
+@bp.route('/register', methods=('GET', 'POST'))
+@anon_only
+def register():
+ def render(e=''):
+ if e:
+ flash(e)
+
+ return render_template('register.html')
+
+ db = get_db()
+
+ if request.method == 'POST':
+ print(request.form)
+
+ username = request.form['username']
+ password = request.form['password']
+
+ # Validate
+ if not username:
+ return render('Name is required')
+ elif db.execute('SELECT id FROM user where username=?',
+ (username,)).fetchone() is not None:
+ return render('Name already taken')
+
+ # Generate password if empty.
+ if not password:
+ password = os.urandom(4).hex()
+
+
+ r = db.execute('INSERT INTO user (username, password)'
+ ' VALUES (?, ?)',
+ (username, generate_password_hash(password)))
+ db.commit()
+
+ if r.lastrowid < 1:
+ return render('Unable to create user')
+
+ session.clear()
+ session['user_id'] = r.lastrowid
+
+ return redirect(url_for('auth.terms'))
+
+ return render()
+
+