@betterportal/auth-default 10.6.35 → 10.7.0
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/lib/account.d.ts.map +1 -1
- package/lib/account.js +12 -14
- package/lib/account.js.map +1 -1
- package/lib/accountUI.d.ts +3 -3
- package/lib/accountUI.d.ts.map +1 -1
- package/lib/accountUI.js +13 -6
- package/lib/accountUI.js.map +1 -1
- package/lib/bp-contracts/org.betterportal.auth.default.json +1 -97
- package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.d.ts +0 -36
- package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.d.ts +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.js +27 -14
- package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.d.ts +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.js +15 -24
- package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/social/GET.js +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/social/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.d.ts +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.js +10 -4
- package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/users/GET.js +3 -3
- package/lib/plugins/service-betterportal-auth-default/bp-routes/users/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.d.ts +2 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.js +8 -2
- package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/loginFlow.d.ts +0 -15
- package/lib/plugins/service-betterportal-auth-default/loginFlow.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/loginFlow.js +3 -29
- package/lib/plugins/service-betterportal-auth-default/loginFlow.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/logoutFlow.js +1 -1
- package/lib/plugins/service-betterportal-auth-default/logoutFlow.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/registrationFlow.d.ts +0 -3
- package/lib/plugins/service-betterportal-auth-default/registrationFlow.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-default/registrationFlow.js +3 -18
- package/lib/plugins/service-betterportal-auth-default/registrationFlow.js.map +1 -1
- package/lib/schemas/service-betterportal-auth-default.json +1 -1
- package/lib/schemas/service-betterportal-auth-default.plugin.json +1 -1
- package/lib/social.js +3 -3
- package/lib/social.js.map +1 -1
- package/package.json +6 -5
|
@@ -163,8 +163,6 @@ export declare const registry: {
|
|
|
163
163
|
schemas: {
|
|
164
164
|
response: import("anyvali").ObjectSchema<{
|
|
165
165
|
challenge: import("anyvali").OptionalSchema<import("anyvali").BaseSchema<unknown, import("@betterportal/framework").JsonObject>>;
|
|
166
|
-
accountUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
167
|
-
socialUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
168
166
|
status: import("anyvali").EnumSchema<readonly ["ok", "error"]>;
|
|
169
167
|
message: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
170
168
|
accessToken: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
@@ -177,11 +175,8 @@ export declare const registry: {
|
|
|
177
175
|
name: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
178
176
|
}>>;
|
|
179
177
|
requiresFirstAdmin: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
180
|
-
firstAdminUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
181
178
|
alreadyLoggedIn: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
182
179
|
loggedOut: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
183
|
-
logoutUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
184
|
-
nextUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
185
180
|
}>;
|
|
186
181
|
query: import("anyvali").ObjectSchema<{
|
|
187
182
|
action: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
@@ -199,8 +194,6 @@ export declare const registry: {
|
|
|
199
194
|
}, Record<string, unknown>, {
|
|
200
195
|
status: "error" | "ok";
|
|
201
196
|
challenge?: import("@betterportal/framework").JsonObject | undefined;
|
|
202
|
-
accountUrl?: string | undefined;
|
|
203
|
-
socialUrl?: string | undefined;
|
|
204
197
|
message?: string | undefined;
|
|
205
198
|
accessToken?: string | undefined;
|
|
206
199
|
refreshToken?: string | undefined;
|
|
@@ -212,11 +205,8 @@ export declare const registry: {
|
|
|
212
205
|
name?: string | undefined;
|
|
213
206
|
} | undefined;
|
|
214
207
|
requiresFirstAdmin?: boolean | undefined;
|
|
215
|
-
firstAdminUrl?: string | undefined;
|
|
216
208
|
alreadyLoggedIn?: boolean | undefined;
|
|
217
209
|
loggedOut?: boolean | undefined;
|
|
218
|
-
logoutUrl?: string | undefined;
|
|
219
|
-
nextUrl?: string | undefined;
|
|
220
210
|
}, import("../index.js").PluginFeature, {
|
|
221
211
|
[x: string]: unknown;
|
|
222
212
|
}>;
|
|
@@ -262,8 +252,6 @@ export declare const registry: {
|
|
|
262
252
|
schemas: {
|
|
263
253
|
response: import("anyvali").ObjectSchema<{
|
|
264
254
|
challenge: import("anyvali").OptionalSchema<import("anyvali").BaseSchema<unknown, import("@betterportal/framework").JsonObject>>;
|
|
265
|
-
accountUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
266
|
-
socialUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
267
255
|
status: import("anyvali").EnumSchema<readonly ["ok", "error"]>;
|
|
268
256
|
message: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
269
257
|
accessToken: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
@@ -276,11 +264,8 @@ export declare const registry: {
|
|
|
276
264
|
name: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
277
265
|
}>>;
|
|
278
266
|
requiresFirstAdmin: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
279
|
-
firstAdminUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
280
267
|
alreadyLoggedIn: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
281
268
|
loggedOut: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
282
|
-
logoutUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
283
|
-
nextUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
284
269
|
}>;
|
|
285
270
|
query: import("anyvali").ObjectSchema<{
|
|
286
271
|
action: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
@@ -303,8 +288,6 @@ export declare const registry: {
|
|
|
303
288
|
}, {
|
|
304
289
|
status: "error" | "ok";
|
|
305
290
|
challenge?: import("@betterportal/framework").JsonObject | undefined;
|
|
306
|
-
accountUrl?: string | undefined;
|
|
307
|
-
socialUrl?: string | undefined;
|
|
308
291
|
message?: string | undefined;
|
|
309
292
|
accessToken?: string | undefined;
|
|
310
293
|
refreshToken?: string | undefined;
|
|
@@ -316,11 +299,8 @@ export declare const registry: {
|
|
|
316
299
|
name?: string | undefined;
|
|
317
300
|
} | undefined;
|
|
318
301
|
requiresFirstAdmin?: boolean | undefined;
|
|
319
|
-
firstAdminUrl?: string | undefined;
|
|
320
302
|
alreadyLoggedIn?: boolean | undefined;
|
|
321
303
|
loggedOut?: boolean | undefined;
|
|
322
|
-
logoutUrl?: string | undefined;
|
|
323
|
-
nextUrl?: string | undefined;
|
|
324
304
|
}, import("../index.js").PluginFeature, {
|
|
325
305
|
[x: string]: unknown;
|
|
326
306
|
}>;
|
|
@@ -349,8 +329,6 @@ export declare const registry: {
|
|
|
349
329
|
}, Record<string, unknown>, {
|
|
350
330
|
status: "error" | "ok";
|
|
351
331
|
challenge?: import("@betterportal/framework").JsonObject | undefined;
|
|
352
|
-
accountUrl?: string | undefined;
|
|
353
|
-
socialUrl?: string | undefined;
|
|
354
332
|
message?: string | undefined;
|
|
355
333
|
accessToken?: string | undefined;
|
|
356
334
|
refreshToken?: string | undefined;
|
|
@@ -362,11 +340,8 @@ export declare const registry: {
|
|
|
362
340
|
name?: string | undefined;
|
|
363
341
|
} | undefined;
|
|
364
342
|
requiresFirstAdmin?: boolean | undefined;
|
|
365
|
-
firstAdminUrl?: string | undefined;
|
|
366
343
|
alreadyLoggedIn?: boolean | undefined;
|
|
367
344
|
loggedOut?: boolean | undefined;
|
|
368
|
-
logoutUrl?: string | undefined;
|
|
369
|
-
nextUrl?: string | undefined;
|
|
370
345
|
}, import("../index.js").PluginFeature, {
|
|
371
346
|
[x: string]: unknown;
|
|
372
347
|
}>;
|
|
@@ -380,8 +355,6 @@ export declare const registry: {
|
|
|
380
355
|
}, {
|
|
381
356
|
status: "error" | "ok";
|
|
382
357
|
challenge?: import("@betterportal/framework").JsonObject | undefined;
|
|
383
|
-
accountUrl?: string | undefined;
|
|
384
|
-
socialUrl?: string | undefined;
|
|
385
358
|
message?: string | undefined;
|
|
386
359
|
accessToken?: string | undefined;
|
|
387
360
|
refreshToken?: string | undefined;
|
|
@@ -393,11 +366,8 @@ export declare const registry: {
|
|
|
393
366
|
name?: string | undefined;
|
|
394
367
|
} | undefined;
|
|
395
368
|
requiresFirstAdmin?: boolean | undefined;
|
|
396
|
-
firstAdminUrl?: string | undefined;
|
|
397
369
|
alreadyLoggedIn?: boolean | undefined;
|
|
398
370
|
loggedOut?: boolean | undefined;
|
|
399
|
-
logoutUrl?: string | undefined;
|
|
400
|
-
nextUrl?: string | undefined;
|
|
401
371
|
}, import("../index.js").PluginFeature, {
|
|
402
372
|
[x: string]: unknown;
|
|
403
373
|
}>;
|
|
@@ -640,7 +610,6 @@ export declare const registry: {
|
|
|
640
610
|
isFirstAdmin: import("anyvali").BoolSchema;
|
|
641
611
|
}>>;
|
|
642
612
|
registrationOpen: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
643
|
-
loginUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
644
613
|
}>;
|
|
645
614
|
query: import("anyvali").ObjectSchema<{
|
|
646
615
|
next: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
@@ -658,7 +627,6 @@ export declare const registry: {
|
|
|
658
627
|
isFirstAdmin: boolean;
|
|
659
628
|
} | undefined;
|
|
660
629
|
registrationOpen?: boolean | undefined;
|
|
661
|
-
loginUrl?: string | undefined;
|
|
662
630
|
}, import("../index.js").PluginFeature, {
|
|
663
631
|
[x: string]: unknown;
|
|
664
632
|
}>;
|
|
@@ -699,7 +667,6 @@ export declare const registry: {
|
|
|
699
667
|
isFirstAdmin: import("anyvali").BoolSchema;
|
|
700
668
|
}>>;
|
|
701
669
|
registrationOpen: import("anyvali").OptionalSchema<import("anyvali").BoolSchema>;
|
|
702
|
-
loginUrl: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
703
670
|
}>;
|
|
704
671
|
query: import("anyvali").ObjectSchema<{
|
|
705
672
|
next: import("anyvali").OptionalSchema<import("anyvali").StringSchema>;
|
|
@@ -730,7 +697,6 @@ export declare const registry: {
|
|
|
730
697
|
isFirstAdmin: boolean;
|
|
731
698
|
} | undefined;
|
|
732
699
|
registrationOpen?: boolean | undefined;
|
|
733
|
-
loginUrl?: string | undefined;
|
|
734
700
|
}, import("../index.js").PluginFeature, {
|
|
735
701
|
[x: string]: unknown;
|
|
736
702
|
}>;
|
|
@@ -762,7 +728,6 @@ export declare const registry: {
|
|
|
762
728
|
isFirstAdmin: boolean;
|
|
763
729
|
} | undefined;
|
|
764
730
|
registrationOpen?: boolean | undefined;
|
|
765
|
-
loginUrl?: string | undefined;
|
|
766
731
|
}, import("../index.js").PluginFeature, {
|
|
767
732
|
[x: string]: unknown;
|
|
768
733
|
}>;
|
|
@@ -783,7 +748,6 @@ export declare const registry: {
|
|
|
783
748
|
isFirstAdmin: boolean;
|
|
784
749
|
} | undefined;
|
|
785
750
|
registrationOpen?: boolean | undefined;
|
|
786
|
-
loginUrl?: string | undefined;
|
|
787
751
|
}, import("../index.js").PluginFeature, {
|
|
788
752
|
[x: string]: unknown;
|
|
789
753
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-auth-default/.bp-generated/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,wBAAwB,MAAM,kDAAkD,CAAC;AAK7F,OAAO,KAAK,sBAAsB,MAAM,gDAAgD,CAAC;AAEzF,OAAO,KAAK,4BAA4B,MAAM,6DAA6D,CAAC;AAI5G,OAAO,KAAK,uBAAuB,MAAM,iDAAiD,CAAC;AAO3F,OAAO,KAAK,yBAAyB,MAAM,mDAAmD,CAAC;AAM/F,OAAO,KAAK,uBAAuB,MAAM,iDAAiD,CAAC;AAI3F,OAAO,KAAK,sBAAsB,MAAM,gDAAgD,CAAC;AAGzF,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-auth-default/.bp-generated/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,wBAAwB,MAAM,kDAAkD,CAAC;AAK7F,OAAO,KAAK,sBAAsB,MAAM,gDAAgD,CAAC;AAEzF,OAAO,KAAK,4BAA4B,MAAM,6DAA6D,CAAC;AAI5G,OAAO,KAAK,uBAAuB,MAAM,iDAAiD,CAAC;AAO3F,OAAO,KAAK,yBAAyB,MAAM,mDAAmD,CAAC;AAM/F,OAAO,KAAK,uBAAuB,MAAM,iDAAiD,CAAC;AAI3F,OAAO,KAAK,sBAAsB,MAAM,gDAAgD,CAAC;AAGzF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8KW,CAAC"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type HtmlRenderable, type ViewRenderContext } from "@betterportal/framework";
|
|
2
2
|
import type { ResponseData } from "../../../loginFlow.js";
|
|
3
|
-
export declare function render(data: ResponseData): HtmlRenderable;
|
|
3
|
+
export declare function render(data: ResponseData, ctx: ViewRenderContext): HtmlRenderable;
|
|
4
4
|
//# sourceMappingURL=GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgD1D,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CA+HjF"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.js
CHANGED
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
|
|
|
2
2
|
/** @jsxImportSource jsx-htmx */
|
|
3
3
|
import { renderChallenge } from "../../../../../accountUI.js";
|
|
4
4
|
import { js } from "jsx-htmx";
|
|
5
|
+
import { resolveAppAuthRedirect } from "@betterportal/framework";
|
|
5
6
|
function loginScript() {
|
|
6
7
|
// IIFE - htmx executes swapped <script> content as a plain script, where a
|
|
7
8
|
// top-level `return` inside a bare block is a SyntaxError.
|
|
@@ -12,7 +13,7 @@ function loginScript() {
|
|
|
12
13
|
// the correct HX-Location post-login.
|
|
13
14
|
const nextInput = form.querySelector('input[name="next"]');
|
|
14
15
|
if (nextInput) {
|
|
15
|
-
nextInput.value = new URLSearchParams(window.location.search).get("next") ||
|
|
16
|
+
nextInput.value = new URLSearchParams(window.location.search).get("next") || nextInput.value;
|
|
16
17
|
}
|
|
17
18
|
form.addEventListener("htmx:before:request", () => {
|
|
18
19
|
const errEl = document.getElementById("bp-login-error");
|
|
@@ -47,38 +48,50 @@ function loginScript() {
|
|
|
47
48
|
});
|
|
48
49
|
})()`);
|
|
49
50
|
}
|
|
50
|
-
export function render(data) {
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
export function render(data, ctx) {
|
|
52
|
+
const account = ctx.routeUrl({ path: "/account", method: "POST" });
|
|
53
|
+
const accountPage = ctx.routeUrl({ path: "/account" });
|
|
54
|
+
const social = ctx.routeUrl({ path: "/social" });
|
|
55
|
+
const logout = ctx.routeUrl({ path: "/login", query: { action: "logout" } });
|
|
56
|
+
const requestedNext = typeof ctx.request.query.next === "string" ? ctx.request.query.next : undefined;
|
|
57
|
+
const next = resolveAppAuthRedirect(ctx, data.loggedOut ? "afterLogout" : "afterLogin", requestedNext);
|
|
58
|
+
const register = ctx.routeUrl({ path: "/register", query: { next: requestedNext } });
|
|
59
|
+
if (data.challenge) {
|
|
60
|
+
if (!account?.absoluteApiPath)
|
|
61
|
+
throw new Error("Account service route is unavailable");
|
|
62
|
+
return renderChallenge(data.challenge, account.absoluteApiPath, "login.complete", next);
|
|
63
|
+
}
|
|
53
64
|
if (data.loggedOut) {
|
|
54
|
-
const next = data.nextUrl || "/";
|
|
55
65
|
return (_jsx("div", { class: "container py-5", style: "max-width: 420px;", children: _jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body text-center", children: [_jsx("h3", { class: "card-title mb-1", children: "Signed out" }), _jsx("p", { class: "text-secondary small mb-4", children: "You have been signed out." }), _jsx("a", { class: "btn btn-primary w-100", href: next, children: "Continue" })] }) }) }));
|
|
56
66
|
}
|
|
57
67
|
// Zero users -> this deployment still needs its first admin. Soft-redirect to
|
|
58
68
|
// the register view in-shell; URL bar follows via hx-push-url.
|
|
59
|
-
if (data.requiresFirstAdmin &&
|
|
60
|
-
return (_jsx("div", { "hx-get":
|
|
69
|
+
if (data.requiresFirstAdmin && register?.absoluteViewPath) {
|
|
70
|
+
return (_jsx("div", { "hx-get": register.absoluteViewPath, "hx-trigger": "load", "hx-target": "#bp-main", "hx-swap": "innerHTML", "hx-push-url": register.uiPath ?? false, children: _jsx("div", { class: "d-flex justify-content-center py-5", children: _jsx("div", { class: "spinner-border", role: "status", children: _jsx("span", { class: "visually-hidden", children: "Redirecting to first-admin setup..." }) }) }) }));
|
|
61
71
|
}
|
|
62
72
|
// Already signed in with an explicit destination - go there immediately,
|
|
63
73
|
// no interstitial. The shell maps the tenant path to its owning service.
|
|
64
|
-
if (data.alreadyLoggedIn &&
|
|
65
|
-
const next = data.nextUrl;
|
|
74
|
+
if (data.alreadyLoggedIn && requestedNext) {
|
|
66
75
|
return (_jsxs("div", { class: "d-flex justify-content-center py-5", children: [_jsx("div", { class: "spinner-border", role: "status", children: _jsx("span", { class: "visually-hidden", children: "Redirecting..." }) }), _jsx("script", { children: js(`window.htmx.ajax("GET", ${JSON.stringify(next)}, { target: "#bp-main", swap: "innerHTML", push: ${JSON.stringify(next)} })`) })] }));
|
|
67
76
|
}
|
|
68
77
|
// Request already carried a valid token - show the signed-in state with a
|
|
69
78
|
// way out (logout path from app config) instead of a pointless login form.
|
|
70
79
|
if (data.alreadyLoggedIn) {
|
|
71
80
|
const displayName = data.user?.name || data.user?.username || data.user?.email || "your account";
|
|
72
|
-
return (_jsxs("div", { class: "container py-5", style: "max-width: 420px;", children: [_jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body text-center", children: [_jsx("h3", { class: "card-title mb-1", children: "Already signed in" }), _jsxs("p", { class: "text-secondary small mb-4", children: ["You are signed in as ", _jsx("strong", { children: displayName }), "."] }), _jsx("button", { id: "bp-login-continue", class: "btn btn-primary w-100 mb-2", children: "Continue" }), _jsx("button", { class: "btn btn-outline-secondary w-100", "hx-get":
|
|
81
|
+
return (_jsxs("div", { class: "container py-5", style: "max-width: 420px;", children: [_jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body text-center", children: [_jsx("h3", { class: "card-title mb-1", children: "Already signed in" }), _jsxs("p", { class: "text-secondary small mb-4", children: ["You are signed in as ", _jsx("strong", { children: displayName }), "."] }), _jsx("button", { id: "bp-login-continue", "data-next": next, class: "btn btn-primary w-100 mb-2", children: "Continue" }), _jsx("button", { class: "btn btn-outline-secondary w-100", "hx-get": logout?.absoluteViewPath ?? undefined, "hx-target": "#bp-main", "hx-swap": "innerHTML", "hx-push-url": logout?.uiPath ?? false, children: "Sign out" })] }) }), _jsx("script", { children: js(`(() => {
|
|
73
82
|
// Honour ?next= the same way the login form does, and soft-navigate
|
|
74
83
|
// inside the shell. The shell's config_request hook maps the tenant
|
|
75
84
|
// path to its owning service origin.
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
const button = document.getElementById("bp-login-continue");
|
|
86
|
+
const next = button?.dataset.next;
|
|
87
|
+
button?.addEventListener("click", () => {
|
|
88
|
+
if (next) window.htmx.ajax("GET", next, { target: "#bp-main", swap: "innerHTML", push: next });
|
|
79
89
|
});
|
|
80
90
|
})()`) })] }));
|
|
81
91
|
}
|
|
82
|
-
|
|
92
|
+
const login = ctx.routeUrl({ path: "/login", method: "POST" })?.absoluteApiPath;
|
|
93
|
+
if (!login)
|
|
94
|
+
throw new Error("Login action route is unavailable");
|
|
95
|
+
return (_jsxs("div", { class: "container py-5", style: "max-width: 420px;", children: [_jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body", children: [_jsx("h3", { class: "card-title mb-1 text-center", children: "Sign in" }), _jsx("p", { class: "text-secondary text-center small mb-4", children: "BetterPortal admin" }), _jsxs("form", { id: "bp-login-form", "data-factor-endpoint": account?.absoluteApiPath ?? undefined, "hx-post": login, "hx-headers": '{"Accept":"application/json"}', "hx-swap": "none", onsubmit: "return window.bpLoginSubmit ? window.bpLoginSubmit(event) : false", "hx-on::response-error": "const xhr=event.detail.xhr;let body=null;try{body=JSON.parse(xhr.responseText)}catch(e){};const errEl=document.getElementById('bp-login-error');if(errEl){errEl.textContent=(body&&body.message)||('Login failed (HTTP '+xhr.status+')');errEl.classList.remove('d-none')}", children: [_jsxs("div", { class: "mb-3", children: [_jsx("label", { class: "form-label", children: "Username *" }), _jsx("input", { type: "text", class: "form-control", name: "username", autocomplete: "username", required: true, autofocus: true })] }), _jsxs("div", { class: "mb-3", children: [_jsx("label", { class: "form-label", children: "Password *" }), _jsx("input", { type: "password", class: "form-control", name: "password", autocomplete: "current-password", required: true })] }), _jsx("input", { type: "hidden", name: "next", value: next }), _jsx("div", { class: "alert alert-danger d-none", id: "bp-login-error" }), _jsx("button", { type: "submit", class: "btn btn-primary w-100", children: "Sign in" })] }), social?.uiPath ? _jsx("a", { class: "d-block mt-3", href: social.uiPath, "hx-get": social.absoluteViewPath ?? undefined, "hx-target": "#bp-main", children: "Sign in with Google, Microsoft or GitHub" }) : null, accountPage?.uiPath ? _jsx("a", { class: "d-block mt-3", href: accountPage.uiPath, "hx-get": accountPage.absoluteViewPath ?? undefined, "hx-target": "#bp-main", children: "Register or recover your account" }) : null] }) }), _jsx("script", { children: loginScript() })] }));
|
|
83
96
|
}
|
|
84
97
|
//# sourceMappingURL=GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAA+C,MAAM,yBAAyB,CAAC;AAG9G,SAAS,WAAW;IAClB,2EAA2E;IAC3E,2DAA2D;IAC3D,OAAO,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCL,CAAC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAkB,EAAE,GAAsB;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACvG,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACvF,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CACL,cAAK,KAAK,EAAC,gBAAgB,EAAC,KAAK,EAAC,mBAAmB,YACnD,cAAK,KAAK,EAAC,yBAAyB,YAClC,eAAK,KAAK,EAAC,uBAAuB,aAChC,aAAI,KAAK,EAAC,iBAAiB,2BAAgB,EAC3C,YAAG,KAAK,EAAC,2BAA2B,0CAA8B,EAClE,YAAG,KAAK,EAAC,uBAAuB,EAAC,IAAI,EAAE,IAAI,yBAAc,IACrD,GACF,GACF,CACP,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,+DAA+D;IAC/D,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAC1D,OAAO,CACL,wBACU,QAAQ,CAAC,gBAAgB,gBACtB,MAAM,eACP,UAAU,aACZ,WAAW,iBACN,QAAQ,CAAC,MAAM,IAAI,KAAK,YAErC,cAAK,KAAK,EAAC,oCAAoC,YAC7C,cAAK,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,QAAQ,YAAC,eAAM,KAAK,EAAC,iBAAiB,oDAA2C,GAAM,GACpH,GACF,CACP,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,IAAI,CAAC,eAAe,IAAI,aAAa,EAAE,CAAC;QAC1C,OAAO,CACL,eAAK,KAAK,EAAC,oCAAoC,aAC7C,cAAK,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,QAAQ,YAAC,eAAM,KAAK,EAAC,iBAAiB,+BAAsB,GAAM,EACnG,2BAAS,EAAE,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oDAAoD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAU,IAC/I,CACP,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,cAAc,CAAC;QACjG,OAAO,CACL,eAAK,KAAK,EAAC,gBAAgB,EAAC,KAAK,EAAC,mBAAmB,aACnD,cAAK,KAAK,EAAC,yBAAyB,YAClC,eAAK,KAAK,EAAC,uBAAuB,aAChC,aAAI,KAAK,EAAC,iBAAiB,kCAAuB,EAClD,aAAG,KAAK,EAAC,2BAA2B,sCAAsB,2BAAS,WAAW,GAAU,SAAK,EAC7F,iBAAQ,EAAE,EAAC,mBAAmB,eAAY,IAAI,EAAE,KAAK,EAAC,4BAA4B,yBAAkB,EACpG,iBACE,KAAK,EAAC,iCAAiC,YAC/B,MAAM,EAAE,gBAAgB,IAAI,SAAS,eACnC,UAAU,aACZ,WAAW,iBACN,MAAM,EAAE,MAAM,IAAI,KAAK,yBACpB,IACd,GACF,EACN,2BAAS,EAAE,CAAC;;;;;;;;;aASP,CAAC,GAAU,IACZ,CACP,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC;IAChF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACjE,OAAO,CACL,eAAK,KAAK,EAAC,gBAAgB,EAAC,KAAK,EAAC,mBAAmB,aACnD,cAAK,KAAK,EAAC,yBAAyB,YAClC,eAAK,KAAK,EAAC,WAAW,aACpB,aAAI,KAAK,EAAC,6BAA6B,wBAAa,EACpD,YAAG,KAAK,EAAC,uCAAuC,mCAAuB,EACvE,gBACE,EAAE,EAAC,eAAe,0BACI,OAAO,EAAE,eAAe,IAAI,SAAS,aAClD,KAAK,gBACH,+BAA+B,aAClC,MAAM,EACd,QAAQ,EAAC,mEAAmE,EAE1E,uBAAuB,EAAE,4QAA4Q,aAGvS,eAAK,KAAK,EAAC,MAAM,aACf,gBAAO,KAAK,EAAC,YAAY,2BAAmB,EAC5C,gBAAO,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU,EAAC,YAAY,EAAC,UAAU,EAAC,QAAQ,QAAC,SAAS,SAAG,IACjG,EACN,eAAK,KAAK,EAAC,MAAM,aACf,gBAAO,KAAK,EAAC,YAAY,2BAAmB,EAC5C,gBAAO,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU,EAAC,YAAY,EAAC,kBAAkB,EAAC,QAAQ,SAAG,IACnG,EACN,gBAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,GAAI,EAChD,cAAK,KAAK,EAAC,2BAA2B,EAAC,EAAE,EAAC,gBAAgB,GAAO,EACjE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,uBAAuB,wBAAiB,IAC/D,EACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,YAAG,KAAK,EAAC,cAAc,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,YAAU,MAAM,CAAC,gBAAgB,IAAI,SAAS,eAAY,UAAU,yDAA6C,CAAC,CAAC,CAAC,IAAI,EACpL,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,YAAG,KAAK,EAAC,cAAc,EAAC,IAAI,EAAE,WAAW,CAAC,MAAM,YAAU,WAAW,CAAC,gBAAgB,IAAI,SAAS,eAAY,UAAU,iDAAqC,CAAC,CAAC,CAAC,IAAI,IACxL,GACF,EACN,2BAAS,WAAW,EAAE,GAAU,IAC5B,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HtmlRenderable } from "@betterportal/framework";
|
|
1
|
+
import type { HtmlRenderable, ViewRenderContext } from "@betterportal/framework";
|
|
2
2
|
import type { ResponseData } from "../../../registrationFlow.js";
|
|
3
|
-
export declare function render(data: ResponseData): HtmlRenderable;
|
|
3
|
+
export declare function render(data: ResponseData, ctx: ViewRenderContext): HtmlRenderable;
|
|
4
4
|
//# sourceMappingURL=GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAoFjE,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAyCjF"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.js
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
|
|
2
2
|
/** @jsxImportSource jsx-htmx */
|
|
3
3
|
import { js } from "jsx-htmx";
|
|
4
|
-
/** Tenant-relative path (+query) of an absolute self-origin URL, for hx-push-url. */
|
|
5
|
-
function pushPathOf(url, fallback) {
|
|
6
|
-
if (!url)
|
|
7
|
-
return fallback;
|
|
8
|
-
try {
|
|
9
|
-
const parsed = new URL(url);
|
|
10
|
-
return parsed.pathname + parsed.search;
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
return fallback;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/** Client-side confirm-password gate; everything else is server-rendered. */
|
|
17
4
|
function registerScript() {
|
|
18
5
|
// IIFE - htmx executes swapped <script> content as a plain script, where a
|
|
19
6
|
// top-level `return` inside a bare block is a SyntaxError.
|
|
@@ -36,28 +23,32 @@ function registerScript() {
|
|
|
36
23
|
function redirectStub(url, pushUrl, label) {
|
|
37
24
|
return (_jsx("div", { "hx-get": url, "hx-trigger": "load delay:1200ms", "hx-target": "#bp-main", "hx-swap": "innerHTML", "hx-push-url": pushUrl, children: _jsx("div", { class: "d-flex justify-content-center py-3", children: _jsx("div", { class: "spinner-border spinner-border-sm", role: "status", children: _jsx("span", { class: "visually-hidden", children: label }) }) }) }));
|
|
38
25
|
}
|
|
39
|
-
function renderForm(data) {
|
|
40
|
-
|
|
26
|
+
function renderForm(data, ctx) {
|
|
27
|
+
const target = ctx.routeUrl({ path: "/register", method: "POST", query: { next: typeof ctx.request.query.next === "string" ? ctx.request.query.next : undefined } })?.absoluteApiPath;
|
|
28
|
+
if (!target)
|
|
29
|
+
throw new Error("Registration action route is unavailable");
|
|
30
|
+
return (_jsxs("div", { class: "container py-5", style: "max-width: 420px;", children: [_jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body", children: [_jsx("h3", { class: "card-title mb-1 text-center", children: "Create first admin" }), _jsx("p", { class: "text-secondary text-center small mb-4", children: "This deployment has no users yet. The account you create here becomes the platform administrator." }), _jsxs("form", { id: "bp-register-form", "hx-post": target, "hx-target": "#bp-main", "hx-swap": "innerHTML", children: [_jsxs("div", { class: "mb-3", children: [_jsx("label", { class: "form-label", children: "Deployment setup token" }), _jsx("input", { class: "form-control", type: "password", name: "setupToken", required: true, autocomplete: "off" })] }), _jsxs("div", { class: "mb-3", children: [_jsx("label", { class: "form-label", children: "Username *" }), _jsx("input", { type: "text", class: "form-control", name: "username", autocomplete: "username", required: true, autofocus: true })] }), _jsxs("div", { class: "mb-3", children: [_jsx("label", { class: "form-label", children: "Email" }), _jsx("input", { type: "email", class: "form-control", name: "email", autocomplete: "email" })] }), _jsxs("div", { class: "mb-3", children: [_jsxs("label", { class: "form-label", children: ["Password * ", _jsx("span", { class: "text-secondary small", children: "(min 12 chars)" })] }), _jsx("input", { type: "password", class: "form-control", name: "password", autocomplete: "new-password", minlength: "12", required: true })] }), _jsxs("div", { class: "mb-3", children: [_jsx("label", { class: "form-label", children: "Confirm password *" }), _jsx("input", { type: "password", class: "form-control", id: "bp-register-confirm", autocomplete: "new-password", minlength: "12", required: true })] }), _jsx("div", { class: `alert alert-danger ${data.status === "error" && data.message ? "" : "d-none"}`, id: "bp-register-error", children: data.status === "error" ? (data.message ?? "") : "" }), _jsx("button", { type: "submit", class: "btn btn-primary w-100", children: "Create admin account" })] })] }) }), _jsx("script", { children: registerScript() })] }));
|
|
41
31
|
}
|
|
42
|
-
export function render(data) {
|
|
32
|
+
export function render(data, ctx) {
|
|
33
|
+
const login = ctx.routeUrl({ path: "/login", query: { next: typeof ctx.request.query.next === "string" ? ctx.request.query.next : undefined } });
|
|
43
34
|
// POST success - server-rendered confirmation, then on to sign-in.
|
|
44
35
|
if (data.status === "ok" && data.user) {
|
|
45
|
-
return (_jsx("div", { class: "container py-5", style: "max-width: 420px;", children: _jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body text-center", children: [_jsx("h3", { class: "card-title mb-2", children: "Admin created" }), _jsxs("div", { class: "alert alert-success mb-3", children: [_jsx("strong", { children: data.user.username }), " is now the platform administrator."] }), _jsx("p", { class: "text-secondary small mb-0", children: "Taking you to sign in..." }),
|
|
46
|
-
? redirectStub(
|
|
47
|
-
: _jsx("
|
|
36
|
+
return (_jsx("div", { class: "container py-5", style: "max-width: 420px;", children: _jsx("div", { class: "card border-0 shadow-sm", children: _jsxs("div", { class: "card-body text-center", children: [_jsx("h3", { class: "card-title mb-2", children: "Admin created" }), _jsxs("div", { class: "alert alert-success mb-3", children: [_jsx("strong", { children: data.user.username }), " is now the platform administrator."] }), _jsx("p", { class: "text-secondary small mb-0", children: "Taking you to sign in..." }), login?.absoluteViewPath && login.uiPath
|
|
37
|
+
? redirectStub(login.absoluteViewPath, login.uiPath, "Redirecting to sign in...")
|
|
38
|
+
: _jsx("p", { class: "text-secondary mt-3", children: "Sign in through your app to continue." })] }) }) }));
|
|
48
39
|
}
|
|
49
40
|
// POST validation error (rendered via the 400 status view) - form + message.
|
|
50
41
|
if (data.status === "error") {
|
|
51
|
-
return renderForm(data);
|
|
42
|
+
return renderForm(data, ctx);
|
|
52
43
|
}
|
|
53
44
|
// GET with users already present - registrations are closed; bounce to login.
|
|
54
45
|
if (!data.registrationOpen) {
|
|
55
|
-
if (
|
|
56
|
-
return redirectStub(
|
|
46
|
+
if (login?.absoluteViewPath && login.uiPath) {
|
|
47
|
+
return redirectStub(login.absoluteViewPath, login.uiPath, "Redirecting to sign in...");
|
|
57
48
|
}
|
|
58
|
-
return (_jsx("div", { class: "container py-5", style: "max-width: 420px;", children:
|
|
49
|
+
return (_jsx("div", { class: "container py-5", style: "max-width: 420px;", children: _jsx("div", { class: "alert alert-secondary", children: "Registration is closed. Sign in through your app to continue." }) }));
|
|
59
50
|
}
|
|
60
51
|
// GET, zero users - the first-admin form.
|
|
61
|
-
return renderForm(data);
|
|
52
|
+
return renderForm(data, ctx);
|
|
62
53
|
}
|
|
63
54
|
//# sourceMappingURL=GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAI9B,
|
|
1
|
+
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export default createHandler({ response: ResponseSchema, query: QuerySchema }, (
|
|
|
14
14
|
ctx.responseHeaders?.set("Cache-Control", "no-store");
|
|
15
15
|
ctx.responseHeaders?.set("Referrer-Policy", "no-referrer");
|
|
16
16
|
try {
|
|
17
|
-
return { status: "ok",
|
|
17
|
+
return { status: "ok", signedIn: !!ctx.user, code: String(ctx.query.code ?? ""), state: String(ctx.query.state ?? ""), error: String(ctx.query.error ?? ""), connections: socialConnections(ctx.plugin.runtime, { tenantId: ctx.tenant.id, appId: ctx.app.id }).map(c => ({ id: c.id, title: c.kind })) };
|
|
18
18
|
}
|
|
19
19
|
catch (error) {
|
|
20
20
|
if (!(error instanceof AuthError))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-default/bp-routes/social/GET.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAU,CAAC;AACvI,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3I,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,eAAe,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,EAAc,EAAE;IACjG,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAClH,IAAI,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-default/bp-routes/social/GET.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAU,CAAC;AACvI,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3I,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,eAAe,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,EAAc,EAAE;IACjG,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAClH,IAAI,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC5S,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC;YAAE,MAAM,KAAK,CAAC;QAC/C,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACtE,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export declare function render(data: Record<string, any
|
|
1
|
+
import { type HtmlRenderable, type ViewRenderContext } from "@betterportal/framework";
|
|
2
|
+
export declare function render(data: Record<string, any>, ctx: ViewRenderContext): HtmlRenderable;
|
|
3
3
|
//# sourceMappingURL=GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9G,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAuCxF"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "jsx-htmx/jsx-runtime";
|
|
2
2
|
/** @jsxImportSource jsx-htmx */
|
|
3
3
|
import { js } from "jsx-htmx";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { resolveAppAuthRedirect } from "@betterportal/framework";
|
|
5
|
+
export function render(data, ctx) {
|
|
6
|
+
const afterLogin = resolveAppAuthRedirect(ctx, "afterLogin", typeof ctx.request.query.next === "string" ? ctx.request.query.next : undefined);
|
|
7
|
+
const endpoint = ctx.routeUrl({ path: "/social", method: "POST" })?.absoluteApiPath;
|
|
8
|
+
const account = ctx.routeUrl({ path: "/account", method: "POST" })?.absoluteApiPath;
|
|
9
|
+
if (!endpoint || !account)
|
|
10
|
+
throw new Error("Social authentication service routes are unavailable");
|
|
11
|
+
return _jsxs("section", { id: "bp-social-ui", class: "container py-4", style: "max-width:540px", "data-endpoint": endpoint, "data-account-endpoint": account, "data-after-login": afterLogin, "data-code": data.code, "data-state": data.state, children: [_jsx("h2", { children: data.signedIn ? "Link a sign-in provider" : "Sign in" }), _jsx("p", { role: "status", children: data.message ?? (data.error ? "The provider declined sign-in. Try again." : "") }), data.connections.map((c) => _jsxs("button", { class: "btn btn-outline-primary m-2", "data-connection": c.id, "data-action": data.signedIn ? "link" : "start", children: ["Continue with ", c.title] })), _jsx("script", { children: js(`(() => {
|
|
6
12
|
const root = document.getElementById("bp-social-ui"); if (!root) return;
|
|
7
13
|
const status = root.querySelector('[role="status"]');
|
|
8
14
|
const api = window.BetterPortalAuth;
|
|
@@ -24,11 +30,11 @@ export function render(data) {
|
|
|
24
30
|
let result = await send({ action: "complete", id, secret, code: root.dataset.code });
|
|
25
31
|
if (result.challenge) {
|
|
26
32
|
const factor = await api.factor(result.challenge); if (!factor) { status.textContent = "Sign-in cancelled."; return; }
|
|
27
|
-
result = await send({ action: "login.complete", id: result.challenge.id, secret: result.challenge.secret, ...factor },
|
|
33
|
+
result = await send({ action: "login.complete", id: result.challenge.id, secret: result.challenge.secret, ...factor }, root.dataset.accountEndpoint);
|
|
28
34
|
}
|
|
29
35
|
status.textContent = result.message || "Signed in.";
|
|
30
36
|
if (result.recoveryCodes?.length) { const pre = document.createElement("pre"); pre.textContent = "Save your recovery codes:\\n" + result.recoveryCodes.join("\\n"); status.append(pre); }
|
|
31
|
-
if (result.
|
|
37
|
+
if (result.authenticated && root.dataset.afterLogin) { const link = document.createElement("a"); link.href = root.dataset.afterLogin; link.textContent = "Continue"; link.className = "btn btn-primary d-block"; status.append(link); }
|
|
32
38
|
} catch (error) { status.textContent = error.message; }
|
|
33
39
|
})();
|
|
34
40
|
})()`) })] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAA+C,MAAM,yBAAyB,CAAC;AAC9G,MAAM,UAAU,MAAM,CAAC,IAAyB,EAAE,GAAsB;IACtE,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9I,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC;IACpF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC;IACpF,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACnG,OAAO,mBAAS,EAAE,EAAC,cAAc,EAAC,KAAK,EAAC,gBAAgB,EAAC,KAAK,EAAC,iBAAiB,mBAAgB,QAAQ,2BAAyB,OAAO,sBAAoB,UAAU,eAAa,IAAI,CAAC,IAAI,gBAAc,IAAI,CAAC,KAAK,aAClN,uBAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,GAAM,EAAA,YAAG,IAAI,EAAC,QAAQ,YAAE,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC,GAAK,EACrK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,kBAAQ,KAAK,EAAC,6BAA6B,qBAAkB,CAAC,CAAC,EAAE,iBAAe,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,+BAAiB,CAAC,CAAC,KAAK,IAAU,CAAC,EACrL,2BAAS,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6BP,CAAC,GAAU,IACR,CAAC;AACb,CAAC"}
|
|
@@ -21,9 +21,9 @@ export default createHandler({ response: ResponseSchema, query: QuerySchema }, a
|
|
|
21
21
|
const users = page.slice(0, 100);
|
|
22
22
|
const groups = await tx.list("group", dir);
|
|
23
23
|
return {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
nextCursor: page.length > 100 ? users.at(-1).id : "",
|
|
25
|
+
mailNextCursor: mailPage.length > 100 ? mailPage[99].id : "",
|
|
26
|
+
status: "ok", registration: policy.registration, isolation: policy.isolation, mode: runtime.identity.storage.mode, roleIds: policy.allowedRoleIds, canManageDirectory: policy.isolation === "app" || policy.canManageDirectory === true,
|
|
27
27
|
users: await Promise.all(users.map(async (u) => {
|
|
28
28
|
const roles = (await tx.get("roles", u.id, scope))?.roles ?? [];
|
|
29
29
|
const groupRoles = groups.filter(g => g.members.includes(u.id)).flatMap(g => g.appRoles[scope.appId] ?? []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-default/bp-routes/users/GET.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,MAAe,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7J,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAU,CAAC;AAC5F,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/G,eAAe,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;IACzF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAAC,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IAAC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7I,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/F,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAC,EAAE,EAAC,EAAE;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAiD,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAO,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO;YACP,
|
|
1
|
+
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-default/bp-routes/users/GET.ts"],"names":[],"mappings":"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"}
|
package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { HtmlRenderable } from "@betterportal/framework";
|
|
2
|
-
export declare function render(data: Record<string, any
|
|
1
|
+
import type { HtmlRenderable, ViewRenderContext } from "@betterportal/framework";
|
|
2
|
+
export declare function render(data: Record<string, any>, ctx: ViewRenderContext): HtmlRenderable;
|
|
3
3
|
//# sourceMappingURL=GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAiGxF"}
|