Skip to content

routes

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")