diff --git a/demos/demo2/opa/policy.rego b/demos/demo2/opa/policy.rego index 6f7ca43e50d98f3f89721aaad01a5cf4e488db89..6baa2c5ad4c241b8984dfe96d17e3e494e5066db 100644 --- a/demos/demo2/opa/policy.rego +++ b/demos/demo2/opa/policy.rego @@ -6,18 +6,17 @@ import input default allow = false allow { - path_arr := split(input.path, "/") - print(path_arr) - path_id_short := split(path_arr[count(path_arr)-1], ".") - z := array.slice(path_arr, 0, count(path_arr)-1) - path_full := array.concat(z, path_id_short) - print(path_id_short) - print(path_full) - some i, _ in path_full - path_arr_slice := array.slice(path_full, 0, i+1) - path := concat("/", path_arr_slice) + # split path (e.g., aas.aHR0cHM6Ly93d3cuY29tcGFueS5jb20vc3VibW9kZWxzL2FyYmVpdHNhdWZ0cmFn.Auftragsstatus) in parts + path_arr := split(input.path, ".") + # iterate through each subpath + # e.g., 1. aas 2. aas.aHR0cHM6Ly93d3cuY29tcGFueS5jb20vc3VibW9kZWxzL2FyYmVpdHNhdWZ0cmFn + # 3. aas.aHR0cHM6Ly93d3cuY29tcGFueS5jb20vc3VibW9kZWxzL2FyYmVpdHNhdWZ0cmFn.Auftragsstatus + some i, _ in path_arr + path_arr_slice := array.slice(path_arr, 0, i+1) + path := concat(".", path_arr_slice) print(path) print(data.api[path]) + # within the stored data, check if input.user can perform requested method (e.g., READ) some user in data.api[path][input.method] user == input.user }