diff options
author | rsiddharth <s@ricketyspace.net> | 2019-09-13 22:13:03 -0400 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2019-09-13 22:13:03 -0400 |
commit | 42ca2d3366372e01d99b7b9d49fab662e3e0a1e2 (patch) | |
tree | 51111cfd11e2d70ebd155943dc4af5ec0fb6f622 | |
parent | 879a10131d8cc5250484bc02d29941ff571f6854 (diff) |
nfsw/auth.py: Add register route.
-rw-r--r-- | nfsw/auth.py | 45 |
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() + + |