From f9b99ce66f56995a29709e9bf24750dab9430767 Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Wed, 21 Sep 2022 21:33:40 -0400 Subject: bunch of features registration, logging out, listing networks, user profiles --- app/auth/__init__.py | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'app/auth/__init__.py') 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) -- cgit v1.2.3