From 4e5021e2b0aada68491995614ae33716f04ed4f3 Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Mon, 22 Jan 2024 08:12:22 -0800 Subject: [PATCH] /web-site bug fix, handle opted out users fixes https://console.cloud.google.com/errors/detail/CN7a9KGAicelyAE;time=P30D?project=bridgy-federated --- tests/test_web.py | 10 ++++++++++ web.py | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/tests/test_web.py b/tests/test_web.py index 4b002eb..204251a 100644 --- a/tests/test_web.py +++ b/tests/test_web.py @@ -2394,6 +2394,16 @@ http://this/404s get_flashed_messages()) self.assertEqual(1, Web.query().count()) + def test_check_web_site_opted_out(self, _, __): + self.user.manual_opt_out = True + self.user.put() + + got = self.post('/web-site', data={'url': 'user.com'}) + self.assert_equals(400, got.status_code) + self.assertEqual(['user.com is not a valid or supported web site'], + get_flashed_messages()) + self.assertEqual(1, Web.query().count()) + def test_check_webfinger_redirects_then_fails(self, mock_get, _): redir = 'http://localhost/.well-known/webfinger?resource=acct:orig@orig' mock_get.side_effect = ( diff --git a/web.py b/web.py index b55e6f4..1ac96af 100644 --- a/web.py +++ b/web.py @@ -545,6 +545,8 @@ def enter_web_site(): @app.post('/web-site') def check_web_site(): + logger.info(f'Params: {list(request.form.items())}') + url = request.values['url'] # this normalizes and lower cases domain domain = util.domain_from_link(url, minimize=False) @@ -554,6 +556,9 @@ def check_web_site(): try: user = Web.get_or_create(domain, direct=True) + if not user: # opted out + flash(f'{url} is not a valid or supported web site') + return render_template('enter_web_site.html'), 400 user = user.verify() except BaseException as e: code, body = util.interpret_http_exception(e)