Skip to content

Commit 8baeed1

Browse files
committed
Memberships OK
1 parent b66e5f1 commit 8baeed1

4 files changed

Lines changed: 94 additions & 13 deletions

File tree

src/routes/(protected)/rbac/groups/[group_id]/+page.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export const load: PageServerLoad = async ({ locals, params }) => {
8585
entitlementsEndpoint,
8686
accessToken,
8787
);
88-
entitlements = entitlementsResponse.list || [];
88+
entitlements = entitlementsResponse.entitlements || [];
8989
logger.info(`Response: ${entitlements.length} entitlements found`);
9090
} catch (err) {
9191
logger.error("Error fetching group entitlements:", err);

src/routes/(protected)/rbac/memberships/+page.server.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,17 @@ export const load: PageServerLoad = async ({ locals }) => {
9999
accessToken,
100100
);
101101

102-
const entitlements = entitlementsResponse.list || [];
103102
logger.info(
104-
`Group ${group.group_id} has ${entitlements.length} entitlements`,
103+
`Raw entitlements response for group ${group.group_id}:`,
104+
JSON.stringify(entitlementsResponse, null, 2),
105+
);
106+
logger.info(
107+
`Response keys: ${Object.keys(entitlementsResponse).join(", ")}`,
108+
);
109+
110+
const entitlements = entitlementsResponse.entitlements || [];
111+
logger.info(
112+
`Group ${group.group_id} (${group.group_name}) has ${entitlements.length} entitlements`,
105113
);
106114

107115
groupsWithEntitlements.push({

src/routes/(protected)/rbac/memberships/+page.svelte

Lines changed: 82 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
ChevronDown,
88
ChevronUp,
99
AlertCircle,
10+
Plus,
1011
} from "@lucide/svelte";
1112
import PageRoleCheck from "$lib/components/PageRoleCheck.svelte";
1213
@@ -18,6 +19,25 @@
1819
let userEntitlements = $derived(data.userEntitlements || []);
1920
let requiredRoles = $derived(data.requiredRoles || []);
2021
22+
// Debug logging
23+
$effect(() => {
24+
console.log("=== MEMBERSHIPS PAGE DEBUG ===");
25+
console.log("groupsWithEntitlements:", groupsWithEntitlements);
26+
console.log(
27+
"groupsWithEntitlements.length:",
28+
groupsWithEntitlements.length,
29+
);
30+
console.log("hasApiAccess:", hasApiAccess);
31+
console.log("error:", error);
32+
if (groupsWithEntitlements.length > 0) {
33+
console.log("First group:", groupsWithEntitlements[0]);
34+
console.log(
35+
"First group entitlements:",
36+
groupsWithEntitlements[0].entitlements,
37+
);
38+
}
39+
});
40+
2141
// Track expanded groups
2242
let expandedGroups = $state<Set<string>>(new Set());
2343
@@ -54,15 +74,21 @@
5474
<div class="panel">
5575
<div class="panel-header">
5676
<div class="header-content">
57-
<div class="header-icon">
58-
<Users size={32} />
59-
</div>
60-
<div>
61-
<h1 class="panel-title">Group Memberships</h1>
62-
<div class="panel-subtitle">
63-
View groups and their assigned entitlements
77+
<div class="header-left">
78+
<div class="header-icon">
79+
<Users size={32} />
80+
</div>
81+
<div>
82+
<h1 class="panel-title">Group Memberships</h1>
83+
<div class="panel-subtitle">
84+
View groups and their assigned entitlements
85+
</div>
6486
</div>
6587
</div>
88+
<a href="/rbac/memberships/create" class="btn-create">
89+
<Plus size={16} />
90+
Create Membership
91+
</a>
6692
</div>
6793
</div>
6894

@@ -224,8 +250,16 @@
224250
225251
.header-content {
226252
display: flex;
227-
align-items: center;
253+
justify-content: space-between;
254+
align-items: flex-start;
255+
gap: 2rem;
256+
}
257+
258+
.header-left {
259+
display: flex;
260+
align-items: flex-start;
228261
gap: 1rem;
262+
flex: 1;
229263
}
230264
231265
.header-icon {
@@ -621,10 +655,49 @@
621655
color: rgb(var(--color-primary-300));
622656
}
623657
658+
.btn-create {
659+
display: inline-flex;
660+
align-items: center;
661+
gap: 0.5rem;
662+
padding: 0.75rem 1.5rem;
663+
background: #22c55e;
664+
color: white;
665+
border: none;
666+
border-radius: 6px;
667+
font-size: 0.875rem;
668+
font-weight: 600;
669+
cursor: pointer;
670+
transition: all 0.2s;
671+
text-decoration: none;
672+
white-space: nowrap;
673+
flex-shrink: 0;
674+
}
675+
676+
.btn-create:hover {
677+
background: #16a34a;
678+
}
679+
680+
:global([data-mode="dark"]) .btn-create {
681+
background: #22c55e;
682+
}
683+
684+
:global([data-mode="dark"]) .btn-create:hover {
685+
background: #16a34a;
686+
}
687+
624688
@media (max-width: 768px) {
625689
.header-content {
626690
flex-direction: column;
627-
align-items: flex-start;
691+
align-items: stretch;
692+
}
693+
694+
.header-left {
695+
width: 100%;
696+
}
697+
698+
.btn-create {
699+
width: 100%;
700+
justify-content: center;
628701
}
629702
630703
.stats {

src/routes/api/rbac/memberships/+server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export const GET: RequestHandler = async ({ locals }) => {
170170
accessToken,
171171
);
172172

173-
const entitlements = entitlementsResponse.list || [];
173+
const entitlements = entitlementsResponse.entitlements || [];
174174
logger.info(
175175
`Group ${group.group_id} has ${entitlements.length} entitlements`,
176176
);

0 commit comments

Comments
 (0)