Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions services/common/python/src/ecommerce_common/auth/auth.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from jwt.exceptions import DecodeError
from ecommerce_common.auth.jwt import JWT


def base_authentication(token: str, audience, keystore, error_obj=None):
jwt = JWT(encoded=token)
payld = jwt.verify(keystore=keystore, audience=audience)
if not payld:
raise DecodeError("payload of jwt token is null, authentication failure")
return payld


def base_permission_check(
user: dict, app_code: int, required_perm_codes: set, error_obj
):
granted_perms = user.get("perms", [])
granted_perms = filter(lambda d: d["app_code"] == app_code, granted_perms)
granted_perm_codes = set(map(lambda d: d["codename"], granted_perms))
coverage = required_perm_codes - granted_perm_codes
if any(coverage):
raise error_obj
return user


def get_unverified_token_payld(token: str):
try:
jwt = JWT(encoded=token)
payld = jwt.payload
except DecodeError as e:
payld = {}
return payld
67 changes: 0 additions & 67 deletions services/common/python/src/ecommerce_common/auth/fastapi.py

This file was deleted.

23 changes: 16 additions & 7 deletions services/common/python/src/ecommerce_common/util/json_renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
# "active": True
# }


def render_json_template(input_template_path, output_file_path, parameters):
if not os.path.exists(input_template_path):
raise FileNotFoundError(f"Template file not found: {input_template_path}")

with open(input_template_path, 'r') as f:
with open(input_template_path, "r") as f:
try:
json_data = json.load(f)
except json.JSONDecodeError as e:
Expand All @@ -29,20 +30,27 @@ def set_nested_value(data, keys, value):
data[keys[-1]] = value

for json_path, value in parameters.items():
keys = json_path.split('/')
keys = json_path.split("/")
set_nested_value(json_data, keys, value)

with open(output_file_path, 'w') as f:
with open(output_file_path, "w") as f:
json.dump(json_data, f, indent=4)


def main():
parser = argparse.ArgumentParser(description="Render a JSON template with parameters.")
parser.add_argument("--template", required=True, help="Path to the input JSON template file.")
parser.add_argument("--output", required=True, help="Path to the output rendered JSON file.")
parser = argparse.ArgumentParser(
description="Render a JSON template with parameters."
)
parser.add_argument(
"--template", required=True, help="Path to the input JSON template file."
)
parser.add_argument(
"--output", required=True, help="Path to the output rendered JSON file."
)
parser.add_argument(
"--parameters",
required=True,
help='Parameters as a single string, e.g., "key1=value1 key2=value2 key3=value3".'
help='Parameters as a single string, e.g., "key1=value1 key2=value2 key3=value3".',
)
args = parser.parse_args()
# Resolve relative paths to absolute paths
Expand All @@ -65,5 +73,6 @@ def main():
# Call the main function
render_json_template(input_template_path, output_file_path, parameters)


if __name__ == "__main__":
main()
Loading