From c5fa65ad78e3983f5fbb907a935c5af5e1aa5892 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Wed, 7 Sep 2022 19:52:53 +0200
Subject: [PATCH] =?UTF-8?q?Hack=20pro=20p=C5=99ihla=C5=A1ov=C3=A1n=C3=AD?=
=?UTF-8?q?=20testovac=C3=ADch=20u=C5=BEivatel=C5=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Úmyslně udělaný tak, aby i kdyby ho někdo omylem zapnul na produkčním
OSMO, stejně se na žádného existujícího uživatele nepůjde přihlásit.
---
etc/config.py.example | 4 ++++
mo/web/acct.py | 18 ++++++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/etc/config.py.example b/etc/config.py.example
index c415a7ee..febe76a1 100644
--- a/etc/config.py.example
+++ b/etc/config.py.example
@@ -73,3 +73,7 @@ CURRENT_YEAR = 71
MO_WEB_SERVER = 'http://localhost:5001'
MO_WEB_LOGIN = 'matemaicky_hroch'
MO_WEB_PASSWD = 'BrumBrum'
+
+# Povolení loginu bez hesla pro testovací uživatele (s adresou končící na @test).
+# Nezapínat mimo testovací prostředí! Bydlí na /test-login/<email>.
+#INSECURE_TEST_LOGIN = True
diff --git a/mo/web/acct.py b/mo/web/acct.py
index bf880e74..87311f26 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -659,3 +659,21 @@ def confirm_reset():
@app.errorhandler(werkzeug.exceptions.Forbidden)
def handle_forbidden(e):
return render_template('forbidden.html'), 403
+
+
+if getattr(config, 'INSECURE_TEST_LOGIN', False):
+ @app.route('/test-login/<email>')
+ def test_login(email: str):
+ if not email.endswith('@test'):
+ app.logger.error('Test login: Uživatel <%s> nekončí na @test', email)
+ raise werkzeug.exceptions.NotFound()
+
+ user = mo.users.user_by_email(email)
+ if not user:
+ app.logger.error('Test login: Neznámý uživatel <%s>', email)
+ raise werkzeug.exceptions.Forbidden()
+
+ app.logger.info('Test login: Přihlásil se uživatel #%s <%s>', user.user_id, email)
+ mo.users.login(user)
+ db.get_session().commit()
+ return login_and_redirect(user)
--
GitLab