Skip to content

Commit 4a38e39

Browse files
committed
Using Require Role Widget
1 parent 1acc26f commit 4a38e39

File tree

6 files changed

+51
-0
lines changed

6 files changed

+51
-0
lines changed

src/routes/(protected)/users/+page.server.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,17 @@ export const load: PageServerLoad = async ({ locals }) => {
3131
const sessionOAuth = SessionOAuthHelper.getSessionOAuth(session);
3232
const accessToken = sessionOAuth?.accessToken;
3333

34+
const userEntitlements = (session.data.user as any)?.entitlements?.list || [];
35+
const requiredRoles = [{ role: "CanGetAnyUser" }];
36+
3437
if (!accessToken) {
3538
logger.warn("No access token available for users API calls");
3639
return {
3740
users: null,
3841
hasApiAccess: false,
3942
error: "No API access token available",
43+
userEntitlements,
44+
requiredRoles,
4045
};
4146
}
4247

@@ -61,13 +66,17 @@ export const load: PageServerLoad = async ({ locals }) => {
6166
return {
6267
users: sortedUsers,
6368
hasApiAccess: true,
69+
userEntitlements,
70+
requiredRoles,
6471
};
6572
} else {
6673
logger.warn("NO USERS DATA IN RESPONSE");
6774
return {
6875
users: [],
6976
hasApiAccess: true,
7077
error: "No users data found in API response",
78+
userEntitlements,
79+
requiredRoles,
7180
};
7281
}
7382
} catch (err) {
@@ -84,6 +93,8 @@ export const load: PageServerLoad = async ({ locals }) => {
8493
users: [],
8594
hasApiAccess: true,
8695
error: err instanceof Error ? err.message : "Failed to load users",
96+
userEntitlements,
97+
requiredRoles,
8798
};
8899
}
89100
};

src/routes/(protected)/users/+page.svelte

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<script lang="ts">
22
import { Mail } from "@lucide/svelte";
3+
import PageRoleCheck from "$lib/components/PageRoleCheck.svelte";
34
import type { PageData } from "./$types";
45
56
let { data } = $props<{ data: PageData }>();
67
8+
const userEntitlements = data.userEntitlements || [];
9+
const requiredRoles = data.requiredRoles || [];
10+
711
let users = $derived(data.users || []);
812
let hasApiAccess = $derived(data.hasApiAccess);
913
let error = $derived(data.error);
@@ -125,6 +129,7 @@
125129
<title>Users - API Manager II</title>
126130
</svelte:head>
127131

132+
<PageRoleCheck {userEntitlements} {requiredRoles}>
128133
<div class="container mx-auto px-4 py-8">
129134
<!-- Error Alert -->
130135
{#if error && !hasApiAccess}
@@ -313,6 +318,7 @@
313318
</div>
314319
</div>
315320
</div>
321+
</PageRoleCheck>
316322

317323
<style>
318324
.container {

src/routes/(protected)/users/[provider]/[username]/+page.server.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ export const load: PageServerLoad = async ({ locals, params }) => {
2929
throw error(400, "Provider and username are required");
3030
}
3131

32+
const userEntitlements = (session.data.user as any)?.entitlements?.list || [];
33+
const requiredRoles = [{ role: "CanGetAnyUser" }];
34+
3235
// Get the OAuth session data
3336
const sessionOAuth = SessionOAuthHelper.getSessionOAuth(session);
3437
const accessToken = sessionOAuth?.accessToken;
@@ -39,6 +42,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
3942
user: null,
4043
hasApiAccess: false,
4144
error: "No API access token available",
45+
userEntitlements,
46+
requiredRoles,
4247
};
4348
}
4449

@@ -58,6 +63,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
5863
provider,
5964
username,
6065
hasApiAccess: true,
66+
userEntitlements,
67+
requiredRoles,
6168
};
6269
} else {
6370
logger.warn("NO USER DATA IN RESPONSE");
@@ -67,6 +74,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
6774
username,
6875
hasApiAccess: true,
6976
error: "User not found",
77+
userEntitlements,
78+
requiredRoles,
7079
};
7180
}
7281
} catch (err) {
@@ -82,6 +91,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
8291
username,
8392
hasApiAccess: false,
8493
error: err instanceof Error ? err.message : "Failed to load user details",
94+
userEntitlements,
95+
requiredRoles,
8596
};
8697
}
8798
};

