From 5acd44edffa01b8d25d183106e5df41aa25fb90c Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 28 2019 16:11:09 +0000 Subject: If the user doesn't have a valid ssh key inform and keep doing There are a few situation where set_up_user will raise an exception if this exception is due to an invalid ssh key provided, we should just inform the user about it and let them log in, otherwise, let's raise the error, catch it later and inform the user then. Fixes https://pagure.io/pagure/issue/4303 Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/ui/fas_login.py b/pagure/ui/fas_login.py index 0f2cba7..1b29303 100644 --- a/pagure/ui/fas_login.py +++ b/pagure/ui/fas_login.py @@ -61,14 +61,21 @@ def set_user(return_url): return flask.redirect(return_url) try: - pagure.lib.query.set_up_user( - session=flask.g.session, - username=flask.g.fas_user.username, - fullname=flask.g.fas_user.fullname, - default_email=flask.g.fas_user.email, - ssh_key=flask.g.fas_user.get("ssh_key"), - keydir=pagure_config.get("GITOLITE_KEYDIR", None), - ) + try: + pagure.lib.query.set_up_user( + session=flask.g.session, + username=flask.g.fas_user.username, + fullname=flask.g.fas_user.fullname, + default_email=flask.g.fas_user.email, + ssh_key=flask.g.fas_user.get("ssh_key"), + keydir=pagure_config.get("GITOLITE_KEYDIR", None), + ) + except pagure.exceptions.PagureException as err: + message = str(err) + if message == "SSH key invalid.": + flask.flash(message, "error") + else: + raise # If groups are managed outside pagure, set up the user at login if not pagure_config.get("ENABLE_GROUP_MNGT", False): @@ -124,4 +131,7 @@ def set_user(return_url): # Ensure the user is logged out if we cannot set them up # correctly logout() + except pagure.exceptions.PagureException as err: + flask.flash(str(err), "error") + return flask.redirect(return_url)