diff --git a/etc/config.py.example b/etc/config.py.example
index c415a7ee4d70404e470efdcd37389570baf3bc4f..febe76a171c7f21bb5a918e414db5752f26c8be7 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 bf880e7432661eb2be9a163f4fa460f621804d3c..87311f26ed3bd2470d204d0648d3fa9708b47e52 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)