src/routes/(protected)/users/[provider]/[username]/+page.svelte

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
<script lang="ts">
22
import type { PageData } from "./$types";
3+
import PageRoleCheck from "$lib/components/PageRoleCheck.svelte";
34
45
let { data } = $props<{ data: PageData }>();
56
7+
const userEntitlements = data.userEntitlements || [];
8+
const requiredRoles = data.requiredRoles || [];
9+
610
let user = $derived(data.user);
711
let hasApiAccess = $derived(data.hasApiAccess);
812
let error = $derived(data.error);
@@ -28,6 +32,7 @@
2832
<title>User Details - {data.username} - API Manager II</title>
2933
</svelte:head>
3034

35+
<PageRoleCheck {userEntitlements} {requiredRoles}>
3136
<div class="container mx-auto px-4 py-8">
3237
<!-- Breadcrumb Navigation -->
3338
<nav class="breadcrumb mb-6">
@@ -233,6 +238,7 @@
233238
</div>
234239
{/if}
235240
</div>
241+
</PageRoleCheck>
236242

237243
<style>
238244
.container {

src/routes/(protected)/users/[user_id]/+page.server.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export const load: PageServerLoad = async ({ locals, params }) => {
3232
throw error(400, "User ID is required");
3333
}
3434

35+
const userEntitlements = (session.data.user as any)?.entitlements?.list || [];
36+
const requiredRoles = [{ role: "CanGetAnyUser" }];
37+
3538
// Get the OAuth session data
3639
const sessionOAuth = SessionOAuthHelper.getSessionOAuth(session);
3740
const accessToken = sessionOAuth?.accessToken;
@@ -42,6 +45,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
4245
user: null,
4346
hasApiAccess: false,
4447
error: "No API access token available",
48+
userEntitlements,
49+
requiredRoles,
4550
};
4651
}
4752

@@ -75,6 +80,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
7580
user: response,
7681
user_id,
7782
hasApiAccess: true,
83+
userEntitlements,
84+
requiredRoles,
7885
};
7986
} else {
8087
logger.warn("NO USER DATA IN RESPONSE");
@@ -83,6 +90,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
8390
user_id,
8491
hasApiAccess: true,
8592
error: "User not found",
93+
userEntitlements,
94+
requiredRoles,
8695
};
8796
}
8897
} catch (err) {
@@ -97,6 +106,8 @@ export const load: PageServerLoad = async ({ locals, params }) => {
97106
user_id,
98107
hasApiAccess: false,
99108
error: err instanceof Error ? err.message : "Failed to load user details",
109+
userEntitlements,
110+
requiredRoles,
100111
};
101112
}
102113
};

src/routes/(protected)/users/[user_id]/+page.svelte

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<script lang="ts">
22
import type { PageData } from "./$types";
33
import { Trash2 } from "@lucide/svelte";
4+
import PageRoleCheck from "$lib/components/PageRoleCheck.svelte";
45
56
let { data } = $props<{ data: PageData }>();
67
8+
const userEntitlements = data.userEntitlements || [];
9+
const requiredRoles = data.requiredRoles || [];
10+
711
let user = $derived(data.user);
812
let hasApiAccess = $derived(data.hasApiAccess);
913
let error = $derived(data.error);
@@ -31,6 +35,7 @@
3135
>
3236
</svelte:head>
3337

38+
<PageRoleCheck {userEntitlements} {requiredRoles}>
3439
<div class="container mx-auto px-4 py-8">
3540
<!-- Breadcrumb Navigation -->
3641
<nav class="breadcrumb mb-6">
@@ -233,6 +238,7 @@
233238
</div>
234239
{/if}
235240
</div>
241+
</PageRoleCheck>
236242

237243
<style>
238244
.container {

0 commit comments

Comments
 (0)