diff --git a/app/main/views/sign_in.py b/app/main/views/sign_in.py index 6bfe17b52..5ca935e56 100644 --- a/app/main/views/sign_in.py +++ b/app/main/views/sign_in.py @@ -20,6 +20,7 @@ from flask_login import current_user from app import login_manager, user_api_client from app.main import main from app.main.forms import LoginForm +from app.main.views.index import error from app.main.views.verify import activate_user from app.models.user import InvitedUser, User from app.utils import hide_from_search_engines @@ -77,9 +78,7 @@ def _get_user_email_and_uuid(access_token): return user_email, user_uuid -@main.route("/sign-in", methods=(["GET", "POST"])) -@hide_from_search_engines -def sign_in(): +def _do_login_dot_gov(): # start login.gov code = request.args.get("code") state = request.args.get("state") @@ -90,8 +89,13 @@ def sign_in(): redirect_url = request.args.get("next") # activate the user - user = user_api_client.get_user_by_uuid_or_email(user_uuid, user_email) - activate_user(user["id"]) + try: + user = user_api_client.get_user_by_uuid_or_email(user_uuid, user_email) + activate_user(user["id"]) + except BaseException as be: # noqa B036 + current_app.logger.error(be) + error(401) + return redirect(url_for("main.show_accounts_or_dashboard", next=redirect_url)) elif login_gov_error: @@ -99,6 +103,11 @@ def sign_in(): raise Exception(f"Could not login with login.gov {login_gov_error}") # end login.gov + +@main.route("/sign-in", methods=(["GET", "POST"])) +@hide_from_search_engines +def sign_in(): + _do_login_dot_gov() redirect_url = request.args.get("next") if os.getenv("NOTIFY_E2E_TEST_EMAIL"): diff --git a/app/templates/error/401.html b/app/templates/error/401.html index 068067e92..01cad95e3 100644 --- a/app/templates/error/401.html +++ b/app/templates/error/401.html @@ -4,6 +4,7 @@