diff --git a/ui/src/pages/Admin/ClaimMappingRulesModal.tsx b/ui/src/pages/Admin/ClaimMappingRulesModal.tsx
index dde57ec8..37dea3a7 100644
--- a/ui/src/pages/Admin/ClaimMappingRulesModal.tsx
+++ b/ui/src/pages/Admin/ClaimMappingRulesModal.tsx
@@ -10,6 +10,7 @@ import {
} from '../../api/queries/admin/claim-mappings';
import type { ClaimMappingRule, TestResponse } from '../../api/queries/admin/claim-mappings';
import { useRoles, useGroups } from '../../api/queries/admin/rbac';
+import { describeApiError } from '../../api/errors';
import styles from './ClaimMappingRulesModal.module.css';
const MATCH_OPTIONS = [
@@ -231,8 +232,8 @@ export default function ClaimMappingRulesModal({ open, onClose }: Props) {
toast({ title: 'Rules saved', variant: 'success' });
handleClose();
- } catch (e: any) {
- toast({ title: 'Failed to save rules', description: e.message, variant: 'error', duration: 86_400_000 });
+ } catch (e) {
+ toast({ title: 'Failed to save rules', description: describeApiError(e), variant: 'error', duration: 86_400_000 });
} finally {
setApplying(false);
}
@@ -256,7 +257,7 @@ export default function ClaimMappingRulesModal({ open, onClose }: Props) {
}));
testRules.mutate({ rules, claims }, {
onSuccess: (result) => setTestResult(result),
- onError: (e) => setTestError(e.message),
+ onError: (e) => setTestError(describeApiError(e)),
});
}
diff --git a/ui/src/pages/Admin/OidcConfigPage.tsx b/ui/src/pages/Admin/OidcConfigPage.tsx
index 72116eff..69cd971a 100644
--- a/ui/src/pages/Admin/OidcConfigPage.tsx
+++ b/ui/src/pages/Admin/OidcConfigPage.tsx
@@ -8,6 +8,7 @@ import { PageLoader } from '../../components/PageLoader';
import { adminFetch } from '../../api/queries/admin/admin-api';
import ClaimMappingRulesModal from './ClaimMappingRulesModal';
import { useClaimMappingRules } from '../../api/queries/admin/claim-mappings';
+import { describeApiError } from '../../api/errors';
import styles from './OidcConfigPage.module.css';
import sectionStyles from '../../styles/section-card.module.css';
@@ -114,8 +115,8 @@ export default function OidcConfigPage() {
setFormDraft(null);
setEditing(false);
toast({ title: 'Settings saved', description: 'OIDC configuration updated successfully.', variant: 'success' });
- } catch (e: any) {
- toast({ title: 'Failed to save OIDC configuration', description: e.message, variant: 'error', duration: 86_400_000 });
+ } catch (e) {
+ toast({ title: 'Failed to save OIDC configuration', description: describeApiError(e), variant: 'error', duration: 86_400_000 });
} finally {
setSaving(false);
}
@@ -127,8 +128,8 @@ export default function OidcConfigPage() {
try {
const result = await adminFetch<{ status: string; authorizationEndpoint?: string }>('/oidc/test', { method: 'POST' });
toast({ title: 'Connection test', description: `OIDC provider responded: ${result.status}`, variant: 'success' });
- } catch (e: any) {
- toast({ title: 'Connection test failed', description: e.message, variant: 'error', duration: 86_400_000 });
+ } catch (e) {
+ toast({ title: 'Connection test failed', description: describeApiError(e), variant: 'error', duration: 86_400_000 });
} finally {
setTesting(false);
}
@@ -142,8 +143,8 @@ export default function OidcConfigPage() {
setFormDraft(null);
setEditing(false);
toast({ title: 'Configuration deleted', description: 'OIDC configuration has been removed.', variant: 'warning' });
- } catch (e: any) {
- toast({ title: 'Failed to delete OIDC configuration', description: e.message, variant: 'error', duration: 86_400_000 });
+ } catch (e) {
+ toast({ title: 'Failed to delete OIDC configuration', description: describeApiError(e), variant: 'error', duration: 86_400_000 });
}
}
diff --git a/ui/src/pages/Admin/OutboundConnectionsPage.tsx b/ui/src/pages/Admin/OutboundConnectionsPage.tsx
index de4c3429..1d34729f 100644
--- a/ui/src/pages/Admin/OutboundConnectionsPage.tsx
+++ b/ui/src/pages/Admin/OutboundConnectionsPage.tsx
@@ -16,7 +16,7 @@ export default function OutboundConnectionsPage() {
const { toast } = useToast();
if (isLoading) return