diff options
Diffstat (limited to 'app/auth')
-rw-r--r-- | app/auth/__init__.py | 41 | ||||
-rw-r--r-- | app/auth/forms.py | 1 |
2 files changed, 34 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) diff --git a/app/auth/forms.py b/app/auth/forms.py index 778e4fb..ce8ed4c 100644 --- a/app/auth/forms.py +++ b/app/auth/forms.py @@ -9,6 +9,7 @@ class LoginForm(FlaskForm): class RegisterForm(FlaskForm): username = StringField("Email", validators=[DataRequired()]) + pref_name = StringField("Preferred Name", validators=[DataRequired()]) password = PasswordField("Password", validators=[DataRequired()]) password_confirm = PasswordField("Confirm Password", validators=[DataRequired()]) submit = SubmitField("Register") |