From 952d2e2bd895c617e90a82fe1c8739ecbd5625b6 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Thu, 23 Jan 2025 13:59:44 +0100 Subject: [PATCH] =?UTF-8?q?CAS:=20am=C3=A9liore=20traitement=20erreurs=20r?= =?UTF-8?q?=C3=A9ponse=20serveur=20CAS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flask_cas/routing.py | 11 +++++++++-- sco_version.py | 2 +- scodoc.py | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/flask_cas/routing.py b/flask_cas/routing.py index c88e7d80..acf6e7b0 100644 --- a/flask_cas/routing.py +++ b/flask_cas/routing.py @@ -114,7 +114,7 @@ def logout(): return flask.redirect(redirect_url) -def validate(ticket): +def validate(ticket) -> bool: """ Will attempt to validate the ticket. If validation fails, then False is returned. If validation is successful, then True is returned @@ -172,15 +172,22 @@ def validate(ticket): if "cas:authenticationSuccess" in xml_from_dict["cas:serviceResponse"] else False ) - except (ValueError, ExpatError) as exc: + except (ValueError, ExpatError, KeyError) as exc: current_app.logger.error(f"CAS returned unexpected result: {exc}") + current_app.logger.error(f"Received data from CAS server:\n{xmldump}\n\n") if cas_error_callback: cas_error_callback("réponse invalide du serveur CAS") + return False # unreachable (cas_error_callback should raise exception) except URLError: current_app.logger.error("CAS : error validating token: check SSL certificate") cas_error_callback( "erreur connexion au serveur CAS: vérifiez le certificat SSL" ) + return False # unreachable + except Exception as exc: + current_app.logger.error(f"CAS : unkown error validating token: {exc}") + cas_error_callback("erreur décodage réponse CAS") + return False # unreachable if is_valid: current_app.logger.debug("valid") diff --git a/sco_version.py b/sco_version.py index ecd9a6b5..02a1ea25 100644 --- a/sco_version.py +++ b/sco_version.py @@ -3,7 +3,7 @@ "Infos sur version ScoDoc" -SCOVERSION = "9.7.58" +SCOVERSION = "9.7.59" SCONAME = "ScoDoc" diff --git a/scodoc.py b/scodoc.py index d8f114ef..9cca04c6 100755 --- a/scodoc.py +++ b/scodoc.py @@ -491,7 +491,7 @@ def user_edit( dept=None, verbose=False, ): - """Add or remove a role to the given user in the given dept""" + """Modify or display user's account attributes.""" user: User = User.query.filter_by(user_name=username).first() if not user: sys.stderr.write(f"user_role: user {username} does not exists\n") -- GitLab