Skip to content
This repository was archived by the owner on May 12, 2026. It is now read-only.

Commit 918d23e

Browse files
committed
Adding ABAC policy WIP 1
1 parent 8b6395a commit 918d23e

7 files changed

Lines changed: 100 additions & 7 deletions

File tree

‎src/routes/(protected)/abac/rules/+page.server.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ export const load: PageServerLoad = async ({ locals }) => {
4646
logger.info(
4747
`Retrieved ${abacRules.length} ABAC rules from response.abac_rules`,
4848
);
49+
// Log each rule to check for policy field
50+
abacRules.forEach((rule, index) => {
51+
logger.info(`Rule ${index + 1}:`, {
52+
rule_name: rule.rule_name,
53+
has_policy: !!rule.policy,
54+
policy: rule.policy,
55+
all_keys: Object.keys(rule),
56+
});
57+
});
4958
} else if (Array.isArray(response.rules)) {
5059
abacRules = response.rules;
5160
logger.info(

‎src/routes/(protected)/abac/rules/+page.svelte‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
2828
let filteredRules = $derived.by(() => {
2929
if (!searchQuery.trim()) {
30+
console.log("ABAC Rules Data:", abacRules);
3031
return abacRules;
3132
}
3233
const query = searchQuery.toLowerCase();
@@ -176,6 +177,13 @@
176177
</div>
177178
{/if}
178179

180+
<div class="detail-item">
181+
<span class="detail-label">Policy:</span>
182+
<span class="detail-value"
183+
>{rule.policy || "(not set)"}</span
184+
>
185+
</div>
186+
179187
{#if rule.is_active !== undefined}
180188
<div class="detail-item">
181189
<span class="detail-label">Status:</span>

‎src/routes/(protected)/abac/rules/[rule_id]/edit/+page.svelte‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
let formRuleName = $state(data.rule?.rule_name || "");
2929
let formRuleCode = $state(data.rule?.rule_code || "");
3030
let formDescription = $state(data.rule?.description || "");
31+
let formPolicy = $state(data.rule?.policy || "");
3132
let formIsActive = $state(data.rule?.is_active ?? true);
3233
let formError = $state("");
3334
let isSubmitting = $state(false);
@@ -408,6 +409,11 @@
408409
return;
409410
}
410411
412+
if (!formPolicy.trim()) {
413+
formError = "Policy is required";
414+
return;
415+
}
416+
411417
isSubmitting = true;
412418
formError = "";
413419
@@ -422,6 +428,8 @@
422428
requestBody.description = formDescription;
423429
}
424430
431+
requestBody.policy = formPolicy;
432+
425433
const response = await fetch(`/api/abac-rules/${data.ruleId}`, {
426434
method: "PUT",
427435
headers: {
@@ -1008,6 +1016,27 @@
10081016
</p>
10091017
</div>
10101018

1019+
<!-- Policy Field -->
1020+
<div>
1021+
<label
1022+
for="policy"
1023+
class="mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
1024+
>
1025+
Policy <span class="text-red-600">*</span>
1026+
</label>
1027+
<input
1028+
id="policy"
1029+
type="text"
1030+
bind:value={formPolicy}
1031+
required
1032+
placeholder="e.g., account-access"
1033+
class="w-full rounded-lg border border-gray-300 bg-white px-4 py-2 text-gray-900 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-100 dark:focus:border-blue-400"
1034+
/>
1035+
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">
1036+
Policy this Rule supports
1037+
</p>
1038+
</div>
1039+
10111040
<!-- Is Active Checkbox -->
10121041
<div
10131042
class="rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-900"

‎src/routes/(protected)/abac/rules/create/+page.svelte‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
let formRuleName = $state("");
1616
let formRuleCode = $state("");
1717
let formDescription = $state("");
18+
let formPolicy = $state("");
1819
let formIsActive = $state(true);
1920
let formError = $state("");
2021
let isSubmitting = $state(false);
@@ -63,6 +64,11 @@
6364
return;
6465
}
6566
67+
if (!formPolicy.trim()) {
68+
formError = "Policy is required";
69+
return;
70+
}
71+
6672
isSubmitting = true;
6773
formError = "";
6874
@@ -77,6 +83,8 @@
7783
requestBody.description = formDescription;
7884
}
7985
86+
requestBody.policy = formPolicy;
87+
8088
const response = await fetch("/api/abac-rules", {
8189
method: "POST",
8290
headers: {
@@ -285,6 +293,27 @@
285293
</p>
286294
</div>
287295

296+
<!-- Policy Field -->
297+
<div>
298+
<label
299+
for="policy"
300+
class="mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
301+
>
302+
Policy <span class="text-red-600">*</span>
303+
</label>
304+
<input
305+
id="policy"
306+
type="text"
307+
bind:value={formPolicy}
308+
required
309+
placeholder="e.g., account-access"
310+
class="w-full rounded-lg border border-gray-300 bg-white px-4 py-2 text-gray-900 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-100 dark:focus:border-blue-400"
311+
/>
312+
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">
313+
Policy this Rule supports
314+
</p>
315+
</div>
316+
288317
<!-- Is Active Checkbox -->
289318
<div
290319
class="rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-900"

‎src/routes/(protected)/integration/method-routings/+page.svelte‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@
165165
editingRouting = routing;
166166
formData = { ...routing };
167167
showCreateForm = true;
168+
if (methodNames.length === 0) {
169+
fetchMethodNames();
170+
}
168171
}
169172
170173
function startCreate() {
@@ -198,6 +201,7 @@
198201
199202
onMount(() => {
200203
fetchMethodRoutings();
204+
fetchMethodNames();
201205
});
202206
</script>
203207

‎src/routes/api/abac-rules/+server.ts‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export const POST: RequestHandler = async ({ request, locals }) => {
2323

2424
try {
2525
const body = await request.json();
26-
const { rule_name, rule_code, description, is_active } = body;
26+
const { rule_name, rule_code, description, is_active, policy } = body;
2727

2828
// Validate required fields
2929
if (!rule_name || typeof rule_name !== "string") {
@@ -40,6 +40,13 @@ export const POST: RequestHandler = async ({ request, locals }) => {
4040
);
4141
}
4242

43+
if (!policy || typeof policy !== "string") {
44+
return json(
45+
{ error: "policy is required and must be a string" },
46+
{ status: 400 },
47+
);
48+
}
49+
4350
logger.info("Creating ABAC rule");
4451
logger.info(`Rule Name: ${rule_name}`);
4552
logger.info(`Rule Code: ${rule_code}`);
@@ -55,6 +62,8 @@ export const POST: RequestHandler = async ({ request, locals }) => {
5562
requestBody.description = description;
5663
}
5764

65+
requestBody.policy = policy;
66+
5867
const endpoint = `/obp/v6.0.0/management/abac-rules`;
5968
logger.info(`POST ${endpoint}`);
6069
logger.info(

‎src/routes/api/abac-rules/[rule_id]/+server.ts‎

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const PUT: RequestHandler = async ({ request, locals, params }) => {
2929

3030
try {
3131
const body = await request.json();
32-
const { rule_name, rule_code, description, is_active } = body;
32+
const { rule_name, rule_code, description, is_active, policy } = body;
3333

3434
// Validate required fields
3535
if (!rule_name || typeof rule_name !== "string") {
@@ -46,6 +46,13 @@ export const PUT: RequestHandler = async ({ request, locals, params }) => {
4646
);
4747
}
4848

49+
if (!policy || typeof policy !== "string") {
50+
return json(
51+
{ error: "policy is required and must be a string" },
52+
{ status: 400 },
53+
);
54+
}
55+
4956
logger.info(`Updating ABAC rule: ${ruleId}`);
5057
logger.info(`Rule Name: ${rule_name}`);
5158
logger.info(`Rule Code: ${rule_code}`);
@@ -61,18 +68,16 @@ export const PUT: RequestHandler = async ({ request, locals, params }) => {
6168
requestBody.description = description;
6269
}
6370

71+
requestBody.policy = policy;
72+
6473
const endpoint = `/obp/v6.0.0/management/abac-rules/${ruleId}`;
6574
logger.info(`PUT ${endpoint}`);
6675
logger.info(
6776
"Request body being sent to OBP:",
6877
JSON.stringify(requestBody, null, 2),
6978
);
7079

71-
const response = await obp_requests.put(
72-
endpoint,
73-
requestBody,
74-
accessToken,
75-
);
80+
const response = await obp_requests.put(endpoint, requestBody, accessToken);
7681

7782
logger.info("ABAC rule updated successfully");
7883
logger.info("OBP API response:", JSON.stringify(response, null, 2));

0 commit comments

Comments
 (0)