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)