diff --git a/flask_cas/routing.py b/flask_cas/routing.py
index c88e7d802e62a71467116abc1cbd98804b61595b..acf6e7b0d8e0d0779b791794c13414a5081831c9 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 ecd9a6b50123b85ce2ee254e721d0b5a48d3b6aa..02a1ea25164ffb76100be08996e8efdfeeefefe3 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 d8f114efa3be67add67da9186736d4a9c45f11d2..9cca04c63b0529e10722f179cdfbace4de5c23a6 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")