From 967a38869e27540aab466d08f1c515e3c7416b91 Mon Sep 17 00:00:00 2001 From: Sven Seeberg Date: Sun, 14 Mar 2021 13:02:11 +0100 Subject: [PATCH] Support new Passbolt API * Some password objects are now JSON objects that need to be decoded. --- src/salt_passbolt/__init__.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/salt_passbolt/__init__.py b/src/salt_passbolt/__init__.py index 7fc94cc..6b01770 100644 --- a/src/salt_passbolt/__init__.py +++ b/src/salt_passbolt/__init__.py @@ -30,11 +30,24 @@ def generate_pillar(passbolt_obj, group_uuid): for i in result: resource = passbolt_obj.get("/secrets/resource/{}.json?api-version=v2". format(i["id"])) - salt['passbolt'][i["id"]] = passbolt_obj.decrypt( - resource["body"]["data"]) + data = passbolt_obj.decrypt(resource["body"]["data"]) + salt['passbolt'][i["id"]] = decode_json(data) return salt +def decode_json(data): + """ + The passbolt API returns legacy strings or JSON objects. + Try to decode JSON, and if invalid return string. + """ + import json + try: + data = json.loads(data) + except json.decoder.JSONDecodeError: + return data + return data["password"] + + def fetch_passbolt_passwords(group_uuid): """ Generate Passbolt API object and call API fetch function