aboutsummaryrefslogtreecommitdiff
path: root/app/auth/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/auth/__init__.py')
-rw-r--r--app/auth/__init__.py41
1 files changed, 33 insertions, 8 deletions
diff --git a/app/auth/__init__.py b/app/auth/__init__.py
index b419351..06faa6d 100644
--- a/app/auth/__init__.py
+++ b/app/auth/__init__.py
@@ -1,6 +1,8 @@
-from flask import Blueprint, request, redirect, url_for, flash, render_template
-from flask_login import current_user, login_user
+from flask import Blueprint, request, redirect, url_for, flash, render_template, current_app
+from flask_login import current_user, login_user, login_required
+import flask_login
from werkzeug.security import check_password_hash, generate_password_hash
+from datetime import datetime
from app.auth.forms import LoginForm, RegisterForm
from app.database import User
@@ -22,15 +24,21 @@ def login():
email = request.form.get('username')
password = request.form.get('password')
- u = User.query.fetch_one().filter_by(email=email)
+ u = User.query.filter_by(email=email).first()
if u is not None:
if check_password_hash(u.password, password):
- login_user(u)
+ if u.active:
+ login_user(u)
- flash("Logged in successfully")
+ u.last_login = datetime.now()
+ db.session.commit()
+
+ flash("Logged in successfully")
- return redirect(url_for("meta.home"))
+ return redirect(url_for("meta.home"))
+ else:
+ flash("User is inactive. Contact an administrator")
else:
flash("Incorrect password")
@@ -57,7 +65,7 @@ def register():
# Passwords match
user = User(
- id=str(ulid.new()),
+ id=str(ulid.ulid()),
email=email,
password=generate_password_hash(password),
pref_name=pref_name,
@@ -73,4 +81,21 @@ def register():
else:
flash("Passwords do not match")
- return render_template("register.html")
+ return render_template("register.html", form=form)
+
+
+@bp.route("/logout")
+@login_required
+def logout():
+ flask_login.logout_user()
+
+ return redirect("/")
+
+@bp.route("/profile")
+@login_required
+def profile():
+ debug = current_app.config['DEBUG']
+ peers = current_user.peers
+ networks = current_user.networks
+ return render_template("profile.html", debug=debug, peers=peers,
+ nets=networks)