Add option to logout
This commit is contained in:
parent
49b228c1a5
commit
32e06e9d98
10
main.py
10
main.py
|
@ -85,6 +85,7 @@ def login_page() -> str | werkzeug.Response:
|
||||||
return flask.render_template("login.html", error="Invalid credentials")
|
return flask.render_template("login.html", error="Invalid credentials")
|
||||||
|
|
||||||
expire_date = datetime.now() + timedelta(days=180)
|
expire_date = datetime.now() + timedelta(days=180)
|
||||||
|
flask.flash("Welcome back! You have successfully logged in.")
|
||||||
|
|
||||||
response = flask.redirect(flask.session.get("next") or flask.url_for("dashboard"))
|
response = flask.redirect(flask.session.get("next") or flask.url_for("dashboard"))
|
||||||
response.set_cookie(
|
response.set_cookie(
|
||||||
|
@ -99,5 +100,14 @@ def login_page() -> str | werkzeug.Response:
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/logout")
|
||||||
|
def logout() -> werkzeug.Response:
|
||||||
|
"""Handle user logout by clearing the authentication cookie."""
|
||||||
|
response = flask.redirect(flask.url_for("login_page"))
|
||||||
|
response.set_cookie("auth_token", "", expires=0)
|
||||||
|
flask.flash("You have been successfully logged out.", "info")
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app.run(host="0.0.0.0")
|
app.run(host="0.0.0.0")
|
||||||
|
|
|
@ -16,7 +16,10 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
{% block nav %}{{ navbar() }}{% endblock %}
|
{% block nav %}{{ navbar() }}{% endblock %}
|
||||||
|
<div class="container mt-3">
|
||||||
|
{% include "flash_msg.html" %}
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
|
</div>
|
||||||
{% block scripts %}{% endblock %}
|
{% block scripts %}{% endblock %}
|
||||||
<script src="https://unpkg.com/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
|
<script src="https://unpkg.com/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
10
templates/flash_msg.html
Normal file
10
templates/flash_msg.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{% with messages = get_flashed_messages() %}
|
||||||
|
{% if messages %}
|
||||||
|
{% for message in messages %}
|
||||||
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||||
|
{{ message }}
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endwith %}
|
|
@ -13,7 +13,7 @@
|
||||||
<form method="POST">
|
<form method="POST">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="username" class="form-label">username</label>
|
<label for="username" class="form-label">username</label>
|
||||||
<input class="form-control" id="username" name="username">
|
<input class="form-control" id="username" name="username" value="{{ request.form.username }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="password" class="form-label">Password</label>
|
<label for="password" class="form-label">Password</label>
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
{% set pages = [
|
{% set pages = [
|
||||||
{"endpoint": "root_page", "label": "Home" },
|
{"endpoint": "root_page", "label": "Home" },
|
||||||
{"endpoint": "login_page", "label": "Login" },
|
{"endpoint": "login_page", "label": "Login" },
|
||||||
|
{"endpoint": "logout", "label": "Logout" },
|
||||||
] %}
|
] %}
|
||||||
{% set project = "Auth" %}
|
{% set project = "Auth" %}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue