diff options
author | Cara Salter <cara@devcara.com> | 2022-09-21 21:33:40 -0400 |
---|---|---|
committer | Cara Salter <cara@devcara.com> | 2022-09-21 21:33:40 -0400 |
commit | f9b99ce66f56995a29709e9bf24750dab9430767 (patch) | |
tree | 3624255932ab500bcfa3043932acd31b23fe86b3 /app/auth/__init__.py | |
parent | b1ffd5220866dc9479fa284dfb2f0a0e111a6031 (diff) | |
download | nccd-f9b99ce66f56995a29709e9bf24750dab9430767.tar.gz nccd-f9b99ce66f56995a29709e9bf24750dab9430767.zip |
bunch of features
registration, logging out, listing networks, user profiles
Diffstat (limited to 'app/auth/__init__.py')
-rw-r--r-- | app/auth/__init__.py | 41 |
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) |