diff --git a/backend/internal/model/oidc.go b/backend/internal/model/oidc.go index 0902d125..3e0cfe2c 100644 --- a/backend/internal/model/oidc.go +++ b/backend/internal/model/oidc.go @@ -58,7 +58,7 @@ type OidcClient struct { RequiresReauthentication bool `sortable:"true" filterable:"true"` Credentials OidcClientCredentials LaunchURL *string - IsGroupRestricted bool + IsGroupRestricted bool `sortable:"true" filterable:"true"` AllowedUserGroups []UserGroup `gorm:"many2many:oidc_clients_allowed_user_groups;"` CreatedByID *string diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 50a74506..be9633dc 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -480,5 +480,8 @@ "allowed_oidc_clients_description": "Select the OIDC clients that members of this user group are allowed to sign in to.", "unrestrict_oidc_client": "Unrestrict {clientName}", "confirm_unrestrict_oidc_client_description": "Are you sure you want to unrestrict the OIDC client {clientName}? This will remove all group assignments for this client and any user will be able to sign in.", - "allowed_oidc_clients_updated_successfully": "Allowed OIDC clients updated successfully" + "allowed_oidc_clients_updated_successfully": "Allowed OIDC clients updated successfully", + "yes": "Yes", + "no": "No", + "restricted": "Restricted" } diff --git a/frontend/src/lib/components/table/advanced-table.svelte b/frontend/src/lib/components/table/advanced-table.svelte index 1e2eb1bd..ad8df771 100644 --- a/frontend/src/lib/components/table/advanced-table.svelte +++ b/frontend/src/lib/components/table/advanced-table.svelte @@ -281,7 +281,7 @@ {:else if column.cell} {@render column.cell({ item })} {:else if column.column && typeof item[column.column] === 'boolean'} - {item[column.column] ? m.enabled() : m.disabled()} + {item[column.column] ? m.yes() : m.no()} {:else if column.column} {item[column.column]} {/if} diff --git a/frontend/src/routes/settings/admin/oidc-clients/oidc-client-list.svelte b/frontend/src/routes/settings/admin/oidc-clients/oidc-client-list.svelte index 1d9cac82..e573279d 100644 --- a/frontend/src/routes/settings/admin/oidc-clients/oidc-client-list.svelte +++ b/frontend/src/routes/settings/admin/oidc-clients/oidc-client-list.svelte @@ -26,8 +26,8 @@ const isLightMode = $derived(mode.current === 'light'); const booleanFilterValues = [ - { label: m.enabled(), value: true }, - { label: m.disabled(), value: false } + { label: m.yes(), value: true }, + { label: m.no(), value: false } ]; const columns: AdvancedTableColumn[] = [ @@ -38,8 +38,13 @@ label: m.oidc_allowed_group_count(), column: 'allowedUserGroupsCount', sortable: true, - value: (item) => - item.allowedUserGroupsCount > 0 ? item.allowedUserGroupsCount : m.unrestricted() + value: (item) => (item.isGroupRestricted ? item.allowedUserGroupsCount : '-') + }, + { + label: m.restricted(), + column: 'isGroupRestricted', + sortable: true, + filterableValues: booleanFilterValues }, { label: m.pkce(), diff --git a/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte b/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte index 768285c5..280e0a37 100644 --- a/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte +++ b/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte @@ -24,6 +24,8 @@ allowedOidcClientIds: data.userGroup.allowedOidcClients.map((c) => c.id) }); + let oidcClientSelectionRef: OidcClientSelection; + const userGroupService = new UserGroupService(); const customClaimService = new CustomClaimService(); const backNavigation = backNavigate('/settings/admin/user-groups'); @@ -64,6 +66,7 @@ .updateAllowedOidcClients(userGroup.id, allowedClients) .then(() => { toast.success(m.allowed_oidc_clients_updated_successfully()); + oidcClientSelectionRef.refresh(); }) .catch((e) => { axiosErrorToast(e); @@ -129,7 +132,10 @@ title={m.allowed_oidc_clients()} description={m.allowed_oidc_clients_description()} > - +
; + + export function refresh() { + return tableRef?.refresh(); + } + const isLightMode = $derived(mode.current === 'light'); - const columns: AdvancedTableColumn[] = [ + const columns: AdvancedTableColumn[] = [ { label: 'ID', column: 'id', hidden: true }, { label: m.logo(), key: 'logo', cell: LogoCell }, { label: m.name(), column: 'name', sortable: true }, + { + label: m.oidc_allowed_group_count(), + column: 'allowedUserGroupsCount', + sortable: true, + + value: (item) => (item.isGroupRestricted ? item.allowedUserGroupsCount : '-') + }, + { + label: m.restricted(), + column: 'isGroupRestricted', + sortable: true + }, { label: m.client_launch_url(), column: 'launchURL', @@ -60,6 +78,7 @@ {/snippet} (item.disabled ? m.disabled() : m.enabled()), filterableValues: [ { label: m.enabled(), diff --git a/frontend/src/routes/settings/admin/users/user-list.svelte b/frontend/src/routes/settings/admin/users/user-list.svelte index fb22a2ab..b588dc60 100644 --- a/frontend/src/routes/settings/admin/users/user-list.svelte +++ b/frontend/src/routes/settings/admin/users/user-list.svelte @@ -119,6 +119,7 @@ column: 'disabled', cell: StatusCell, sortable: true, + value: (item) => (item.disabled ? m.disabled() : m.enabled()), filterableValues: [ { label: m.enabled(),