CAS: améliore traitement erreurs réponse serveur CAS

This commit is contained in:
Emmanuel Viennet 2025-01-23 13:59:44 +01:00
parent ad1d8c3541
commit 952d2e2bd8
3 changed files with 11 additions and 4 deletions

View File

@ -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")

View File

@ -3,7 +3,7 @@
"Infos sur version ScoDoc"
SCOVERSION = "9.7.58"
SCOVERSION = "9.7.59"
SCONAME = "ScoDoc"

View File

@ -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")