X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fuser.py;h=296bd556662ba41c1d0a68d59d1058a2435609a0;hb=c9c8f15561064379419abd92e42017d2011dba26;hp=917fb1af4cc10b72aa7f8d6477e9063f56cefb56;hpb=2c087a32de17a0f5f386bab6513df2e3847ba3da;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/user.py b/osmclient/sol005/user.py index 917fb1a..296bd55 100644 --- a/osmclient/sol005/user.py +++ b/osmclient/sol005/user.py @@ -84,13 +84,13 @@ class User(object): # msg = resp # raise ClientException("failed to create user {} - {}".format(name, msg)) - def update(self, name, user, pwd_change=None): + def update(self, name, user, pwd_change=False): """Updates an existing OSM user identified by name""" self._logger.debug("") if pwd_change: - self._client.get_token(pwd_change) + token_info = self._client.get_token(pwd_change) else: - self._client.get_token() + token_info = self._client.get_token() # print(user) myuser = self.get(name) update_user = { @@ -98,20 +98,16 @@ class User(object): "remove_project_role_mappings": [], } - if not user.get("change_password"): - # if password is defined, update the password - if user.get("password"): - update_user["password"] = user["password"] - if user.get("username"): - update_user["username"] = user["username"] - else: - update_user["old_password"] = user["change_password"] + if user.get("username"): + update_user["username"] = user["username"] + if user.get("new_password"): update_user["password"] = user["new_password"] + if pwd_change and user.get("current_password"): + update_user["old_password"] = user["current_password"] if user.get("set-project"): # Remove project and insert project role mapping for set_project in user["set-project"]: - set_project_clean = [m.strip() for m in set_project.split(",")] project, roles = set_project_clean[0], set_project_clean[1:] @@ -152,6 +148,28 @@ class User(object): mapping = {"project": project, "role": role} update_user["remove_project_role_mappings"].append(mapping) + if user.get("unlock"): + if token_info.get("admin_show"): + update_user["unlock"] = user["unlock"] + update_user["system_admin_id"] = token_info.get("user_id") + else: + raise ClientException( + "{} does not have privilege to unlock {}".format( + token_info.get("username"), myuser.get("username") + ) + ) + + if user.get("renew"): + if token_info.get("admin_show"): + update_user["renew"] = user["renew"] + update_user["system_admin_id"] = token_info.get("user_id") + else: + raise ClientException( + "{} does not have privilege to renew {}".format( + token_info.get("username"), myuser.get("username") + ) + ) + if not update_user["remove_project_role_mappings"]: del update_user["remove_project_role_mappings"] if not update_user["add_project_role_mappings"]: @@ -217,7 +235,11 @@ class User(object): def list(self, filter=None): """Returns the list of OSM users""" self._logger.debug("") - self._client.get_token() + response = self._client.get_token() + admin_show = None + if response: + admin_show = response.get("admin_show") + filter_string = "" if filter: filter_string = "?{}".format(filter) @@ -225,7 +247,9 @@ class User(object): "{}{}".format(self._apiBase, filter_string), skip_query_admin=True ) # print('RESP: {}'.format(resp)) - if resp: + if resp and response: + return json.loads(resp), admin_show + elif resp: return json.loads(resp) return list()