@burdenoff/microfe-auth 2026.528.1 → 2026.528.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/hooks/useMfaOperations.js.map +1 -1
- package/dist/auth/pages/LoginPage.js +124 -117
- package/dist/auth/pages/LoginPage.js.map +1 -1
- package/dist/auth/pages/MfaVerifyPage.js +10 -10
- package/dist/auth/pages/SsoConfigPage.js +59 -85
- package/dist/auth/pages/SsoConfigPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,8 +4,8 @@ import { useAuthPermissions as r } from "../hooks/useAuthPermissions.js";
|
|
|
4
4
|
import { ConfirmActionDialog as i } from "../components/ConfirmActionDialog.js";
|
|
5
5
|
import { nativeCopyText as a, nativeImpact as o, nativeNotify as s } from "../../utils/nativeBridge.js";
|
|
6
6
|
import { useCallback as c, useEffect as l, useRef as ee, useState as u } from "react";
|
|
7
|
-
import { useNavigate as te, useSearchParams as
|
|
8
|
-
import { useI18n as
|
|
7
|
+
import { useNavigate as te, useSearchParams as ne } from "react-router-dom";
|
|
8
|
+
import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
9
|
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
10
10
|
import { useFeatureFlagDetails as re } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
11
11
|
//#region src/auth/pages/SsoConfigPage.tsx
|
|
@@ -46,7 +46,7 @@ function g(e) {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
49
|
-
let _ = te(), [v] =
|
|
49
|
+
let _ = te(), [v] = ne(), { canManageSsoConfig: ie, isLoading: ae } = r(), oe = re("workspace.auth.enterprise-sso"), se = a || oe?.value === !0, y = ee(null), b = v.get("tenant"), x = v.get("org"), S = v.get("workspace"), { ssoConfig: C, oidcConfig: w, isLoading: T, isSaving: E, isDeleting: D, saveSsoConfig: O, deleteSsoConfig: k } = n(b ?? "burdenoff.com"), { t: A } = d(), j = c((e, t) => {
|
|
50
50
|
let n = A(e);
|
|
51
51
|
return n === e ? t : n;
|
|
52
52
|
}, [A]), [M, ce] = u("saml"), [N, P] = u(!1), [le, F] = u(!1), [I, L] = u(null), [R, z] = u(null), [B, V] = u(""), [H, U] = u(!1), [W, G] = u(!1), [K, q] = u({
|
|
@@ -62,14 +62,14 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
62
62
|
enabled: !1
|
|
63
63
|
});
|
|
64
64
|
return l(() => {
|
|
65
|
-
|
|
66
|
-
entityId:
|
|
67
|
-
ssoUrl:
|
|
68
|
-
sloUrl:
|
|
69
|
-
certificate:
|
|
70
|
-
enabled:
|
|
65
|
+
C && $({
|
|
66
|
+
entityId: C.entityId || "",
|
|
67
|
+
ssoUrl: C.ssoUrl || "",
|
|
68
|
+
sloUrl: C.sloUrl || "",
|
|
69
|
+
certificate: C.certificate || "",
|
|
70
|
+
enabled: C.enabled || !1
|
|
71
71
|
});
|
|
72
|
-
}, [
|
|
72
|
+
}, [C]), ae ? /* @__PURE__ */ p("div", {
|
|
73
73
|
className: "max-w-5xl mx-auto p-6",
|
|
74
74
|
children: /* @__PURE__ */ m("div", {
|
|
75
75
|
className: "text-center py-16",
|
|
@@ -78,7 +78,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
78
78
|
children: j("auth.sso.loadingPermissions", "Loading permissions...")
|
|
79
79
|
})]
|
|
80
80
|
})
|
|
81
|
-
}) :
|
|
81
|
+
}) : ie ? se ? /* @__PURE__ */ m("div", {
|
|
82
82
|
className: "max-w-5xl mx-auto p-6",
|
|
83
83
|
children: [
|
|
84
84
|
/* @__PURE__ */ p(i, {
|
|
@@ -88,11 +88,11 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
88
88
|
description: j("auth.sso.deleteConfirmDesc", "Users will immediately lose the ability to sign in with this SSO setup until a new configuration is saved."),
|
|
89
89
|
confirmText: j("auth.sso.deleteConfirmButton", "Delete configuration"),
|
|
90
90
|
variant: "danger",
|
|
91
|
-
isPending:
|
|
91
|
+
isPending: D,
|
|
92
92
|
onConfirm: async () => {
|
|
93
93
|
L(null), z(null), o("medium");
|
|
94
94
|
try {
|
|
95
|
-
await
|
|
95
|
+
await k(), s("success"), z(j("auth.sso.deleteSuccess", "SSO configuration deleted successfully.")), F(!1), $({
|
|
96
96
|
entityId: "",
|
|
97
97
|
ssoUrl: "",
|
|
98
98
|
sloUrl: "",
|
|
@@ -133,7 +133,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
133
133
|
className: "text-text-secondary mt-1",
|
|
134
134
|
children: j("auth.sso.description", "Configure enterprise SSO with SAML 2.0 or OIDC")
|
|
135
135
|
})] })]
|
|
136
|
-
}),
|
|
136
|
+
}), C && /* @__PURE__ */ m("div", {
|
|
137
137
|
className: "flex items-center gap-3",
|
|
138
138
|
children: [/* @__PURE__ */ p("span", {
|
|
139
139
|
className: `px-3 py-1 rounded-full text-sm font-medium ${Q.enabled ? "bg-status-success-bg-subtle text-status-success-text" : "bg-bg-sunken text-text-secondary"}`,
|
|
@@ -143,7 +143,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
143
143
|
onClick: async () => {
|
|
144
144
|
L(null);
|
|
145
145
|
try {
|
|
146
|
-
await
|
|
146
|
+
await O({
|
|
147
147
|
...Q,
|
|
148
148
|
enabled: !Q.enabled
|
|
149
149
|
}), z(Q.enabled ? j("auth.sso.ssoDisabled", "SSO disabled") : j("auth.sso.ssoEnabled", "SSO enabled"));
|
|
@@ -151,13 +151,13 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
151
151
|
L(e instanceof Error ? e.message : j("auth.sso.statusUpdateFailed", "Failed to update status"));
|
|
152
152
|
}
|
|
153
153
|
},
|
|
154
|
-
disabled:
|
|
154
|
+
disabled: E,
|
|
155
155
|
className: "px-4 py-2 rounded-lg border border-border-default text-text-primary hover:bg-bg-sunken transition-colors text-sm font-medium",
|
|
156
156
|
children: Q.enabled ? j("auth.sso.disable", "Disable") : j("auth.sso.enable", "Enable")
|
|
157
157
|
})]
|
|
158
158
|
})]
|
|
159
159
|
}),
|
|
160
|
-
a && (
|
|
160
|
+
a && (b ?? x ?? S) && /* @__PURE__ */ m("div", {
|
|
161
161
|
className: "mb-6 p-4 rounded-xl bg-status-info-bg-subtle border border-status-info-border",
|
|
162
162
|
children: [/* @__PURE__ */ p("p", {
|
|
163
163
|
className: "text-sm font-medium text-status-info-text mb-1",
|
|
@@ -165,7 +165,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
165
165
|
}), /* @__PURE__ */ m("div", {
|
|
166
166
|
className: "flex flex-wrap gap-4 text-xs text-status-info-text",
|
|
167
167
|
children: [
|
|
168
|
-
|
|
168
|
+
b && /* @__PURE__ */ m("span", { children: [
|
|
169
169
|
/* @__PURE__ */ p("span", {
|
|
170
170
|
className: "font-medium",
|
|
171
171
|
children: j("auth.sso.tenant", "Tenant:")
|
|
@@ -173,10 +173,10 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
173
173
|
" ",
|
|
174
174
|
/* @__PURE__ */ p("code", {
|
|
175
175
|
className: "font-mono",
|
|
176
|
-
children:
|
|
176
|
+
children: b
|
|
177
177
|
})
|
|
178
178
|
] }),
|
|
179
|
-
|
|
179
|
+
x && /* @__PURE__ */ m("span", { children: [
|
|
180
180
|
/* @__PURE__ */ p("span", {
|
|
181
181
|
className: "font-medium",
|
|
182
182
|
children: j("auth.sso.organization", "Organization:")
|
|
@@ -184,10 +184,10 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
184
184
|
" ",
|
|
185
185
|
/* @__PURE__ */ p("code", {
|
|
186
186
|
className: "font-mono",
|
|
187
|
-
children:
|
|
187
|
+
children: x
|
|
188
188
|
})
|
|
189
189
|
] }),
|
|
190
|
-
|
|
190
|
+
S && /* @__PURE__ */ m("span", { children: [
|
|
191
191
|
/* @__PURE__ */ p("span", {
|
|
192
192
|
className: "font-medium",
|
|
193
193
|
children: j("auth.sso.workspace", "Workspace:")
|
|
@@ -195,7 +195,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
195
195
|
" ",
|
|
196
196
|
/* @__PURE__ */ p("code", {
|
|
197
197
|
className: "font-mono",
|
|
198
|
-
children:
|
|
198
|
+
children: S
|
|
199
199
|
})
|
|
200
200
|
] })
|
|
201
201
|
]
|
|
@@ -276,14 +276,14 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
276
276
|
}, e.id))
|
|
277
277
|
})
|
|
278
278
|
}),
|
|
279
|
-
|
|
279
|
+
T && /* @__PURE__ */ m("div", {
|
|
280
280
|
className: "flex items-center justify-center py-12",
|
|
281
281
|
children: [/* @__PURE__ */ p(t, { className: "size-8 text-text-link animate-spin" }), /* @__PURE__ */ p("span", {
|
|
282
282
|
className: "ml-3 text-text-secondary",
|
|
283
283
|
children: j("auth.sso.loadingConfig", "Loading configuration...")
|
|
284
284
|
})]
|
|
285
285
|
}),
|
|
286
|
-
!
|
|
286
|
+
!T && M === "saml" && /* @__PURE__ */ m("div", {
|
|
287
287
|
className: "space-y-6",
|
|
288
288
|
children: [
|
|
289
289
|
/* @__PURE__ */ m("div", {
|
|
@@ -328,7 +328,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
328
328
|
children: j("auth.sso.uploadFile", "Upload Metadata File")
|
|
329
329
|
}),
|
|
330
330
|
/* @__PURE__ */ p("input", {
|
|
331
|
-
ref:
|
|
331
|
+
ref: y,
|
|
332
332
|
type: "file",
|
|
333
333
|
accept: ".xml,application/xml,text/xml",
|
|
334
334
|
onChange: async (e) => {
|
|
@@ -347,7 +347,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
347
347
|
} catch {
|
|
348
348
|
L(j("auth.sso.readError", "Failed to read metadata file"));
|
|
349
349
|
} finally {
|
|
350
|
-
U(!1),
|
|
350
|
+
U(!1), y.current && (y.current.value = "");
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
353
|
},
|
|
@@ -484,7 +484,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
484
484
|
onSubmit: async (e) => {
|
|
485
485
|
e.preventDefault(), L(null), z(null);
|
|
486
486
|
try {
|
|
487
|
-
await
|
|
487
|
+
await O(Q), z(j("auth.sso.saveSuccess", "SSO configuration saved successfully!")), P(!1);
|
|
488
488
|
} catch (e) {
|
|
489
489
|
L(e instanceof Error ? e.message : j("auth.sso.saveFailed", "Failed to save configuration"));
|
|
490
490
|
}
|
|
@@ -496,7 +496,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
496
496
|
children: [/* @__PURE__ */ p("h3", {
|
|
497
497
|
className: "text-lg font-medium text-text-primary",
|
|
498
498
|
children: j("auth.sso.idpSettings", "Identity Provider (IdP) Settings")
|
|
499
|
-
}), !N &&
|
|
499
|
+
}), !N && C && /* @__PURE__ */ p("button", {
|
|
500
500
|
type: "button",
|
|
501
501
|
onClick: () => P(!0),
|
|
502
502
|
className: "px-4 py-2 rounded-lg border border-status-info-border text-text-link hover:bg-status-info-bg-subtle text-sm font-medium transition-colors",
|
|
@@ -529,7 +529,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
529
529
|
...Q,
|
|
530
530
|
entityId: e.target.value
|
|
531
531
|
}),
|
|
532
|
-
disabled: !N && !!
|
|
532
|
+
disabled: !N && !!C,
|
|
533
533
|
placeholder: j("auth.sso.idpEntityIdPlaceholder", "https://your-idp.example.com/saml/metadata"),
|
|
534
534
|
required: !0,
|
|
535
535
|
"aria-required": "true",
|
|
@@ -565,7 +565,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
565
565
|
...Q,
|
|
566
566
|
ssoUrl: e.target.value
|
|
567
567
|
}),
|
|
568
|
-
disabled: !N && !!
|
|
568
|
+
disabled: !N && !!C,
|
|
569
569
|
placeholder: j("auth.sso.ssoUrlPlaceholder", "https://your-idp.example.com/saml/sso"),
|
|
570
570
|
required: !0,
|
|
571
571
|
"aria-required": "true",
|
|
@@ -578,32 +578,6 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
578
578
|
children: j("auth.sso.ssoUrlHelper", "The URL where users are redirected to authenticate")
|
|
579
579
|
})
|
|
580
580
|
] }),
|
|
581
|
-
/* @__PURE__ */ m("div", { children: [
|
|
582
|
-
/* @__PURE__ */ p("label", {
|
|
583
|
-
htmlFor: "sso-slo-url",
|
|
584
|
-
className: "block text-sm font-medium text-text-primary mb-2",
|
|
585
|
-
children: j("auth.sso.sloUrl", "Single Logout (SLO) URL")
|
|
586
|
-
}),
|
|
587
|
-
/* @__PURE__ */ p("input", {
|
|
588
|
-
id: "sso-slo-url",
|
|
589
|
-
type: "url",
|
|
590
|
-
"aria-label": j("auth.sso.sloUrl", "Single Logout (SLO) URL"),
|
|
591
|
-
value: Q.sloUrl,
|
|
592
|
-
onChange: (e) => $({
|
|
593
|
-
...Q,
|
|
594
|
-
sloUrl: e.target.value
|
|
595
|
-
}),
|
|
596
|
-
disabled: !N && !!w,
|
|
597
|
-
placeholder: j("auth.sso.sloUrlPlaceholder", "https://your-idp.example.com/saml/slo"),
|
|
598
|
-
"aria-describedby": "sso-slo-url-hint",
|
|
599
|
-
className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg disabled:opacity-60 disabled:cursor-not-allowed transition-all"
|
|
600
|
-
}),
|
|
601
|
-
/* @__PURE__ */ p("p", {
|
|
602
|
-
id: "sso-slo-url-hint",
|
|
603
|
-
className: "mt-1 text-xs text-text-secondary",
|
|
604
|
-
children: j("auth.sso.sloUrlHelper", "Optional: URL for single logout across all applications")
|
|
605
|
-
})
|
|
606
|
-
] }),
|
|
607
581
|
/* @__PURE__ */ m("div", { children: [
|
|
608
582
|
/* @__PURE__ */ m("label", {
|
|
609
583
|
htmlFor: "sso-certificate",
|
|
@@ -626,7 +600,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
626
600
|
...Q,
|
|
627
601
|
certificate: e.target.value
|
|
628
602
|
}),
|
|
629
|
-
disabled: !N && !!
|
|
603
|
+
disabled: !N && !!C,
|
|
630
604
|
placeholder: j("auth.sso.certificatePlaceholder", "-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAX...\n-----END CERTIFICATE-----"),
|
|
631
605
|
required: !0,
|
|
632
606
|
"aria-required": "true",
|
|
@@ -642,22 +616,22 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
642
616
|
] })
|
|
643
617
|
]
|
|
644
618
|
}),
|
|
645
|
-
(N || !
|
|
619
|
+
(N || !C) && /* @__PURE__ */ m("div", {
|
|
646
620
|
className: "mt-6 flex items-center gap-3",
|
|
647
621
|
children: [/* @__PURE__ */ p("button", {
|
|
648
622
|
type: "submit",
|
|
649
|
-
disabled:
|
|
623
|
+
disabled: E,
|
|
650
624
|
className: "auth-primary-button flex items-center gap-2 px-6 py-3 font-medium",
|
|
651
|
-
children:
|
|
625
|
+
children: E ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(t, { className: "size-4 animate-spin" }), j("auth.sso.saving", "Saving...")] }) : j("auth.sso.saveConfig", "Save Configuration")
|
|
652
626
|
}), N && /* @__PURE__ */ p("button", {
|
|
653
627
|
type: "button",
|
|
654
628
|
onClick: () => {
|
|
655
|
-
P(!1),
|
|
656
|
-
entityId:
|
|
657
|
-
ssoUrl:
|
|
658
|
-
sloUrl:
|
|
659
|
-
certificate:
|
|
660
|
-
enabled:
|
|
629
|
+
P(!1), C && $({
|
|
630
|
+
entityId: C.entityId || "",
|
|
631
|
+
ssoUrl: C.ssoUrl || "",
|
|
632
|
+
sloUrl: C.sloUrl || "",
|
|
633
|
+
certificate: C.certificate || "",
|
|
634
|
+
enabled: C.enabled || !1
|
|
661
635
|
});
|
|
662
636
|
},
|
|
663
637
|
className: "px-6 py-3 rounded-xl border border-border-default text-text-primary font-medium hover:bg-bg-sunken transition-colors",
|
|
@@ -666,7 +640,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
666
640
|
})
|
|
667
641
|
]
|
|
668
642
|
}),
|
|
669
|
-
|
|
643
|
+
C && /* @__PURE__ */ m("div", {
|
|
670
644
|
className: "p-6 rounded-xl border border-status-error-border bg-status-error-bg-subtle",
|
|
671
645
|
children: [
|
|
672
646
|
/* @__PURE__ */ p("h3", {
|
|
@@ -680,15 +654,15 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
680
654
|
/* @__PURE__ */ p("button", {
|
|
681
655
|
type: "button",
|
|
682
656
|
onClick: () => F(!0),
|
|
683
|
-
disabled:
|
|
657
|
+
disabled: D,
|
|
684
658
|
className: "px-4 py-2 rounded-lg bg-status-error-bg text-white font-medium hover:bg-status-error-bg-hover disabled:opacity-50 transition-colors flex items-center gap-2",
|
|
685
|
-
children:
|
|
659
|
+
children: D ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(t, { className: "size-4 animate-spin" }), j("auth.sso.deleting", "Deleting...")] }) : j("auth.sso.deleteConfig", "Delete SSO Configuration")
|
|
686
660
|
})
|
|
687
661
|
]
|
|
688
662
|
})
|
|
689
663
|
]
|
|
690
664
|
}),
|
|
691
|
-
!
|
|
665
|
+
!T && M === "oidc" && /* @__PURE__ */ m("div", {
|
|
692
666
|
className: "space-y-6",
|
|
693
667
|
children: [
|
|
694
668
|
/* @__PURE__ */ m("div", {
|
|
@@ -716,21 +690,21 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
716
690
|
className: "flex items-center gap-2",
|
|
717
691
|
children: [/* @__PURE__ */ p("code", {
|
|
718
692
|
className: "flex-1 px-3 py-2 rounded-lg bg-bg-sunken text-sm text-text-primary font-mono break-all",
|
|
719
|
-
children:
|
|
693
|
+
children: w?.issuer ? `${w.issuer}/.well-known/openid-configuration` : "Discovery endpoint unavailable until OIDC is configured"
|
|
720
694
|
}), /* @__PURE__ */ p("button", {
|
|
721
695
|
type: "button",
|
|
722
696
|
onClick: () => {
|
|
723
|
-
let e =
|
|
697
|
+
let e = w?.issuer ? `${w.issuer}/.well-known/openid-configuration` : "";
|
|
724
698
|
e && h(e);
|
|
725
699
|
},
|
|
726
|
-
disabled: !
|
|
700
|
+
disabled: !w?.issuer,
|
|
727
701
|
className: "px-3 py-2 rounded-lg border border-border-default text-text-secondary hover:bg-bg-sunken flex-shrink-0",
|
|
728
702
|
children: j("auth.sso.copy", "Copy")
|
|
729
703
|
})]
|
|
730
704
|
})
|
|
731
705
|
]
|
|
732
706
|
}),
|
|
733
|
-
|
|
707
|
+
w && /* @__PURE__ */ m("div", {
|
|
734
708
|
className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
|
|
735
709
|
children: [/* @__PURE__ */ p("h3", {
|
|
736
710
|
className: "text-lg font-medium text-text-primary mb-4",
|
|
@@ -740,23 +714,23 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
740
714
|
children: [
|
|
741
715
|
{
|
|
742
716
|
label: j("auth.sso.issuer", "Issuer"),
|
|
743
|
-
value:
|
|
717
|
+
value: w.issuer
|
|
744
718
|
},
|
|
745
719
|
{
|
|
746
720
|
label: j("auth.sso.authorizationEndpoint", "Authorization Endpoint"),
|
|
747
|
-
value:
|
|
721
|
+
value: w.authorizationEndpoint
|
|
748
722
|
},
|
|
749
723
|
{
|
|
750
724
|
label: j("auth.sso.tokenEndpoint", "Token Endpoint"),
|
|
751
|
-
value:
|
|
725
|
+
value: w.tokenEndpoint
|
|
752
726
|
},
|
|
753
727
|
{
|
|
754
728
|
label: j("auth.sso.userinfoEndpoint", "UserInfo Endpoint"),
|
|
755
|
-
value:
|
|
729
|
+
value: w.userinfoEndpoint
|
|
756
730
|
},
|
|
757
731
|
{
|
|
758
732
|
label: j("auth.sso.jwksUri", "JWKS URI"),
|
|
759
|
-
value:
|
|
733
|
+
value: w.jwksUri
|
|
760
734
|
}
|
|
761
735
|
].map((e) => /* @__PURE__ */ m("div", {
|
|
762
736
|
className: "flex items-start gap-4",
|
|
@@ -813,7 +787,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
813
787
|
})
|
|
814
788
|
]
|
|
815
789
|
}),
|
|
816
|
-
!
|
|
790
|
+
!T && M === "clients" && /* @__PURE__ */ m("div", {
|
|
817
791
|
className: "space-y-6",
|
|
818
792
|
children: [
|
|
819
793
|
/* @__PURE__ */ m("div", {
|
|
@@ -1052,7 +1026,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
1052
1026
|
}
|
|
1053
1027
|
Y(!0), L(null);
|
|
1054
1028
|
try {
|
|
1055
|
-
let e =
|
|
1029
|
+
let e = w?.registrationEndpoint;
|
|
1056
1030
|
if (!e) throw Error(j("auth.sso.oidcNotConfigured", "OIDC dynamic client registration is not configured for this environment."));
|
|
1057
1031
|
let t = await fetch(e, {
|
|
1058
1032
|
method: "POST",
|
|
@@ -1165,7 +1139,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
1165
1139
|
})
|
|
1166
1140
|
]
|
|
1167
1141
|
}),
|
|
1168
|
-
!
|
|
1142
|
+
!T && M === "test" && /* @__PURE__ */ m("div", {
|
|
1169
1143
|
className: "space-y-6",
|
|
1170
1144
|
children: [
|
|
1171
1145
|
/* @__PURE__ */ m("div", {
|
|
@@ -1189,7 +1163,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
1189
1163
|
className: "text-sm text-text-secondary mb-4",
|
|
1190
1164
|
children: j("auth.sso.spInitiatedTestDesc", "Click the button below to initiate an SSO login flow. You will be redirected to your IdP to authenticate.")
|
|
1191
1165
|
}),
|
|
1192
|
-
|
|
1166
|
+
C && C.enabled ? /* @__PURE__ */ m("a", {
|
|
1193
1167
|
href: `${window.location.origin}/auth/sso/login`,
|
|
1194
1168
|
className: "inline-flex items-center gap-2 px-6 py-3 rounded-xl bg-status-success-bg text-white font-medium shadow-sm hover:opacity-90 transition-all duration-200",
|
|
1195
1169
|
children: [/* @__PURE__ */ p("svg", {
|
|
@@ -1206,7 +1180,7 @@ function _({ bypassEnterprisePlanGate: a = !1 }) {
|
|
|
1206
1180
|
}), j("auth.sso.testSsoLoginButton", "Test SSO Login")]
|
|
1207
1181
|
}) : /* @__PURE__ */ p("div", {
|
|
1208
1182
|
className: "p-4 rounded-xl bg-bg-sunken/50 text-text-secondary text-sm",
|
|
1209
|
-
children:
|
|
1183
|
+
children: C ? j("auth.sso.disabledTest", "SSO is disabled. Enable it to test the login flow.") : j("auth.sso.notConfigured", "SSO is not configured. Please configure your IdP settings first.")
|
|
1210
1184
|
})
|
|
1211
1185
|
]
|
|
1212
1186
|
}),
|