User management routes for Downtime Panda.
This module handles user registration, login, logout, profile management,
and API token management.
login()
Log in an existing user.
Source code in src\downtime_panda\blueprints\user\routes.py
| @auth_blueprint.route("/login", methods=["GET", "POST"])
def login():
"""Log in an existing user."""
form = LoginForm()
if not form.validate_on_submit():
return render_template("blueprints/user/login.html.jinja", form=form)
user = User.get_by_email(form.email.data)
if user and user.verify_password(form.password.data):
flask_login.login_user(user, remember=form.remember_me.data)
flash(SUCCESS_LOGIN, "success")
return redirect(url_for("home.index"))
flash(ERROR_INVALID_CREDENTIALS, "danger")
return render_template("blueprints/user/login.html.jinja", form=form)
|
logout()
Log out the current user.
Source code in src\downtime_panda\blueprints\user\routes.py
| @auth_blueprint.route("/logout", methods=["POST"])
def logout():
"""Log out the current user."""
if flask_login.current_user.is_authenticated:
flask_login.logout_user()
flash(SUCCESS_LOGOUT, "success")
return redirect(url_for("home.index"))
|
register()
Register a new user.
Source code in src\downtime_panda\blueprints\user\routes.py
| @auth_blueprint.route("/register", methods=["GET", "POST"])
def register():
"""Register a new user."""
form = RegisterForm()
if not form.validate_on_submit():
return render_template("blueprints/user/register.html.jinja", form=form)
try:
User.register(
username=form.username.data,
email=form.email.data,
password=form.password.data,
)
except ValueError as e:
flash("Error: " + str(e), "error")
return render_template(
"blueprints/user/register.html.jinja", form=form, error=str(e)
)
user = User.get_by_email(form.email.data)
flask_login.login_user(user)
flash(SUCCESS_REGISTRATION, "success")
return redirect(url_for("home.index"))
|
show_profile()
Display the user's profile.
Source code in src\downtime_panda\blueprints\user\routes.py
| @user_blueprint.route("/profile")
@flask_login.login_required
def show_profile():
"""Display the user's profile."""
return render_template("blueprints/user/profile.html.jinja")
|