@burdenoff/microfe-auth 2026.518.2 → 2026.518.4
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/AuthRoutes.d.ts.map +1 -1
- package/dist/auth/AuthRoutes.js +129 -119
- package/dist/auth/AuthRoutes.js.map +1 -1
- package/dist/auth/pages/LoginPage.d.ts.map +1 -1
- package/dist/auth/pages/LoginPage.js +240 -217
- package/dist/auth/pages/LoginPage.js.map +1 -1
- package/dist/auth/pages/SSOClearPage.d.ts +22 -0
- package/dist/auth/pages/SSOClearPage.d.ts.map +1 -0
- package/dist/auth/pages/SSOClearPage.js +39 -0
- package/dist/auth/pages/SSOClearPage.js.map +1 -0
- package/dist/auth/pages/SSODepositPage.d.ts +24 -0
- package/dist/auth/pages/SSODepositPage.d.ts.map +1 -0
- package/dist/auth/pages/SSODepositPage.js +54 -0
- package/dist/auth/pages/SSODepositPage.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthRoutes.d.ts","sourceRoot":"","sources":["../../src/auth/AuthRoutes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuthRoutes.d.ts","sourceRoot":"","sources":["../../src/auth/AuthRoutes.tsx"],"names":[],"mappings":"AAmMA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EAAE,SAAc,EACxB,iBAAwB,GACzB,EAAE;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,2CAgQA"}
|
package/dist/auth/AuthRoutes.js
CHANGED
|
@@ -3,19 +3,21 @@ import { LoginPage as t } from "./pages/LoginPage.js";
|
|
|
3
3
|
import { SessionBridgePage as n } from "./pages/SessionBridgePage.js";
|
|
4
4
|
import { SSORelayPage as r } from "./pages/SSORelayPage.js";
|
|
5
5
|
import { SSORelayCallbackPage as i } from "./pages/SSORelayCallbackPage.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { SSODepositPage as a } from "./pages/SSODepositPage.js";
|
|
7
|
+
import { SSOClearPage as o } from "./pages/SSOClearPage.js";
|
|
8
|
+
import { Suspense as s, lazy as c, useEffect as l, useState as u } from "react";
|
|
9
|
+
import { Navigate as d, Route as f, Routes as p } from "react-router-dom";
|
|
10
|
+
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
11
|
+
import { FeatureGate as _, useFeatureFlagDetails as v } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
10
12
|
//#region src/auth/AuthRoutes.tsx
|
|
11
|
-
var
|
|
12
|
-
function
|
|
13
|
-
return /* @__PURE__ */
|
|
13
|
+
var y = c(() => import("./pages/RegisterPage.js").then((e) => ({ default: e.RegisterPage }))), b = c(() => import("./pages/PasswordResetPage.js").then((e) => ({ default: e.PasswordResetPage }))), x = c(() => import("./pages/EmailVerifyPage.js").then((e) => ({ default: e.EmailVerifyPage }))), S = c(() => import("./pages/MfaVerifyPage.js").then((e) => ({ default: e.MfaVerifyPage }))), C = c(() => import("./pages/MagicLinkPage.js").then((e) => ({ default: e.MagicLinkPage }))), w = c(() => import("./pages/ReactivatePage.js").then((e) => ({ default: e.ReactivatePage }))), T = c(() => import("./pages/SecurityPage.js").then((e) => ({ default: e.SecurityPage }))), E = c(() => import("./pages/SessionsPage.js").then((e) => ({ default: e.SessionsPage }))), D = c(() => import("./pages/MfaSetupPage.js").then((e) => ({ default: e.MfaSetupPage }))), O = c(() => import("./pages/AuditLogPage.js").then((e) => ({ default: e.AuditLogPage }))), k = c(() => import("./pages/SsoConfigPage.js").then((e) => ({ default: e.SsoConfigPage }))), A = c(() => import("./pages/SsoLoginPage.js").then((e) => ({ default: e.SsoLoginPage }))), j = c(() => import("./pages/SsoCallbackPage.js").then((e) => ({ default: e.SsoCallbackPage }))), M = c(() => import("./pages/OAuthCallbackPage.js").then((e) => ({ default: e.OAuthCallbackPage }))), N = c(() => import("./pages/UsersPage.js").then((e) => ({ default: e.UsersPage }))), P = c(() => import("./pages/UserDetailsPage.js").then((e) => ({ default: e.UserDetailsPage }))), F = c(() => import("./pages/UserProfilePage.js").then((e) => ({ default: e.UserProfilePage })));
|
|
14
|
+
function I() {
|
|
15
|
+
return /* @__PURE__ */ h("div", {
|
|
14
16
|
className: "flex min-h-[400px] items-center justify-center",
|
|
15
|
-
children: /* @__PURE__ */
|
|
17
|
+
children: /* @__PURE__ */ h("div", { className: "h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent" })
|
|
16
18
|
});
|
|
17
19
|
}
|
|
18
|
-
function
|
|
20
|
+
function L(e) {
|
|
19
21
|
try {
|
|
20
22
|
let t = JSON.parse(atob(e.split(".")[1].replace(/-/g, "+").replace(/_/g, "/")));
|
|
21
23
|
return typeof t.exp == "number" ? t.exp * 1e3 : null;
|
|
@@ -23,7 +25,7 @@ function F(e) {
|
|
|
23
25
|
return null;
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
|
-
function
|
|
28
|
+
function R() {
|
|
27
29
|
try {
|
|
28
30
|
let e = sessionStorage.getItem("bf-active-profile");
|
|
29
31
|
if (!e) return {
|
|
@@ -40,7 +42,7 @@ function I() {
|
|
|
40
42
|
hasValidSession: !1,
|
|
41
43
|
expiresAt: null
|
|
42
44
|
};
|
|
43
|
-
let r = typeof n.expiresAt == "number" ? n.expiresAt :
|
|
45
|
+
let r = typeof n.expiresAt == "number" ? n.expiresAt : L(n.accessToken);
|
|
44
46
|
return r ? {
|
|
45
47
|
hasValidSession: r > Date.now(),
|
|
46
48
|
expiresAt: r
|
|
@@ -55,246 +57,254 @@ function I() {
|
|
|
55
57
|
};
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
|
-
function
|
|
59
|
-
let n = e((e) => e.isAuthenticated), r = e((e) => e.clearAuth), [i, a] =
|
|
60
|
-
return
|
|
60
|
+
function z({ children: t }) {
|
|
61
|
+
let n = e((e) => e.isAuthenticated), r = e((e) => e.clearAuth), [i, a] = u(0), o = R();
|
|
62
|
+
return l(() => {
|
|
61
63
|
let e = () => {
|
|
62
64
|
a((e) => e + 1);
|
|
63
65
|
};
|
|
64
66
|
return window.addEventListener("bf-profile-storage-change", e), window.addEventListener("storage", e), () => {
|
|
65
67
|
window.removeEventListener("bf-profile-storage-change", e), window.removeEventListener("storage", e);
|
|
66
68
|
};
|
|
67
|
-
}, []),
|
|
69
|
+
}, []), l(() => {
|
|
68
70
|
if (!o.expiresAt) return;
|
|
69
71
|
let e = Math.max(o.expiresAt - Date.now(), 0) + 50, t = window.setTimeout(() => {
|
|
70
72
|
a((e) => e + 1);
|
|
71
73
|
}, e);
|
|
72
74
|
return () => window.clearTimeout(t);
|
|
73
|
-
}, [o.expiresAt, i]),
|
|
75
|
+
}, [o.expiresAt, i]), l(() => {
|
|
74
76
|
n && !o.hasValidSession && r();
|
|
75
77
|
}, [
|
|
76
78
|
r,
|
|
77
79
|
n,
|
|
78
80
|
o.hasValidSession
|
|
79
|
-
]), o.hasValidSession ? /* @__PURE__ */
|
|
81
|
+
]), o.hasValidSession ? /* @__PURE__ */ h(m, { children: t }) : /* @__PURE__ */ h(d, {
|
|
80
82
|
to: "/auth/login",
|
|
81
83
|
replace: !0
|
|
82
84
|
});
|
|
83
85
|
}
|
|
84
|
-
function
|
|
85
|
-
let
|
|
86
|
-
return /* @__PURE__ */
|
|
87
|
-
/* @__PURE__ */
|
|
86
|
+
function B({ basePath: e = "", enableAdminRoutes: c = !0 }) {
|
|
87
|
+
let l = v("auth.audit-log")?.value === !0;
|
|
88
|
+
return /* @__PURE__ */ g(p, { children: [
|
|
89
|
+
/* @__PURE__ */ h(f, {
|
|
88
90
|
path: "login",
|
|
89
|
-
element: /* @__PURE__ */
|
|
91
|
+
element: /* @__PURE__ */ h(t, {})
|
|
90
92
|
}),
|
|
91
|
-
/* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ h(f, {
|
|
92
94
|
path: "register",
|
|
93
|
-
element: /* @__PURE__ */
|
|
94
|
-
fallback: /* @__PURE__ */
|
|
95
|
-
children: /* @__PURE__ */
|
|
95
|
+
element: /* @__PURE__ */ h(s, {
|
|
96
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
97
|
+
children: /* @__PURE__ */ h(y, {})
|
|
96
98
|
})
|
|
97
99
|
}),
|
|
98
|
-
/* @__PURE__ */
|
|
100
|
+
/* @__PURE__ */ h(f, {
|
|
99
101
|
path: "reset-password",
|
|
100
|
-
element: /* @__PURE__ */
|
|
101
|
-
fallback: /* @__PURE__ */
|
|
102
|
-
children: /* @__PURE__ */
|
|
102
|
+
element: /* @__PURE__ */ h(s, {
|
|
103
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
104
|
+
children: /* @__PURE__ */ h(b, {})
|
|
103
105
|
})
|
|
104
106
|
}),
|
|
105
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ h(f, {
|
|
106
108
|
path: "verify-email",
|
|
107
|
-
element: /* @__PURE__ */
|
|
108
|
-
fallback: /* @__PURE__ */
|
|
109
|
-
children: /* @__PURE__ */
|
|
109
|
+
element: /* @__PURE__ */ h(s, {
|
|
110
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
111
|
+
children: /* @__PURE__ */ h(x, {})
|
|
110
112
|
})
|
|
111
113
|
}),
|
|
112
|
-
/* @__PURE__ */
|
|
114
|
+
/* @__PURE__ */ h(f, {
|
|
113
115
|
path: "mfa-verify",
|
|
114
|
-
element: /* @__PURE__ */
|
|
115
|
-
fallback: /* @__PURE__ */
|
|
116
|
-
children: /* @__PURE__ */
|
|
116
|
+
element: /* @__PURE__ */ h(s, {
|
|
117
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
118
|
+
children: /* @__PURE__ */ h(S, {})
|
|
117
119
|
})
|
|
118
120
|
}),
|
|
119
|
-
/* @__PURE__ */
|
|
121
|
+
/* @__PURE__ */ h(f, {
|
|
120
122
|
path: "magic-link",
|
|
121
|
-
element: /* @__PURE__ */
|
|
122
|
-
fallback: /* @__PURE__ */
|
|
123
|
-
children: /* @__PURE__ */
|
|
123
|
+
element: /* @__PURE__ */ h(s, {
|
|
124
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
125
|
+
children: /* @__PURE__ */ h(C, {})
|
|
124
126
|
})
|
|
125
127
|
}),
|
|
126
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ h(f, {
|
|
127
129
|
path: "sso/login",
|
|
128
|
-
element: /* @__PURE__ */
|
|
129
|
-
fallback: /* @__PURE__ */
|
|
130
|
-
children: /* @__PURE__ */
|
|
130
|
+
element: /* @__PURE__ */ h(s, {
|
|
131
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
132
|
+
children: /* @__PURE__ */ h(A, {})
|
|
131
133
|
})
|
|
132
134
|
}),
|
|
133
|
-
/* @__PURE__ */
|
|
135
|
+
/* @__PURE__ */ h(f, {
|
|
134
136
|
path: "sso/callback",
|
|
135
|
-
element: /* @__PURE__ */
|
|
136
|
-
fallback: /* @__PURE__ */
|
|
137
|
-
children: /* @__PURE__ */
|
|
137
|
+
element: /* @__PURE__ */ h(s, {
|
|
138
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
139
|
+
children: /* @__PURE__ */ h(j, {})
|
|
138
140
|
})
|
|
139
141
|
}),
|
|
140
|
-
/* @__PURE__ */
|
|
142
|
+
/* @__PURE__ */ h(f, {
|
|
141
143
|
path: "oauth/callback",
|
|
142
|
-
element: /* @__PURE__ */
|
|
143
|
-
fallback: /* @__PURE__ */
|
|
144
|
-
children: /* @__PURE__ */
|
|
144
|
+
element: /* @__PURE__ */ h(s, {
|
|
145
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
146
|
+
children: /* @__PURE__ */ h(M, {})
|
|
145
147
|
})
|
|
146
148
|
}),
|
|
147
|
-
/* @__PURE__ */
|
|
149
|
+
/* @__PURE__ */ h(f, {
|
|
148
150
|
path: "reactivate",
|
|
149
|
-
element: /* @__PURE__ */
|
|
150
|
-
fallback: /* @__PURE__ */
|
|
151
|
-
children: /* @__PURE__ */
|
|
151
|
+
element: /* @__PURE__ */ h(s, {
|
|
152
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
153
|
+
children: /* @__PURE__ */ h(w, {})
|
|
152
154
|
})
|
|
153
155
|
}),
|
|
154
|
-
/* @__PURE__ */
|
|
156
|
+
/* @__PURE__ */ h(f, {
|
|
155
157
|
path: "session-bridge",
|
|
156
|
-
element: /* @__PURE__ */
|
|
158
|
+
element: /* @__PURE__ */ h(n, {})
|
|
157
159
|
}),
|
|
158
|
-
/* @__PURE__ */
|
|
160
|
+
/* @__PURE__ */ h(f, {
|
|
159
161
|
path: "sso-relay",
|
|
160
|
-
element: /* @__PURE__ */
|
|
162
|
+
element: /* @__PURE__ */ h(r, {})
|
|
161
163
|
}),
|
|
162
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ h(f, {
|
|
163
165
|
path: "sso-callback",
|
|
164
|
-
element: /* @__PURE__ */
|
|
166
|
+
element: /* @__PURE__ */ h(i, {})
|
|
167
|
+
}),
|
|
168
|
+
/* @__PURE__ */ h(f, {
|
|
169
|
+
path: "sso-deposit",
|
|
170
|
+
element: /* @__PURE__ */ h(a, {})
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ h(f, {
|
|
173
|
+
path: "sso-clear",
|
|
174
|
+
element: /* @__PURE__ */ h(o, {})
|
|
165
175
|
}),
|
|
166
|
-
/* @__PURE__ */
|
|
176
|
+
/* @__PURE__ */ h(f, {
|
|
167
177
|
path: "security",
|
|
168
|
-
element: /* @__PURE__ */
|
|
178
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
169
179
|
flag: "auth.security",
|
|
170
180
|
defaultValue: !1,
|
|
171
|
-
children: /* @__PURE__ */
|
|
172
|
-
fallback: /* @__PURE__ */
|
|
173
|
-
children: /* @__PURE__ */
|
|
181
|
+
children: /* @__PURE__ */ h(s, {
|
|
182
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
183
|
+
children: /* @__PURE__ */ h(T, {})
|
|
174
184
|
})
|
|
175
185
|
}) })
|
|
176
186
|
}),
|
|
177
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ h(f, {
|
|
178
188
|
path: "sessions",
|
|
179
|
-
element: /* @__PURE__ */
|
|
189
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
180
190
|
flag: "auth.sessions",
|
|
181
191
|
defaultValue: !1,
|
|
182
|
-
children: /* @__PURE__ */
|
|
183
|
-
fallback: /* @__PURE__ */
|
|
184
|
-
children: /* @__PURE__ */
|
|
192
|
+
children: /* @__PURE__ */ h(s, {
|
|
193
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
194
|
+
children: /* @__PURE__ */ h(E, {})
|
|
185
195
|
})
|
|
186
196
|
}) })
|
|
187
197
|
}),
|
|
188
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ h(f, {
|
|
189
199
|
path: "mfa",
|
|
190
|
-
element: /* @__PURE__ */
|
|
200
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
191
201
|
flag: "auth.mfa",
|
|
192
202
|
defaultValue: !1,
|
|
193
|
-
children: /* @__PURE__ */
|
|
194
|
-
fallback: /* @__PURE__ */
|
|
195
|
-
children: /* @__PURE__ */
|
|
203
|
+
children: /* @__PURE__ */ h(s, {
|
|
204
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
205
|
+
children: /* @__PURE__ */ h(D, {})
|
|
196
206
|
})
|
|
197
207
|
}) })
|
|
198
208
|
}),
|
|
199
|
-
/* @__PURE__ */
|
|
209
|
+
/* @__PURE__ */ h(f, {
|
|
200
210
|
path: "api-keys",
|
|
201
|
-
element: /* @__PURE__ */
|
|
211
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(d, {
|
|
202
212
|
to: "/devportal/api-keys",
|
|
203
213
|
replace: !0
|
|
204
214
|
}) })
|
|
205
215
|
}),
|
|
206
|
-
|
|
216
|
+
c && l && /* @__PURE__ */ h(f, {
|
|
207
217
|
path: "audit-log",
|
|
208
|
-
element: /* @__PURE__ */
|
|
218
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
209
219
|
flag: "auth.audit-log",
|
|
210
220
|
defaultValue: !1,
|
|
211
|
-
children: /* @__PURE__ */
|
|
212
|
-
fallback: /* @__PURE__ */
|
|
213
|
-
children: /* @__PURE__ */
|
|
221
|
+
children: /* @__PURE__ */ h(s, {
|
|
222
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
223
|
+
children: /* @__PURE__ */ h(O, {})
|
|
214
224
|
})
|
|
215
225
|
}) })
|
|
216
226
|
}),
|
|
217
|
-
!
|
|
227
|
+
!c && /* @__PURE__ */ h(f, {
|
|
218
228
|
path: "audit-log",
|
|
219
|
-
element: /* @__PURE__ */
|
|
229
|
+
element: /* @__PURE__ */ h(d, {
|
|
220
230
|
to: "/auth/login",
|
|
221
231
|
replace: !0
|
|
222
232
|
})
|
|
223
233
|
}),
|
|
224
|
-
/* @__PURE__ */
|
|
234
|
+
/* @__PURE__ */ h(f, {
|
|
225
235
|
path: "sso",
|
|
226
|
-
element:
|
|
236
|
+
element: c ? /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
227
237
|
flag: "auth.sso",
|
|
228
238
|
defaultValue: !1,
|
|
229
|
-
children: /* @__PURE__ */
|
|
230
|
-
fallback: /* @__PURE__ */
|
|
231
|
-
children: /* @__PURE__ */
|
|
239
|
+
children: /* @__PURE__ */ h(s, {
|
|
240
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
241
|
+
children: /* @__PURE__ */ h(k, {})
|
|
232
242
|
})
|
|
233
|
-
}) }) : /* @__PURE__ */
|
|
243
|
+
}) }) : /* @__PURE__ */ h(d, {
|
|
234
244
|
to: "/auth/login",
|
|
235
245
|
replace: !0
|
|
236
246
|
})
|
|
237
247
|
}),
|
|
238
|
-
/* @__PURE__ */
|
|
248
|
+
/* @__PURE__ */ h(f, {
|
|
239
249
|
path: "apps",
|
|
240
|
-
element: /* @__PURE__ */
|
|
250
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
241
251
|
flag: "auth.apps",
|
|
242
252
|
defaultValue: !1,
|
|
243
|
-
children: /* @__PURE__ */
|
|
253
|
+
children: /* @__PURE__ */ h(d, {
|
|
244
254
|
to: "/devportal/apps/new",
|
|
245
255
|
replace: !0
|
|
246
256
|
})
|
|
247
257
|
}) })
|
|
248
258
|
}),
|
|
249
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ h(f, {
|
|
250
260
|
path: "users",
|
|
251
|
-
element:
|
|
261
|
+
element: c ? /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
252
262
|
flag: "auth.users",
|
|
253
263
|
defaultValue: !1,
|
|
254
|
-
children: /* @__PURE__ */
|
|
255
|
-
fallback: /* @__PURE__ */
|
|
256
|
-
children: /* @__PURE__ */
|
|
264
|
+
children: /* @__PURE__ */ h(s, {
|
|
265
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
266
|
+
children: /* @__PURE__ */ h(N, {})
|
|
257
267
|
})
|
|
258
|
-
}) }) : /* @__PURE__ */
|
|
268
|
+
}) }) : /* @__PURE__ */ h(d, {
|
|
259
269
|
to: "/auth/login",
|
|
260
270
|
replace: !0
|
|
261
271
|
})
|
|
262
272
|
}),
|
|
263
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ h(f, {
|
|
264
274
|
path: "users/:id",
|
|
265
|
-
element:
|
|
275
|
+
element: c ? /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
266
276
|
flag: "auth.users",
|
|
267
277
|
defaultValue: !1,
|
|
268
|
-
children: /* @__PURE__ */
|
|
269
|
-
fallback: /* @__PURE__ */
|
|
270
|
-
children: /* @__PURE__ */
|
|
278
|
+
children: /* @__PURE__ */ h(s, {
|
|
279
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
280
|
+
children: /* @__PURE__ */ h(P, {})
|
|
271
281
|
})
|
|
272
|
-
}) }) : /* @__PURE__ */
|
|
282
|
+
}) }) : /* @__PURE__ */ h(d, {
|
|
273
283
|
to: "/auth/login",
|
|
274
284
|
replace: !0
|
|
275
285
|
})
|
|
276
286
|
}),
|
|
277
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ h(f, {
|
|
278
288
|
path: "profile",
|
|
279
|
-
element: /* @__PURE__ */
|
|
289
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(_, {
|
|
280
290
|
flag: "auth.profile",
|
|
281
291
|
defaultValue: !1,
|
|
282
|
-
children: /* @__PURE__ */
|
|
283
|
-
fallback: /* @__PURE__ */
|
|
284
|
-
children: /* @__PURE__ */
|
|
292
|
+
children: /* @__PURE__ */ h(s, {
|
|
293
|
+
fallback: /* @__PURE__ */ h(I, {}),
|
|
294
|
+
children: /* @__PURE__ */ h(F, {})
|
|
285
295
|
})
|
|
286
296
|
}) })
|
|
287
297
|
}),
|
|
288
|
-
/* @__PURE__ */
|
|
298
|
+
/* @__PURE__ */ h(f, {
|
|
289
299
|
path: "delegations",
|
|
290
|
-
element: /* @__PURE__ */
|
|
300
|
+
element: /* @__PURE__ */ h(z, { children: /* @__PURE__ */ h(d, {
|
|
291
301
|
to: "/devportal/delegations",
|
|
292
302
|
replace: !0
|
|
293
303
|
}) })
|
|
294
304
|
}),
|
|
295
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ h(f, {
|
|
296
306
|
index: !0,
|
|
297
|
-
element: /* @__PURE__ */
|
|
307
|
+
element: /* @__PURE__ */ h(d, {
|
|
298
308
|
to: "login",
|
|
299
309
|
replace: !0
|
|
300
310
|
})
|
|
@@ -302,6 +312,6 @@ function R({ basePath: e = "", enableAdminRoutes: o = !0 }) {
|
|
|
302
312
|
] });
|
|
303
313
|
}
|
|
304
314
|
//#endregion
|
|
305
|
-
export {
|
|
315
|
+
export { B as AuthRoutes };
|
|
306
316
|
|
|
307
317
|
//# sourceMappingURL=AuthRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthRoutes.js","names":[],"sources":["../../src/auth/AuthRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useEffect, useState } from \"react\";\nimport {\n useFeatureFlagDetails,\n FeatureGate,\n} from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { Navigate, Route, Routes } from \"react-router-dom\";\nimport { useAuthStore } from \"./store/authStore\";\n\n// Eager imports - these are the most commonly accessed routes\nimport { LoginPage } from \"./pages/LoginPage\";\nimport { SessionBridgePage } from \"./pages/SessionBridgePage\";\nimport { SSORelayPage } from \"./pages/SSORelayPage\";\nimport { SSORelayCallbackPage } from \"./pages/SSORelayCallbackPage\";\n\n// Lazy-loaded pages - loaded on demand when their routes are accessed\nconst RegisterPage = lazy(() =>\n import(\"./pages/RegisterPage\").then((m) => ({ default: m.RegisterPage })),\n);\nconst PasswordResetPage = lazy(() =>\n import(\"./pages/PasswordResetPage\").then((m) => ({\n default: m.PasswordResetPage,\n })),\n);\nconst EmailVerifyPage = lazy(() =>\n import(\"./pages/EmailVerifyPage\").then((m) => ({\n default: m.EmailVerifyPage,\n })),\n);\nconst MfaVerifyPage = lazy(() =>\n import(\"./pages/MfaVerifyPage\").then((m) => ({ default: m.MfaVerifyPage })),\n);\nconst MagicLinkPage = lazy(() =>\n import(\"./pages/MagicLinkPage\").then((m) => ({ default: m.MagicLinkPage })),\n);\nconst ReactivatePage = lazy(() =>\n import(\"./pages/ReactivatePage\").then((m) => ({ default: m.ReactivatePage })),\n);\nconst SecurityPage = lazy(() =>\n import(\"./pages/SecurityPage\").then((m) => ({ default: m.SecurityPage })),\n);\nconst SessionsPage = lazy(() =>\n import(\"./pages/SessionsPage\").then((m) => ({ default: m.SessionsPage })),\n);\nconst MfaSetupPage = lazy(() =>\n import(\"./pages/MfaSetupPage\").then((m) => ({ default: m.MfaSetupPage })),\n);\nconst AuditLogPage = lazy(() =>\n import(\"./pages/AuditLogPage\").then((m) => ({ default: m.AuditLogPage })),\n);\nconst SsoConfigPage = lazy(() =>\n import(\"./pages/SsoConfigPage\").then((m) => ({ default: m.SsoConfigPage })),\n);\nconst SsoLoginPage = lazy(() =>\n import(\"./pages/SsoLoginPage\").then((m) => ({ default: m.SsoLoginPage })),\n);\nconst SsoCallbackPage = lazy(() =>\n import(\"./pages/SsoCallbackPage\").then((m) => ({\n default: m.SsoCallbackPage,\n })),\n);\nconst OAuthCallbackPage = lazy(() =>\n import(\"./pages/OAuthCallbackPage\").then((m) => ({\n default: m.OAuthCallbackPage,\n })),\n);\nconst UsersPage = lazy(() =>\n import(\"./pages/UsersPage\").then((m) => ({ default: m.UsersPage })),\n);\nconst UserDetailsPage = lazy(() =>\n import(\"./pages/UserDetailsPage\").then((m) => ({\n default: m.UserDetailsPage,\n })),\n);\nconst UserProfilePage = lazy(() =>\n import(\"./pages/UserProfilePage\").then((m) => ({\n default: m.UserProfilePage,\n })),\n);\n/**\n * Simple loading fallback for lazy-loaded pages\n */\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent\" />\n </div>\n );\n}\n\nfunction decodeJwtExpiry(token: string): number | null {\n try {\n const payload = JSON.parse(\n atob(token.split(\".\")[1].replace(/-/g, \"+\").replace(/_/g, \"/\")),\n ) as { exp?: number };\n\n return typeof payload.exp === \"number\" ? payload.exp * 1000 : null;\n } catch {\n return null;\n }\n}\n\nfunction getStoredSessionSnapshot(): {\n hasValidSession: boolean;\n expiresAt: number | null;\n} {\n try {\n const activeProfileId = sessionStorage.getItem(\"bf-active-profile\");\n if (!activeProfileId) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n const tokensRaw = localStorage.getItem(`bf-p-${activeProfileId}-tokens`);\n if (!tokensRaw) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n const tokens = JSON.parse(tokensRaw) as {\n accessToken?: string;\n expiresAt?: number;\n };\n\n if (!tokens.accessToken) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n const expiresAt =\n typeof tokens.expiresAt === \"number\"\n ? tokens.expiresAt\n : decodeJwtExpiry(tokens.accessToken);\n\n if (!expiresAt) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n return {\n hasValidSession: expiresAt > Date.now(),\n expiresAt,\n };\n } catch {\n return { hasValidSession: false, expiresAt: null };\n }\n}\n\n/**\n * Protected route wrapper\n */\nfunction ProtectedRoute({ children }: { children: React.ReactNode }) {\n const isAuthenticated = useAuthStore((state) => state.isAuthenticated);\n const clearAuth = useAuthStore((state) => state.clearAuth);\n const [sessionCheckVersion, setSessionCheckVersion] = useState(0);\n const sessionSnapshot = getStoredSessionSnapshot();\n\n useEffect(() => {\n const handleSessionUpdate = () => {\n setSessionCheckVersion((value) => value + 1);\n };\n\n window.addEventListener(\"bf-profile-storage-change\", handleSessionUpdate);\n window.addEventListener(\"storage\", handleSessionUpdate);\n\n return () => {\n window.removeEventListener(\n \"bf-profile-storage-change\",\n handleSessionUpdate,\n );\n window.removeEventListener(\"storage\", handleSessionUpdate);\n };\n }, []);\n\n useEffect(() => {\n if (!sessionSnapshot.expiresAt) return;\n\n const timeoutMs = Math.max(sessionSnapshot.expiresAt - Date.now(), 0) + 50;\n const timer = window.setTimeout(() => {\n setSessionCheckVersion((value) => value + 1);\n }, timeoutMs);\n\n return () => window.clearTimeout(timer);\n }, [sessionSnapshot.expiresAt, sessionCheckVersion]);\n\n useEffect(() => {\n if (isAuthenticated && !sessionSnapshot.hasValidSession) {\n clearAuth();\n }\n }, [clearAuth, isAuthenticated, sessionSnapshot.hasValidSession]);\n\n if (!sessionSnapshot.hasValidSession) {\n return <Navigate to=\"/auth/login\" replace />;\n }\n\n return <>{children}</>;\n}\n\n/**\n * Internal router for the Auth microfrontend.\n * This component handles routing within the microfrontend using React Router v7.\n *\n * When used within a parent route (e.g., <Route path=\"/auth/*\">), all paths are relative:\n * - login → Login page (accessible at /auth/login)\n * - register → Registration page (accessible at /auth/register)\n * - reset-password → Password reset page (accessible at /auth/reset-password)\n * - verify-email → Email verification page (accessible at /auth/verify-email)\n * - mfa-verify → MFA verification page (accessible at /auth/mfa-verify)\n * - magic-link → Magic link authentication page (accessible at /auth/magic-link)\n * - sso/login → SSO login page (accessible at /auth/sso/login)\n * - sso/callback → SSO callback handler (accessible at /auth/sso/callback)\n * - oauth/callback → OAuth callback handler (accessible at /auth/oauth/callback)\n * - security → Security settings (protected, accessible at /auth/security)\n * - sessions → Active sessions (protected, accessible at /auth/sessions)\n * - mfa → MFA setup (protected, accessible at /auth/mfa)\n * - api-keys → API keys management (protected, accessible at /auth/api-keys)\n * - apps → Legacy redirect to Developer Portal app creation\n * - users → Users management (protected, admin only, accessible at /auth/users)\n * - profile → User profile page (protected, accessible at /auth/profile)\n * - audit-log → Security audit log (protected, accessible at /auth/audit-log)\n * - sso → SSO configuration (protected, admin only, accessible at /auth/sso)\n */\nexport function AuthRoutes({\n basePath: _basePath = \"\",\n enableAdminRoutes = true,\n}: {\n basePath?: string;\n enableAdminRoutes?: boolean;\n}) {\n // Note: basePath is kept for backwards compatibility but not used in route paths\n // since React Router v7 uses relative paths when nested inside a parent <Route>\n const auditLogFlag = useFeatureFlagDetails(\"auth.audit-log\");\n const showAuditLog = auditLogFlag?.value === true;\n return (\n <Routes>\n {/* Public routes (no auth required) */}\n {/* LoginPage is eager-loaded as it's the most common entry point */}\n <Route path=\"login\" element={<LoginPage />} />\n <Route\n path=\"register\"\n element={\n <Suspense fallback={<PageLoader />}>\n <RegisterPage />\n </Suspense>\n }\n />\n <Route\n path=\"reset-password\"\n element={\n <Suspense fallback={<PageLoader />}>\n <PasswordResetPage />\n </Suspense>\n }\n />\n <Route\n path=\"verify-email\"\n element={\n <Suspense fallback={<PageLoader />}>\n <EmailVerifyPage />\n </Suspense>\n }\n />\n <Route\n path=\"mfa-verify\"\n element={\n <Suspense fallback={<PageLoader />}>\n <MfaVerifyPage />\n </Suspense>\n }\n />\n <Route\n path=\"magic-link\"\n element={\n <Suspense fallback={<PageLoader />}>\n <MagicLinkPage />\n </Suspense>\n }\n />\n\n {/* SSO routes (public) */}\n <Route\n path=\"sso/login\"\n element={\n <Suspense fallback={<PageLoader />}>\n <SsoLoginPage />\n </Suspense>\n }\n />\n <Route\n path=\"sso/callback\"\n element={\n <Suspense fallback={<PageLoader />}>\n <SsoCallbackPage />\n </Suspense>\n }\n />\n\n {/* OAuth callback route (public) */}\n <Route\n path=\"oauth/callback\"\n element={\n <Suspense fallback={<PageLoader />}>\n <OAuthCallbackPage />\n </Suspense>\n }\n />\n\n {/* Account reactivation (public) */}\n <Route\n path=\"reactivate\"\n element={\n <Suspense fallback={<PageLoader />}>\n <ReactivatePage />\n </Suspense>\n }\n />\n\n {/* Session bridge (public - embedded as hidden iframe by other app shells) */}\n <Route path=\"session-bridge\" element={<SessionBridgePage />} />\n\n {/* Cross-domain SSO relay (reads local tokens, redirects with them to target) */}\n <Route path=\"sso-relay\" element={<SSORelayPage />} />\n\n {/* Cross-domain SSO callback (receives tokens from relay, stores locally) */}\n <Route path=\"sso-callback\" element={<SSORelayCallbackPage />} />\n\n {/* Protected routes (auth required) */}\n <Route\n path=\"security\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.security\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <SecurityPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"sessions\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.sessions\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <SessionsPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"mfa\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.mfa\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <MfaSetupPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"api-keys\"\n element={\n <ProtectedRoute>\n <Navigate to=\"/devportal/api-keys\" replace />\n </ProtectedRoute>\n }\n />\n {enableAdminRoutes && showAuditLog && (\n <Route\n path=\"audit-log\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.audit-log\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <AuditLogPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n )}\n {!enableAdminRoutes && (\n <Route\n path=\"audit-log\"\n element={<Navigate to=\"/auth/login\" replace />}\n />\n )}\n <Route\n path=\"sso\"\n element={\n enableAdminRoutes ? (\n <ProtectedRoute>\n <FeatureGate flag=\"auth.sso\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <SsoConfigPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n ) : (\n <Navigate to=\"/auth/login\" replace />\n )\n }\n />\n <Route\n path=\"apps\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.apps\" defaultValue={false}>\n <Navigate to=\"/devportal/apps/new\" replace />\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"users\"\n element={\n enableAdminRoutes ? (\n <ProtectedRoute>\n <FeatureGate flag=\"auth.users\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <UsersPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n ) : (\n <Navigate to=\"/auth/login\" replace />\n )\n }\n />\n <Route\n path=\"users/:id\"\n element={\n enableAdminRoutes ? (\n <ProtectedRoute>\n <FeatureGate flag=\"auth.users\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <UserDetailsPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n ) : (\n <Navigate to=\"/auth/login\" replace />\n )\n }\n />\n <Route\n path=\"profile\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.profile\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <UserProfilePage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"delegations\"\n element={\n <ProtectedRoute>\n <Navigate to=\"/devportal/delegations\" replace />\n </ProtectedRoute>\n }\n />\n\n {/* Default redirect - when visiting /auth or /auth/ with no subpath */}\n <Route index element={<Navigate to=\"login\" replace />} />\n </Routes>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AuthRoutes.js","names":[],"sources":["../../src/auth/AuthRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useEffect, useState } from \"react\";\nimport {\n useFeatureFlagDetails,\n FeatureGate,\n} from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { Navigate, Route, Routes } from \"react-router-dom\";\nimport { useAuthStore } from \"./store/authStore\";\n\n// Eager imports - these are the most commonly accessed routes\nimport { LoginPage } from \"./pages/LoginPage\";\nimport { SessionBridgePage } from \"./pages/SessionBridgePage\";\nimport { SSORelayPage } from \"./pages/SSORelayPage\";\nimport { SSORelayCallbackPage } from \"./pages/SSORelayCallbackPage\";\nimport { SSODepositPage } from \"./pages/SSODepositPage\";\nimport { SSOClearPage } from \"./pages/SSOClearPage\";\n\n// Lazy-loaded pages - loaded on demand when their routes are accessed\nconst RegisterPage = lazy(() =>\n import(\"./pages/RegisterPage\").then((m) => ({ default: m.RegisterPage })),\n);\nconst PasswordResetPage = lazy(() =>\n import(\"./pages/PasswordResetPage\").then((m) => ({\n default: m.PasswordResetPage,\n })),\n);\nconst EmailVerifyPage = lazy(() =>\n import(\"./pages/EmailVerifyPage\").then((m) => ({\n default: m.EmailVerifyPage,\n })),\n);\nconst MfaVerifyPage = lazy(() =>\n import(\"./pages/MfaVerifyPage\").then((m) => ({ default: m.MfaVerifyPage })),\n);\nconst MagicLinkPage = lazy(() =>\n import(\"./pages/MagicLinkPage\").then((m) => ({ default: m.MagicLinkPage })),\n);\nconst ReactivatePage = lazy(() =>\n import(\"./pages/ReactivatePage\").then((m) => ({ default: m.ReactivatePage })),\n);\nconst SecurityPage = lazy(() =>\n import(\"./pages/SecurityPage\").then((m) => ({ default: m.SecurityPage })),\n);\nconst SessionsPage = lazy(() =>\n import(\"./pages/SessionsPage\").then((m) => ({ default: m.SessionsPage })),\n);\nconst MfaSetupPage = lazy(() =>\n import(\"./pages/MfaSetupPage\").then((m) => ({ default: m.MfaSetupPage })),\n);\nconst AuditLogPage = lazy(() =>\n import(\"./pages/AuditLogPage\").then((m) => ({ default: m.AuditLogPage })),\n);\nconst SsoConfigPage = lazy(() =>\n import(\"./pages/SsoConfigPage\").then((m) => ({ default: m.SsoConfigPage })),\n);\nconst SsoLoginPage = lazy(() =>\n import(\"./pages/SsoLoginPage\").then((m) => ({ default: m.SsoLoginPage })),\n);\nconst SsoCallbackPage = lazy(() =>\n import(\"./pages/SsoCallbackPage\").then((m) => ({\n default: m.SsoCallbackPage,\n })),\n);\nconst OAuthCallbackPage = lazy(() =>\n import(\"./pages/OAuthCallbackPage\").then((m) => ({\n default: m.OAuthCallbackPage,\n })),\n);\nconst UsersPage = lazy(() =>\n import(\"./pages/UsersPage\").then((m) => ({ default: m.UsersPage })),\n);\nconst UserDetailsPage = lazy(() =>\n import(\"./pages/UserDetailsPage\").then((m) => ({\n default: m.UserDetailsPage,\n })),\n);\nconst UserProfilePage = lazy(() =>\n import(\"./pages/UserProfilePage\").then((m) => ({\n default: m.UserProfilePage,\n })),\n);\n/**\n * Simple loading fallback for lazy-loaded pages\n */\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent\" />\n </div>\n );\n}\n\nfunction decodeJwtExpiry(token: string): number | null {\n try {\n const payload = JSON.parse(\n atob(token.split(\".\")[1].replace(/-/g, \"+\").replace(/_/g, \"/\")),\n ) as { exp?: number };\n\n return typeof payload.exp === \"number\" ? payload.exp * 1000 : null;\n } catch {\n return null;\n }\n}\n\nfunction getStoredSessionSnapshot(): {\n hasValidSession: boolean;\n expiresAt: number | null;\n} {\n try {\n const activeProfileId = sessionStorage.getItem(\"bf-active-profile\");\n if (!activeProfileId) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n const tokensRaw = localStorage.getItem(`bf-p-${activeProfileId}-tokens`);\n if (!tokensRaw) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n const tokens = JSON.parse(tokensRaw) as {\n accessToken?: string;\n expiresAt?: number;\n };\n\n if (!tokens.accessToken) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n const expiresAt =\n typeof tokens.expiresAt === \"number\"\n ? tokens.expiresAt\n : decodeJwtExpiry(tokens.accessToken);\n\n if (!expiresAt) {\n return { hasValidSession: false, expiresAt: null };\n }\n\n return {\n hasValidSession: expiresAt > Date.now(),\n expiresAt,\n };\n } catch {\n return { hasValidSession: false, expiresAt: null };\n }\n}\n\n/**\n * Protected route wrapper\n */\nfunction ProtectedRoute({ children }: { children: React.ReactNode }) {\n const isAuthenticated = useAuthStore((state) => state.isAuthenticated);\n const clearAuth = useAuthStore((state) => state.clearAuth);\n const [sessionCheckVersion, setSessionCheckVersion] = useState(0);\n const sessionSnapshot = getStoredSessionSnapshot();\n\n useEffect(() => {\n const handleSessionUpdate = () => {\n setSessionCheckVersion((value) => value + 1);\n };\n\n window.addEventListener(\"bf-profile-storage-change\", handleSessionUpdate);\n window.addEventListener(\"storage\", handleSessionUpdate);\n\n return () => {\n window.removeEventListener(\n \"bf-profile-storage-change\",\n handleSessionUpdate,\n );\n window.removeEventListener(\"storage\", handleSessionUpdate);\n };\n }, []);\n\n useEffect(() => {\n if (!sessionSnapshot.expiresAt) return;\n\n const timeoutMs = Math.max(sessionSnapshot.expiresAt - Date.now(), 0) + 50;\n const timer = window.setTimeout(() => {\n setSessionCheckVersion((value) => value + 1);\n }, timeoutMs);\n\n return () => window.clearTimeout(timer);\n }, [sessionSnapshot.expiresAt, sessionCheckVersion]);\n\n useEffect(() => {\n if (isAuthenticated && !sessionSnapshot.hasValidSession) {\n clearAuth();\n }\n }, [clearAuth, isAuthenticated, sessionSnapshot.hasValidSession]);\n\n if (!sessionSnapshot.hasValidSession) {\n return <Navigate to=\"/auth/login\" replace />;\n }\n\n return <>{children}</>;\n}\n\n/**\n * Internal router for the Auth microfrontend.\n * This component handles routing within the microfrontend using React Router v7.\n *\n * When used within a parent route (e.g., <Route path=\"/auth/*\">), all paths are relative:\n * - login → Login page (accessible at /auth/login)\n * - register → Registration page (accessible at /auth/register)\n * - reset-password → Password reset page (accessible at /auth/reset-password)\n * - verify-email → Email verification page (accessible at /auth/verify-email)\n * - mfa-verify → MFA verification page (accessible at /auth/mfa-verify)\n * - magic-link → Magic link authentication page (accessible at /auth/magic-link)\n * - sso/login → SSO login page (accessible at /auth/sso/login)\n * - sso/callback → SSO callback handler (accessible at /auth/sso/callback)\n * - oauth/callback → OAuth callback handler (accessible at /auth/oauth/callback)\n * - security → Security settings (protected, accessible at /auth/security)\n * - sessions → Active sessions (protected, accessible at /auth/sessions)\n * - mfa → MFA setup (protected, accessible at /auth/mfa)\n * - api-keys → API keys management (protected, accessible at /auth/api-keys)\n * - apps → Legacy redirect to Developer Portal app creation\n * - users → Users management (protected, admin only, accessible at /auth/users)\n * - profile → User profile page (protected, accessible at /auth/profile)\n * - audit-log → Security audit log (protected, accessible at /auth/audit-log)\n * - sso → SSO configuration (protected, admin only, accessible at /auth/sso)\n */\nexport function AuthRoutes({\n basePath: _basePath = \"\",\n enableAdminRoutes = true,\n}: {\n basePath?: string;\n enableAdminRoutes?: boolean;\n}) {\n // Note: basePath is kept for backwards compatibility but not used in route paths\n // since React Router v7 uses relative paths when nested inside a parent <Route>\n const auditLogFlag = useFeatureFlagDetails(\"auth.audit-log\");\n const showAuditLog = auditLogFlag?.value === true;\n return (\n <Routes>\n {/* Public routes (no auth required) */}\n {/* LoginPage is eager-loaded as it's the most common entry point */}\n <Route path=\"login\" element={<LoginPage />} />\n <Route\n path=\"register\"\n element={\n <Suspense fallback={<PageLoader />}>\n <RegisterPage />\n </Suspense>\n }\n />\n <Route\n path=\"reset-password\"\n element={\n <Suspense fallback={<PageLoader />}>\n <PasswordResetPage />\n </Suspense>\n }\n />\n <Route\n path=\"verify-email\"\n element={\n <Suspense fallback={<PageLoader />}>\n <EmailVerifyPage />\n </Suspense>\n }\n />\n <Route\n path=\"mfa-verify\"\n element={\n <Suspense fallback={<PageLoader />}>\n <MfaVerifyPage />\n </Suspense>\n }\n />\n <Route\n path=\"magic-link\"\n element={\n <Suspense fallback={<PageLoader />}>\n <MagicLinkPage />\n </Suspense>\n }\n />\n\n {/* SSO routes (public) */}\n <Route\n path=\"sso/login\"\n element={\n <Suspense fallback={<PageLoader />}>\n <SsoLoginPage />\n </Suspense>\n }\n />\n <Route\n path=\"sso/callback\"\n element={\n <Suspense fallback={<PageLoader />}>\n <SsoCallbackPage />\n </Suspense>\n }\n />\n\n {/* OAuth callback route (public) */}\n <Route\n path=\"oauth/callback\"\n element={\n <Suspense fallback={<PageLoader />}>\n <OAuthCallbackPage />\n </Suspense>\n }\n />\n\n {/* Account reactivation (public) */}\n <Route\n path=\"reactivate\"\n element={\n <Suspense fallback={<PageLoader />}>\n <ReactivatePage />\n </Suspense>\n }\n />\n\n {/* Session bridge (public - embedded as hidden iframe by other app shells) */}\n <Route path=\"session-bridge\" element={<SessionBridgePage />} />\n\n {/* Cross-domain SSO relay (reads local tokens, redirects with them to target) */}\n <Route path=\"sso-relay\" element={<SSORelayPage />} />\n\n {/* Cross-domain SSO callback (receives tokens from relay, stores locally) */}\n <Route path=\"sso-callback\" element={<SSORelayCallbackPage />} />\n\n {/* Cross-domain SSO deposit (bridge host receives tokens on top-level\n redirect right after login on a product origin, writes first-party\n localStorage on the bridge origin so other products can discover\n the session). */}\n <Route path=\"sso-deposit\" element={<SSODepositPage />} />\n\n {/* Cross-domain SLO clear (bridge host clears its central session on\n top-level redirect from a product origin's logout). */}\n <Route path=\"sso-clear\" element={<SSOClearPage />} />\n\n {/* Protected routes (auth required) */}\n <Route\n path=\"security\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.security\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <SecurityPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"sessions\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.sessions\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <SessionsPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"mfa\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.mfa\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <MfaSetupPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"api-keys\"\n element={\n <ProtectedRoute>\n <Navigate to=\"/devportal/api-keys\" replace />\n </ProtectedRoute>\n }\n />\n {enableAdminRoutes && showAuditLog && (\n <Route\n path=\"audit-log\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.audit-log\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <AuditLogPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n )}\n {!enableAdminRoutes && (\n <Route\n path=\"audit-log\"\n element={<Navigate to=\"/auth/login\" replace />}\n />\n )}\n <Route\n path=\"sso\"\n element={\n enableAdminRoutes ? (\n <ProtectedRoute>\n <FeatureGate flag=\"auth.sso\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <SsoConfigPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n ) : (\n <Navigate to=\"/auth/login\" replace />\n )\n }\n />\n <Route\n path=\"apps\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.apps\" defaultValue={false}>\n <Navigate to=\"/devportal/apps/new\" replace />\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"users\"\n element={\n enableAdminRoutes ? (\n <ProtectedRoute>\n <FeatureGate flag=\"auth.users\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <UsersPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n ) : (\n <Navigate to=\"/auth/login\" replace />\n )\n }\n />\n <Route\n path=\"users/:id\"\n element={\n enableAdminRoutes ? (\n <ProtectedRoute>\n <FeatureGate flag=\"auth.users\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <UserDetailsPage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n ) : (\n <Navigate to=\"/auth/login\" replace />\n )\n }\n />\n <Route\n path=\"profile\"\n element={\n <ProtectedRoute>\n <FeatureGate flag=\"auth.profile\" defaultValue={false}>\n <Suspense fallback={<PageLoader />}>\n <UserProfilePage />\n </Suspense>\n </FeatureGate>\n </ProtectedRoute>\n }\n />\n <Route\n path=\"delegations\"\n element={\n <ProtectedRoute>\n <Navigate to=\"/devportal/delegations\" replace />\n </ProtectedRoute>\n }\n />\n\n {/* Default redirect - when visiting /auth or /auth/ with no subpath */}\n <Route index element={<Navigate to=\"login\" replace />} />\n </Routes>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginPage.d.ts","sourceRoot":"","sources":["../../../src/auth/pages/LoginPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LoginPage.d.ts","sourceRoot":"","sources":["../../../src/auth/pages/LoginPage.tsx"],"names":[],"mappings":"AA4DA;;;GAGG;AACH,wBAAgB,SAAS,4CAykCxB"}
|