summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nfsw/auth.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/nfsw/auth.py b/nfsw/auth.py
index 769a5dd..5fd46f6 100644
--- a/nfsw/auth.py
+++ b/nfsw/auth.py
@@ -49,3 +49,39 @@ def not_agreed(view):
return wrapped_view
+@bp.route('/login', methods=('GET', 'POST'))
+@anon_only
+def login():
+ def render(e=''):
+ if e:
+ flash(e)
+
+ return render_template('login.html')
+
+ db = get_db()
+
+ if request.method == 'POST':
+
+ username = request.form['username']
+ password = request.form['password']
+
+ # Validate
+ if not username:
+ return render('Name is required')
+ elif not password:
+ return render('Password is required')
+
+ user = db.execute('SELECT * FROM user WHERE username=?',
+ (username,)).fetchone()
+
+ if user is None:
+ return render('User not found')
+ elif not check_password_hash(user['password'], password):
+ return render('Password is incorrect')
+
+ session.clear()
+ session['user_id'] = user['id']
+
+ return render()
+
+