Implement support for password change and logout

Note the hack.
This commit is contained in:
Jonas Schäfer
2020-02-29 13:41:08 +01:00
parent 90273960d3
commit 9318b0d152
7 changed files with 198 additions and 32 deletions

View File

@@ -1,32 +1,38 @@
import quart.flask_patch
from quart import Quart, session, request, render_template, redirect, url_for
from . import prosodyclient
from .prosodyclient import client
app = Quart(__name__)
app.config.from_envvar("SNIKKET_WEB_CONFIG")
client = prosodyclient.ProsodyClient(app)
client.init_app(app)
client.default_login_redirect = "login"
@app.route("/", methods=["GET", "POST"])
@app.route("/login", methods=["GET", "POST"])
async def login():
if client.has_session:
return redirect(url_for('home'))
return redirect(url_for('user.index'))
if request.method == "POST":
form = await request.form
jid = form["address"]
password = form["password"]
await client.login(jid, password)
return redirect(url_for('home'))
return redirect(url_for('user.index'))
return await render_template("login.html")
@app.route('/home')
@client.require_session()
@app.route("/")
async def home():
user_info = await client.get_user_info()
if client.has_session:
return redirect(url_for('user.index'))
return await render_template("home.html", user_info=user_info)
return redirect(url_for('login'))
from .user import user_bp
app.register_blueprint(user_bp)