@byline/host-tanstack-start 5.0.0 → 5.1.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/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
- package/dist/admin-shell/chrome/admin-app-bar.js +10 -2
- package/dist/admin-shell/chrome/session-change-boundary.d.ts +14 -0
- package/dist/admin-shell/chrome/session-change-boundary.js +87 -0
- package/dist/admin-shell/chrome/session-change-boundary.test.d.ts +8 -0
- package/dist/admin-shell/chrome/sign-in-page.d.ts +2 -1
- package/dist/admin-shell/chrome/sign-in-page.js +60 -3
- package/dist/integrations/byline-admin-services.js +7 -1
- package/dist/integrations/client-ip.d.ts +19 -0
- package/dist/integrations/client-ip.js +34 -0
- package/dist/integrations/session-coordination.d.ts +24 -0
- package/dist/integrations/session-coordination.js +85 -0
- package/dist/integrations/session-middleware.d.ts +11 -0
- package/dist/integrations/session-middleware.js +94 -0
- package/dist/integrations/session-request-kind.d.ts +9 -0
- package/dist/integrations/session-request-kind.js +10 -0
- package/dist/integrations/session-request-middleware.d.ts +9 -0
- package/dist/integrations/session-request-middleware.js +7 -0
- package/dist/integrations/sign-in-body.d.ts +12 -0
- package/dist/integrations/sign-in-body.js +52 -0
- package/dist/integrations/sign-in-middleware.d.ts +9 -0
- package/dist/integrations/sign-in-middleware.js +10 -0
- package/dist/routes/create-admin-layout-route.js +46 -31
- package/dist/routes/create-sign-in-route.js +4 -2
- package/dist/server-fns/admin-account/change-password.d.ts +3 -1
- package/dist/server-fns/admin-account/change-password.js +9 -3
- package/dist/server-fns/admin-account/get.d.ts +3 -1
- package/dist/server-fns/admin-account/get.js +4 -1
- package/dist/server-fns/admin-account/index.d.ts +5 -5
- package/dist/server-fns/admin-account/update.d.ts +3 -1
- package/dist/server-fns/admin-account/update.js +4 -1
- package/dist/server-fns/admin-activity/get.d.ts +3 -1
- package/dist/server-fns/admin-activity/get.js +4 -1
- package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +3 -1
- package/dist/server-fns/admin-permissions/get-role-abilities.js +4 -1
- package/dist/server-fns/admin-permissions/index.d.ts +4 -4
- package/dist/server-fns/admin-permissions/list-registered.d.ts +3 -1
- package/dist/server-fns/admin-permissions/list-registered.js +4 -1
- package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +3 -1
- package/dist/server-fns/admin-permissions/set-role-abilities.js +4 -1
- package/dist/server-fns/admin-permissions/who-has.d.ts +3 -1
- package/dist/server-fns/admin-permissions/who-has.js +4 -1
- package/dist/server-fns/admin-roles/create.d.ts +3 -1
- package/dist/server-fns/admin-roles/create.js +4 -1
- package/dist/server-fns/admin-roles/delete.d.ts +3 -1
- package/dist/server-fns/admin-roles/delete.js +4 -1
- package/dist/server-fns/admin-roles/get.d.ts +3 -1
- package/dist/server-fns/admin-roles/get.js +4 -1
- package/dist/server-fns/admin-roles/index.d.ts +6 -6
- package/dist/server-fns/admin-roles/list.d.ts +3 -1
- package/dist/server-fns/admin-roles/list.js +4 -1
- package/dist/server-fns/admin-roles/reorder.d.ts +3 -1
- package/dist/server-fns/admin-roles/reorder.js +4 -1
- package/dist/server-fns/admin-roles/update.d.ts +3 -1
- package/dist/server-fns/admin-roles/update.js +4 -1
- package/dist/server-fns/admin-users/create.d.ts +3 -1
- package/dist/server-fns/admin-users/create.js +4 -1
- package/dist/server-fns/admin-users/delete.d.ts +3 -1
- package/dist/server-fns/admin-users/delete.js +4 -1
- package/dist/server-fns/admin-users/disable.d.ts +3 -1
- package/dist/server-fns/admin-users/disable.js +4 -1
- package/dist/server-fns/admin-users/enable.d.ts +3 -1
- package/dist/server-fns/admin-users/enable.js +4 -1
- package/dist/server-fns/admin-users/get-user-roles.d.ts +3 -1
- package/dist/server-fns/admin-users/get-user-roles.js +4 -1
- package/dist/server-fns/admin-users/get.d.ts +3 -1
- package/dist/server-fns/admin-users/get.js +4 -1
- package/dist/server-fns/admin-users/index.d.ts +10 -10
- package/dist/server-fns/admin-users/list.d.ts +3 -1
- package/dist/server-fns/admin-users/list.js +4 -1
- package/dist/server-fns/admin-users/set-password.d.ts +3 -1
- package/dist/server-fns/admin-users/set-password.js +4 -1
- package/dist/server-fns/admin-users/set-user-roles.d.ts +3 -1
- package/dist/server-fns/admin-users/set-user-roles.js +4 -1
- package/dist/server-fns/admin-users/update.d.ts +3 -1
- package/dist/server-fns/admin-users/update.js +4 -1
- package/dist/server-fns/ai/execute.d.ts +3 -1
- package/dist/server-fns/ai/execute.js +4 -1
- package/dist/server-fns/ai/index.d.ts +1 -1
- package/dist/server-fns/analytics/maintenance.d.ts +6 -2
- package/dist/server-fns/analytics/maintenance.js +7 -2
- package/dist/server-fns/analytics/queries.d.ts +18 -6
- package/dist/server-fns/analytics/queries.js +19 -6
- package/dist/server-fns/auth/current-user.d.ts +1 -0
- package/dist/server-fns/auth/current-user.js +5 -2
- package/dist/server-fns/auth/renew.d.ts +13 -0
- package/dist/server-fns/auth/renew.js +45 -0
- package/dist/server-fns/auth/sign-in.d.ts +2 -1
- package/dist/server-fns/auth/sign-in.js +88 -17
- package/dist/server-fns/auth/sign-out.d.ts +3 -1
- package/dist/server-fns/auth/sign-out.js +38 -6
- package/dist/server-fns/collections/audit.d.ts +3 -1
- package/dist/server-fns/collections/audit.js +4 -1
- package/dist/server-fns/collections/copy-to-locale.d.ts +10 -1
- package/dist/server-fns/collections/copy-to-locale.js +5 -2
- package/dist/server-fns/collections/create.d.ts +10 -1
- package/dist/server-fns/collections/create.js +5 -2
- package/dist/server-fns/collections/delete-locale.d.ts +10 -1
- package/dist/server-fns/collections/delete-locale.js +5 -2
- package/dist/server-fns/collections/delete.d.ts +10 -1
- package/dist/server-fns/collections/delete.js +5 -2
- package/dist/server-fns/collections/duplicate.d.ts +10 -1
- package/dist/server-fns/collections/duplicate.js +5 -2
- package/dist/server-fns/collections/get.d.ts +7 -0
- package/dist/server-fns/collections/get.js +8 -3
- package/dist/server-fns/collections/history.d.ts +3 -1
- package/dist/server-fns/collections/history.js +4 -1
- package/dist/server-fns/collections/index.d.ts +21 -21
- package/dist/server-fns/collections/list.d.ts +10 -1
- package/dist/server-fns/collections/list.js +5 -2
- package/dist/server-fns/collections/reindex.d.ts +3 -1
- package/dist/server-fns/collections/reindex.js +4 -1
- package/dist/server-fns/collections/reorder.d.ts +10 -1
- package/dist/server-fns/collections/reorder.js +5 -2
- package/dist/server-fns/collections/restore-version.d.ts +10 -1
- package/dist/server-fns/collections/restore-version.js +5 -2
- package/dist/server-fns/collections/scheduled-publication.d.ts +22 -5
- package/dist/server-fns/collections/scheduled-publication.js +17 -6
- package/dist/server-fns/collections/set-list-view-preference.d.ts +3 -1
- package/dist/server-fns/collections/set-list-view-preference.js +4 -1
- package/dist/server-fns/collections/stats.js +4 -1
- package/dist/server-fns/collections/status.d.ts +13 -2
- package/dist/server-fns/collections/status.js +8 -3
- package/dist/server-fns/collections/tree.d.ts +22 -5
- package/dist/server-fns/collections/tree.js +17 -6
- package/dist/server-fns/collections/update.d.ts +13 -2
- package/dist/server-fns/collections/update.js +8 -3
- package/dist/server-fns/collections/upload.d.ts +10 -1
- package/dist/server-fns/collections/upload.js +4 -1
- package/dist/server-fns/i18n/set-locale.d.ts +3 -1
- package/dist/server-fns/i18n/set-locale.js +18 -3
- package/dist/server-fns/preview/disable.d.ts +3 -1
- package/dist/server-fns/preview/disable.js +4 -1
- package/dist/server-fns/preview/enable.d.ts +3 -1
- package/dist/server-fns/preview/enable.js +4 -1
- package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +10 -1
- package/dist/server-fns/singletons/cancel-scheduled-publish.js +5 -2
- package/dist/server-fns/singletons/change-status.d.ts +10 -1
- package/dist/server-fns/singletons/change-status.js +5 -2
- package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +10 -1
- package/dist/server-fns/singletons/confirm-scheduled-publish.js +5 -2
- package/dist/server-fns/singletons/copy-to-locale.d.ts +10 -1
- package/dist/server-fns/singletons/copy-to-locale.js +5 -2
- package/dist/server-fns/singletons/find-by-version.d.ts +3 -1
- package/dist/server-fns/singletons/find-by-version.js +4 -1
- package/dist/server-fns/singletons/get-scheduled-publish.d.ts +3 -1
- package/dist/server-fns/singletons/get-scheduled-publish.js +4 -1
- package/dist/server-fns/singletons/get.d.ts +3 -1
- package/dist/server-fns/singletons/get.js +4 -1
- package/dist/server-fns/singletons/history.d.ts +3 -1
- package/dist/server-fns/singletons/history.js +4 -1
- package/dist/server-fns/singletons/restore-version.d.ts +10 -1
- package/dist/server-fns/singletons/restore-version.js +5 -2
- package/dist/server-fns/singletons/schedule-publish.d.ts +10 -1
- package/dist/server-fns/singletons/schedule-publish.js +5 -2
- package/dist/server-fns/singletons/unpublish.d.ts +10 -1
- package/dist/server-fns/singletons/unpublish.js +5 -2
- package/dist/server-fns/singletons/update.d.ts +10 -1
- package/dist/server-fns/singletons/update.js +5 -2
- package/package.json +19 -19
- package/src/admin-shell/chrome/admin-app-bar.tsx +11 -6
- package/src/admin-shell/chrome/session-change-boundary.test.tsx +78 -0
- package/src/admin-shell/chrome/session-change-boundary.tsx +94 -0
- package/src/admin-shell/chrome/sign-in-page.tsx +68 -3
- package/src/integrations/byline-admin-services.ts +7 -1
- package/src/integrations/client-ip.test.node.ts +45 -0
- package/src/integrations/client-ip.ts +54 -0
- package/src/integrations/framework-fetch-shape.test.node.ts +56 -0
- package/src/integrations/session-client.test.node.ts +121 -0
- package/src/integrations/session-coordination.test.node.ts +77 -0
- package/src/integrations/session-coordination.ts +96 -0
- package/src/integrations/session-middleware.test.node.ts +87 -0
- package/src/integrations/session-middleware.ts +107 -0
- package/src/integrations/session-request-kind.ts +18 -0
- package/src/integrations/session-request-middleware.ts +17 -0
- package/src/integrations/sign-in-body.test.node.ts +59 -0
- package/src/integrations/sign-in-body.ts +50 -0
- package/src/integrations/sign-in-middleware.ts +24 -0
- package/src/routes/create-admin-layout-route.tsx +48 -30
- package/src/routes/create-sign-in-route.tsx +10 -2
- package/src/server-fns/admin-account/change-password.test.node.ts +69 -0
- package/src/server-fns/admin-account/change-password.ts +13 -2
- package/src/server-fns/admin-account/get.ts +2 -0
- package/src/server-fns/admin-account/update.ts +2 -0
- package/src/server-fns/admin-activity/get.ts +2 -0
- package/src/server-fns/admin-permissions/get-role-abilities.ts +2 -0
- package/src/server-fns/admin-permissions/list-registered.ts +5 -4
- package/src/server-fns/admin-permissions/set-role-abilities.ts +2 -0
- package/src/server-fns/admin-permissions/who-has.ts +2 -0
- package/src/server-fns/admin-roles/create.ts +2 -0
- package/src/server-fns/admin-roles/delete.ts +2 -0
- package/src/server-fns/admin-roles/get.ts +2 -0
- package/src/server-fns/admin-roles/list.ts +5 -4
- package/src/server-fns/admin-roles/reorder.ts +2 -0
- package/src/server-fns/admin-roles/update.ts +2 -0
- package/src/server-fns/admin-users/create.ts +2 -0
- package/src/server-fns/admin-users/delete.ts +2 -0
- package/src/server-fns/admin-users/disable.ts +2 -0
- package/src/server-fns/admin-users/enable.ts +2 -0
- package/src/server-fns/admin-users/get-user-roles.ts +2 -0
- package/src/server-fns/admin-users/get.ts +2 -0
- package/src/server-fns/admin-users/list.ts +2 -0
- package/src/server-fns/admin-users/set-password.ts +2 -0
- package/src/server-fns/admin-users/set-user-roles.ts +2 -0
- package/src/server-fns/admin-users/update.ts +2 -0
- package/src/server-fns/ai/execute.ts +3 -0
- package/src/server-fns/analytics/maintenance.ts +4 -0
- package/src/server-fns/analytics/queries.ts +14 -8
- package/src/server-fns/auth/current-user.ts +7 -3
- package/src/server-fns/auth/renew.test.node.ts +85 -0
- package/src/server-fns/auth/renew.ts +54 -0
- package/src/server-fns/auth/sign-in.test.node.ts +114 -0
- package/src/server-fns/auth/sign-in.ts +80 -27
- package/src/server-fns/auth/sign-out.test.node.ts +85 -0
- package/src/server-fns/auth/sign-out.ts +44 -19
- package/src/server-fns/collections/audit.ts +2 -0
- package/src/server-fns/collections/copy-to-locale.ts +3 -1
- package/src/server-fns/collections/create.ts +3 -1
- package/src/server-fns/collections/delete-locale.ts +3 -1
- package/src/server-fns/collections/delete.ts +3 -1
- package/src/server-fns/collections/duplicate.ts +3 -1
- package/src/server-fns/collections/get.ts +4 -1
- package/src/server-fns/collections/history.ts +2 -0
- package/src/server-fns/collections/list.ts +3 -1
- package/src/server-fns/collections/reindex.ts +2 -0
- package/src/server-fns/collections/reorder.ts +3 -1
- package/src/server-fns/collections/restore-version.ts +3 -1
- package/src/server-fns/collections/revision-input.test.node.ts +14 -0
- package/src/server-fns/collections/scheduled-publication.ts +14 -7
- package/src/server-fns/collections/set-list-view-preference.ts +2 -0
- package/src/server-fns/collections/stats.ts +2 -0
- package/src/server-fns/collections/status.ts +4 -1
- package/src/server-fns/collections/tree.ts +7 -1
- package/src/server-fns/collections/update.ts +4 -1
- package/src/server-fns/collections/upload-singleton.test.node.ts +8 -1
- package/src/server-fns/collections/upload.ts +10 -0
- package/src/server-fns/i18n/set-locale.ts +19 -3
- package/src/server-fns/preview/disable.ts +8 -4
- package/src/server-fns/preview/enable.ts +9 -5
- package/src/server-fns/singletons/cancel-scheduled-publish.ts +3 -1
- package/src/server-fns/singletons/change-status.ts +3 -1
- package/src/server-fns/singletons/confirm-scheduled-publish.ts +3 -1
- package/src/server-fns/singletons/copy-to-locale.ts +3 -1
- package/src/server-fns/singletons/find-by-version.ts +2 -0
- package/src/server-fns/singletons/get-scheduled-publish.ts +2 -0
- package/src/server-fns/singletons/get.ts +2 -0
- package/src/server-fns/singletons/history.ts +2 -0
- package/src/server-fns/singletons/restore-version.ts +3 -1
- package/src/server-fns/singletons/schedule-publish.ts +3 -1
- package/src/server-fns/singletons/singletons.test.node.ts +6 -0
- package/src/server-fns/singletons/unpublish.ts +3 -1
- package/src/server-fns/singletons/update.ts +3 -1
|
@@ -14,7 +14,9 @@ export interface UpdateAdminRoleInput {
|
|
|
14
14
|
order?: number;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export declare const updateAdminRole: import("@tanstack/react-start").RequiredFetcher<
|
|
17
|
+
export declare const updateAdminRole: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
18
|
+
bylineExpectedSessionId: string | null;
|
|
19
|
+
}, undefined, undefined>], (input: UpdateAdminRoleInput) => UpdateAdminRoleInput, Promise<{
|
|
18
20
|
id: string;
|
|
19
21
|
vid: number;
|
|
20
22
|
name: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { updateAdminRoleCommand } from "@byline/admin/admin-roles";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const updateAdminRole = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return updateAdminRoleCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -15,7 +15,9 @@ export interface CreateAdminUserInput {
|
|
|
15
15
|
is_enabled?: boolean;
|
|
16
16
|
is_email_verified?: boolean;
|
|
17
17
|
}
|
|
18
|
-
export declare const createAdminUser: import("@tanstack/react-start").RequiredFetcher<
|
|
18
|
+
export declare const createAdminUser: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
19
|
+
bylineExpectedSessionId: string | null;
|
|
20
|
+
}, undefined, undefined>], (input: CreateAdminUserInput) => CreateAdminUserInput, Promise<{
|
|
19
21
|
id: string;
|
|
20
22
|
vid: number;
|
|
21
23
|
email: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { createAdminUserCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const createAdminUser = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return createAdminUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const deleteAdminUser: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const deleteAdminUser: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
id: string;
|
|
10
12
|
vid: number;
|
|
11
13
|
}) => {
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { deleteAdminUserCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const deleteAdminUser = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return deleteAdminUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const disableAdminUser: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const disableAdminUser: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
id: string;
|
|
10
12
|
}) => {
|
|
11
13
|
id: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { disableAdminUserCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const disableAdminUser = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return disableAdminUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const enableAdminUser: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const enableAdminUser: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
id: string;
|
|
10
12
|
}) => {
|
|
11
13
|
id: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { enableAdminUserCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const enableAdminUser = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return enableAdminUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const getUserRoles: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const getUserRoles: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
userId: string;
|
|
10
12
|
}) => {
|
|
11
13
|
userId: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { getRolesForUserCommand } from "@byline/admin/admin-roles";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const getUserRoles = createServerFn({
|
|
6
7
|
method: 'GET'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return getRolesForUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const getAdminUser: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const getAdminUser: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
id: string;
|
|
10
12
|
}) => {
|
|
11
13
|
id: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { getAdminUserCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const getAdminUser = createServerFn({
|
|
6
7
|
method: 'GET'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return getAdminUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
*/
|
|
16
16
|
export type { UserRolesResponse } from '@byline/admin/admin-roles';
|
|
17
17
|
export type { AdminUserListOrder, AdminUserListResponse, AdminUserResponse, OkResponse, } from '@byline/admin/admin-users';
|
|
18
|
-
export { type CreateAdminUserInput, createAdminUser } from './create';
|
|
19
|
-
export { deleteAdminUser } from './delete';
|
|
20
|
-
export { disableAdminUser } from './disable';
|
|
21
|
-
export { enableAdminUser } from './enable';
|
|
22
|
-
export { getAdminUser } from './get';
|
|
23
|
-
export { getUserRoles } from './get-user-roles';
|
|
24
|
-
export { type ListAdminUsersInput, listAdminUsers } from './list';
|
|
25
|
-
export { type SetAdminUserPasswordInput, setAdminUserPassword } from './set-password';
|
|
26
|
-
export { type SetUserRolesInput, setUserRoles } from './set-user-roles';
|
|
27
|
-
export { type UpdateAdminUserInput, updateAdminUser } from './update';
|
|
18
|
+
export { type CreateAdminUserInput, createAdminUser } from './create.js';
|
|
19
|
+
export { deleteAdminUser } from './delete.js';
|
|
20
|
+
export { disableAdminUser } from './disable.js';
|
|
21
|
+
export { enableAdminUser } from './enable.js';
|
|
22
|
+
export { getAdminUser } from './get.js';
|
|
23
|
+
export { getUserRoles } from './get-user-roles.js';
|
|
24
|
+
export { type ListAdminUsersInput, listAdminUsers } from './list.js';
|
|
25
|
+
export { type SetAdminUserPasswordInput, setAdminUserPassword } from './set-password.js';
|
|
26
|
+
export { type SetUserRolesInput, setUserRoles } from './set-user-roles.js';
|
|
27
|
+
export { type UpdateAdminUserInput, updateAdminUser } from './update.js';
|
|
@@ -20,7 +20,9 @@ export interface ListAdminUsersInput {
|
|
|
20
20
|
* cookies, pass the `AdminStore` in, and let errors propagate to the
|
|
21
21
|
* TanStack Start transport layer for the client to branch on.
|
|
22
22
|
*/
|
|
23
|
-
export declare const listAdminUsers: import("@tanstack/react-start").RequiredFetcher<
|
|
23
|
+
export declare const listAdminUsers: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
24
|
+
bylineExpectedSessionId: string | null;
|
|
25
|
+
}, undefined, undefined>], (input: ListAdminUsersInput) => ListAdminUsersInput, Promise<{
|
|
24
26
|
users: {
|
|
25
27
|
id: string;
|
|
26
28
|
vid: number;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { listAdminUsersCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const listAdminUsers = createServerFn({
|
|
6
7
|
method: 'GET'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input ?? {}).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return listAdminUsersCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -10,7 +10,9 @@ export interface SetAdminUserPasswordInput {
|
|
|
10
10
|
vid: number;
|
|
11
11
|
password: string;
|
|
12
12
|
}
|
|
13
|
-
export declare const setAdminUserPassword: import("@tanstack/react-start").RequiredFetcher<
|
|
13
|
+
export declare const setAdminUserPassword: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
14
|
+
bylineExpectedSessionId: string | null;
|
|
15
|
+
}, undefined, undefined>], (input: SetAdminUserPasswordInput) => SetAdminUserPasswordInput, Promise<{
|
|
14
16
|
id: string;
|
|
15
17
|
vid: number;
|
|
16
18
|
email: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { setAdminUserPasswordCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const setAdminUserPassword = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return setAdminUserPasswordCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -9,7 +9,9 @@ export interface SetUserRolesInput {
|
|
|
9
9
|
userId: string;
|
|
10
10
|
roleIds: string[];
|
|
11
11
|
}
|
|
12
|
-
export declare const setUserRoles: import("@tanstack/react-start").RequiredFetcher<
|
|
12
|
+
export declare const setUserRoles: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
13
|
+
bylineExpectedSessionId: string | null;
|
|
14
|
+
}, undefined, undefined>], (input: SetUserRolesInput) => SetUserRolesInput, Promise<{
|
|
13
15
|
userId: string;
|
|
14
16
|
roles: {
|
|
15
17
|
id: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { setRolesForUserCommand } from "@byline/admin/admin-roles";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const setUserRoles = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return setRolesForUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -17,7 +17,9 @@ export interface UpdateAdminUserInput {
|
|
|
17
17
|
is_email_verified?: boolean;
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
export declare const updateAdminUser: import("@tanstack/react-start").RequiredFetcher<
|
|
20
|
+
export declare const updateAdminUser: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
21
|
+
bylineExpectedSessionId: string | null;
|
|
22
|
+
}, undefined, undefined>], (input: UpdateAdminUserInput) => UpdateAdminUserInput, Promise<{
|
|
21
23
|
id: string;
|
|
22
24
|
vid: number;
|
|
23
25
|
email: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { updateAdminUserCommand } from "@byline/admin/admin-users";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
4
|
import { bylineCore } from "../../integrations/byline-core.js";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const updateAdminUser = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return updateAdminUserCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -15,5 +15,7 @@ type ExecuteAiInstructionInput = {
|
|
|
15
15
|
params: ExecuteInstructionParams;
|
|
16
16
|
options?: Omit<ExecuteInstructionOptions, 'signal'>;
|
|
17
17
|
};
|
|
18
|
-
export declare const executeAiInstruction: import("@tanstack/react-start").RequiredFetcher<
|
|
18
|
+
export declare const executeAiInstruction: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
19
|
+
bylineExpectedSessionId: string | null;
|
|
20
|
+
}, undefined, undefined>], (input: ExecuteAiInstructionInput) => ExecuteAiInstructionInput, Promise<Response>>;
|
|
19
21
|
export {};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { executeInstruction, executeInstructionStreaming } from "@byline/ai/server";
|
|
3
3
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
4
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
4
5
|
const executeAiInstruction = createServerFn({
|
|
5
6
|
method: 'POST'
|
|
6
|
-
}).
|
|
7
|
+
}).middleware([
|
|
8
|
+
adminSessionMiddleware
|
|
9
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
7
10
|
await getAdminRequestContext();
|
|
8
11
|
if (data.options?.streaming) {
|
|
9
12
|
const streamResult = executeInstructionStreaming(data.params, data.options);
|
|
@@ -12,4 +12,4 @@
|
|
|
12
12
|
* `aiFetchAdapter` in `@byline/host-tanstack-start/integrations/byline-ai`
|
|
13
13
|
* that wraps `executeAiInstruction` so the plugins remain transport-agnostic.
|
|
14
14
|
*/
|
|
15
|
-
export { executeAiInstruction } from './execute';
|
|
15
|
+
export { executeAiInstruction } from './execute.js';
|
|
@@ -10,10 +10,14 @@ export interface DeleteAnalyticsEventsInput {
|
|
|
10
10
|
to: string;
|
|
11
11
|
visitorHash?: string;
|
|
12
12
|
}
|
|
13
|
-
export declare const deleteAnalyticsEvents: import("@tanstack/react-start").RequiredFetcher<
|
|
13
|
+
export declare const deleteAnalyticsEvents: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
14
|
+
bylineExpectedSessionId: string | null;
|
|
15
|
+
}, undefined, undefined>], (input: DeleteAnalyticsEventsInput) => DeleteAnalyticsEventsInput, Promise<{
|
|
14
16
|
deleted: number;
|
|
15
17
|
}>>;
|
|
16
|
-
export declare const rebuildAnalyticsDay: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
18
|
+
export declare const rebuildAnalyticsDay: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
19
|
+
bylineExpectedSessionId: string | null;
|
|
20
|
+
}, undefined, undefined>], (input: {
|
|
17
21
|
day: string;
|
|
18
22
|
}) => {
|
|
19
23
|
day: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { assertAdminActor } from "@byline/admin";
|
|
3
3
|
import { ANALYTICS_ABILITIES } from "@byline/admin/analytics";
|
|
4
4
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const deleteAnalyticsEvents = createServerFn({
|
|
6
7
|
method: 'POST'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
await assertAnalyticsMaintenance();
|
|
9
12
|
const { getAnalytics } = await import("@byline/analytics");
|
|
10
13
|
const from = parseInstant(data.from, 'from');
|
|
@@ -22,7 +25,9 @@ const deleteAnalyticsEvents = createServerFn({
|
|
|
22
25
|
});
|
|
23
26
|
const rebuildAnalyticsDay = createServerFn({
|
|
24
27
|
method: 'POST'
|
|
25
|
-
}).
|
|
28
|
+
}).middleware([
|
|
29
|
+
adminSessionMiddleware
|
|
30
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
26
31
|
await assertAnalyticsMaintenance();
|
|
27
32
|
const { getAnalytics } = await import("@byline/analytics");
|
|
28
33
|
await getAnalytics().rebuildDay(data.day);
|
|
@@ -13,13 +13,25 @@ export interface AnalyticsTopInput extends AnalyticsDateRange {
|
|
|
13
13
|
export interface AnalyticsRuntimeState {
|
|
14
14
|
enabled: boolean;
|
|
15
15
|
}
|
|
16
|
-
export declare const getAnalyticsRuntime: import("@tanstack/react-start").OptionalFetcher<undefined, undefined,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
export declare const
|
|
20
|
-
|
|
16
|
+
export declare const getAnalyticsRuntime: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
17
|
+
bylineExpectedSessionId: string | null;
|
|
18
|
+
}, undefined, undefined>], undefined, Promise<AnalyticsRuntimeState>>;
|
|
19
|
+
export declare const getAnalyticsSummary: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
20
|
+
bylineExpectedSessionId: string | null;
|
|
21
|
+
}, undefined, undefined>], (input: AnalyticsDateRange) => AnalyticsDateRange, Promise<AnalyticsSummary>>;
|
|
22
|
+
export declare const getAnalyticsReportCoverage: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
23
|
+
bylineExpectedSessionId: string | null;
|
|
24
|
+
}, undefined, undefined>], undefined, Promise<AnalyticsReportCoverage>>;
|
|
25
|
+
export declare const getAnalyticsTop: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
26
|
+
bylineExpectedSessionId: string | null;
|
|
27
|
+
}, undefined, undefined>], (input: AnalyticsTopInput) => AnalyticsTopInput, Promise<AnalyticsRankedTotals<AnalyticsPathTotal>>>;
|
|
28
|
+
export declare const getAnalyticsReferrers: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
29
|
+
bylineExpectedSessionId: string | null;
|
|
30
|
+
}, undefined, undefined>], (input: AnalyticsDateRange & {
|
|
21
31
|
limit?: number;
|
|
22
32
|
}) => AnalyticsDateRange & {
|
|
23
33
|
limit?: number;
|
|
24
34
|
}, Promise<AnalyticsRankedTotals<AnalyticsReferrerTotal>>>;
|
|
25
|
-
export declare const getAnalyticsCountries: import("@tanstack/react-start").RequiredFetcher<
|
|
35
|
+
export declare const getAnalyticsCountries: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
36
|
+
bylineExpectedSessionId: string | null;
|
|
37
|
+
}, undefined, undefined>], (input: AnalyticsDateRange) => AnalyticsDateRange, Promise<AnalyticsCountryTotal[]>>;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { assertAdminActor, requireAdminActor } from "@byline/admin";
|
|
3
3
|
import { ANALYTICS_ABILITIES } from "@byline/admin/analytics";
|
|
4
4
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
5
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
5
6
|
const getAnalyticsRuntime = createServerFn({
|
|
6
7
|
method: 'GET'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).handler(async ()=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
requireAdminActor(context, 'reading analytics runtime state');
|
|
10
13
|
const { isAnalyticsRegistered } = await import("@byline/analytics");
|
|
@@ -14,35 +17,45 @@ const getAnalyticsRuntime = createServerFn({
|
|
|
14
17
|
});
|
|
15
18
|
const getAnalyticsSummary = createServerFn({
|
|
16
19
|
method: 'GET'
|
|
17
|
-
}).
|
|
20
|
+
}).middleware([
|
|
21
|
+
adminSessionMiddleware
|
|
22
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
18
23
|
await assertAnalyticsRead();
|
|
19
24
|
const { getAnalytics } = await import("@byline/analytics");
|
|
20
25
|
return getAnalytics().getSummary(data);
|
|
21
26
|
});
|
|
22
27
|
const getAnalyticsReportCoverage = createServerFn({
|
|
23
28
|
method: 'GET'
|
|
24
|
-
}).
|
|
29
|
+
}).middleware([
|
|
30
|
+
adminSessionMiddleware
|
|
31
|
+
]).handler(async ()=>{
|
|
25
32
|
await assertAnalyticsRead();
|
|
26
33
|
const { getAnalytics } = await import("@byline/analytics");
|
|
27
34
|
return getAnalytics().getReportCoverage();
|
|
28
35
|
});
|
|
29
36
|
const getAnalyticsTop = createServerFn({
|
|
30
37
|
method: 'GET'
|
|
31
|
-
}).
|
|
38
|
+
}).middleware([
|
|
39
|
+
adminSessionMiddleware
|
|
40
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
32
41
|
await assertAnalyticsRead();
|
|
33
42
|
const { getAnalytics } = await import("@byline/analytics");
|
|
34
43
|
return getAnalytics().getTopPaths(data);
|
|
35
44
|
});
|
|
36
45
|
const getAnalyticsReferrers = createServerFn({
|
|
37
46
|
method: 'GET'
|
|
38
|
-
}).
|
|
47
|
+
}).middleware([
|
|
48
|
+
adminSessionMiddleware
|
|
49
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
39
50
|
await assertAnalyticsRead();
|
|
40
51
|
const { getAnalytics } = await import("@byline/analytics");
|
|
41
52
|
return getAnalytics().getReferrers(data);
|
|
42
53
|
});
|
|
43
54
|
const getAnalyticsCountries = createServerFn({
|
|
44
55
|
method: 'GET'
|
|
45
|
-
}).
|
|
56
|
+
}).middleware([
|
|
57
|
+
adminSessionMiddleware
|
|
58
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
46
59
|
await assertAnalyticsRead();
|
|
47
60
|
const { getAnalytics } = await import("@byline/analytics");
|
|
48
61
|
return getAnalytics().getCountries(data);
|
|
@@ -5,11 +5,12 @@ import { bylineCore } from "../../integrations/byline-core.js";
|
|
|
5
5
|
const getCurrentAdminUser = createServerFn({
|
|
6
6
|
method: 'GET'
|
|
7
7
|
}).handler(async ()=>{
|
|
8
|
-
const { actor } = await getAdminRequestContext();
|
|
8
|
+
const { actor, sessionId } = await getAdminRequestContext();
|
|
9
9
|
if (!actor) throw new Error('unexpected null actor after getAdminRequestContext');
|
|
10
10
|
const row = await bylineCore().adminStore?.adminUsers.getById(actor.id);
|
|
11
11
|
if (!row) throw new Error('admin user not found for current session');
|
|
12
12
|
return {
|
|
13
|
+
sessionId: sessionId,
|
|
13
14
|
id: row.id,
|
|
14
15
|
email: row.email,
|
|
15
16
|
given_name: row.given_name,
|
|
@@ -23,8 +24,9 @@ const getCurrentAdminUserSoft = createServerFn({
|
|
|
23
24
|
}).handler(async ()=>{
|
|
24
25
|
try {
|
|
25
26
|
let actor;
|
|
27
|
+
let sessionId;
|
|
26
28
|
try {
|
|
27
|
-
({ actor } = await getAdminRequestContext());
|
|
29
|
+
({ actor, sessionId } = await getAdminRequestContext());
|
|
28
30
|
} catch (err) {
|
|
29
31
|
if (err instanceof AuthError) return null;
|
|
30
32
|
throw err;
|
|
@@ -33,6 +35,7 @@ const getCurrentAdminUserSoft = createServerFn({
|
|
|
33
35
|
const row = await bylineCore().adminStore?.adminUsers.getById(actor.id);
|
|
34
36
|
if (!row) return null;
|
|
35
37
|
return {
|
|
38
|
+
sessionId: sessionId,
|
|
36
39
|
id: row.id,
|
|
37
40
|
email: row.email,
|
|
38
41
|
given_name: row.given_name,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This Source Code is subject to the terms of the Mozilla Public
|
|
3
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) Infonomic Company Limited
|
|
7
|
+
*/
|
|
8
|
+
/** Explicit renewal only. Global CSRF protection applies before this POST handler. */
|
|
9
|
+
export declare const renewAdminSession: import("@tanstack/react-start").OptionalFetcher<undefined, (value: unknown) => {
|
|
10
|
+
expectedSessionId?: string;
|
|
11
|
+
}, Promise<{
|
|
12
|
+
sessionId: string;
|
|
13
|
+
}>>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createServerFn } from "@tanstack/react-start";
|
|
2
|
+
import { setResponseHeader } from "@tanstack/react-start/server";
|
|
3
|
+
import { AuthError, ERR_SESSION_CHANGED, ERR_UNAUTHENTICATED } from "@byline/auth";
|
|
4
|
+
import { readAccessTokenCookie, readRefreshTokenCookie, setSessionCookies } from "@byline/client/server";
|
|
5
|
+
import { getServerConfig } from "@byline/core";
|
|
6
|
+
const renewAdminSession = createServerFn({
|
|
7
|
+
method: 'POST'
|
|
8
|
+
}).validator((value)=>{
|
|
9
|
+
if (null == value) return {};
|
|
10
|
+
if ('object' != typeof value) throw new Error('Invalid renewal input');
|
|
11
|
+
const sid = value.expectedSessionId;
|
|
12
|
+
if (void 0 !== sid && ('string' != typeof sid || !sid || sid.length > 256)) throw new Error('Invalid login identity');
|
|
13
|
+
return {
|
|
14
|
+
expectedSessionId: sid
|
|
15
|
+
};
|
|
16
|
+
}).handler(async ({ data })=>{
|
|
17
|
+
setResponseHeader('Cache-Control', 'no-store');
|
|
18
|
+
const provider = getServerConfig().sessionProvider;
|
|
19
|
+
if (!provider) throw new Error('no sessionProvider configured');
|
|
20
|
+
const access = readAccessTokenCookie();
|
|
21
|
+
if (access) try {
|
|
22
|
+
const verified = await provider.verifyAccessToken(access);
|
|
23
|
+
if (data.expectedSessionId && data.expectedSessionId !== verified.sessionId) throw ERR_SESSION_CHANGED({
|
|
24
|
+
message: 'session changed'
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
sessionId: verified.sessionId
|
|
28
|
+
};
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (!(error instanceof AuthError) || 'ERR_ACCESS_EXPIRED' !== error.code) throw error;
|
|
31
|
+
}
|
|
32
|
+
const refreshToken = readRefreshTokenCookie();
|
|
33
|
+
if (!refreshToken) throw ERR_UNAUTHENTICATED({
|
|
34
|
+
message: 'no session to renew'
|
|
35
|
+
});
|
|
36
|
+
const tokens = await provider.refreshSession({
|
|
37
|
+
refreshToken,
|
|
38
|
+
expectedSessionId: data.expectedSessionId
|
|
39
|
+
});
|
|
40
|
+
setSessionCookies(tokens);
|
|
41
|
+
return {
|
|
42
|
+
sessionId: tokens.sessionId
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
export { renewAdminSession };
|
|
@@ -11,8 +11,9 @@ export interface SignInInput {
|
|
|
11
11
|
}
|
|
12
12
|
export interface SignInResult {
|
|
13
13
|
userId: string;
|
|
14
|
+
sessionId: string;
|
|
14
15
|
}
|
|
15
|
-
export declare const adminSignIn: import("@tanstack/react-start").
|
|
16
|
+
export declare const adminSignIn: import("@tanstack/react-start").OptionalFetcher<undefined, (input: unknown) => {
|
|
16
17
|
email: string;
|
|
17
18
|
password: string;
|
|
18
19
|
}, Promise<SignInResult>>;
|