diff --git a/src/caosdb/common/administration.py b/src/caosdb/common/administration.py index e7ba94182d7a4d8b60c6400cd1d804f62f7bf03c..dff461e7fb0ed5270119907bd4ad859503b3ce21 100644 --- a/src/caosdb/common/administration.py +++ b/src/caosdb/common/administration.py @@ -26,16 +26,12 @@ """missing docstring.""" -from lxml import etree - from caosdb.common.utils import xml2str from caosdb.connection.connection import get_connection -from caosdb.exceptions import (HTTPClientError, - HTTPForbiddenError, - HTTPResourceNotFoundError, - EntityDoesNotExistError, - ServerConfigurationException, - ) +from caosdb.exceptions import (EntityDoesNotExistError, HTTPClientError, + HTTPForbiddenError, HTTPResourceNotFoundError, + ServerConfigurationException) +from lxml import etree def set_server_property(key, value): @@ -156,13 +152,22 @@ def _update_user(name, realm=None, password=None, status=None, return con.put_form_data(entity_uri_segment="User/" + (realm + "/" + name if realm is not None else name), params=params, **kwargs).read() except HTTPResourceNotFoundError as e: e.msg = "User does not exist." - raise + raise e except HTTPForbiddenError as e: e.msg = "You are not permitted to update this user." - raise + raise e except HTTPClientError as e: if e.status == 409: e.msg = "Entity does not exist." + + if e.status == 422: + e.msg = """Maybe the password does not match the required standard? + The current requirements are: + - at least 8 characters + - at least 1 number + - at least 1 lower case character + - at least 1 upper case character + - at least 1 special character""" raise @@ -191,7 +196,13 @@ def _insert_user(name, password=None, status=None, email=None, entity=None, **kw e.msg = "User name is already in use." if e.status == 422: - e.msg = "Maybe the password does not match the required standard?" + e.msg = """Maybe the password does not match the required standard? + The current requirements are: + - at least 8 characters + - at least 1 number + - at least 1 lower case character + - at least 1 upper case character + - at least 1 special character""" raise e diff --git a/src/caosdb/utils/caosdb_admin.py b/src/caosdb/utils/caosdb_admin.py index 9c18f8962b3561999950059f23453d05edc0584d..9fb94f57683036f5432a40198cc4ae98893665fb 100755 --- a/src/caosdb/utils/caosdb_admin.py +++ b/src/caosdb/utils/caosdb_admin.py @@ -131,11 +131,17 @@ def do_create_user(args): def do_activate_user(args): - admin._update_user(name=args.user_name, status="ACTIVE") + try: + admin._update_user(name=args.user_name, status="ACTIVE") + except HTTPClientError as e: + print(e.msg) def do_deactivate_user(args): - admin._update_user(name=args.user_name, status="INACTIVE") + try: + admin._update_user(name=args.user_name, status="INACTIVE") + except HTTPClientError as e: + print(e.msg) def do_set_user_password(args): @@ -143,7 +149,10 @@ def do_set_user_password(args): password = _promt_for_pw() else: password = args.user_password - admin._update_user(name=args.user_name, password=password) + try: + admin._update_user(name=args.user_name, password=password) + except HTTPClientError as e: + print(e.msg) def do_add_user_roles(args):