@byline/host-tanstack-start 4.19.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/admin-shell/collections/edit.d.ts +1 -1
- package/dist/admin-shell/collections/edit.js +151 -31
- package/dist/admin-shell/collections/history.js +4 -2
- package/dist/admin-shell/collections/list.js +30 -6
- package/dist/admin-shell/collections/restore-version-modal.d.ts +3 -1
- package/dist/admin-shell/collections/restore-version-modal.js +9 -4
- package/dist/admin-shell/collections/tree-list.js +16 -6
- package/dist/admin-shell/collections/version-history.d.ts +2 -1
- package/dist/admin-shell/collections/version-history.js +11 -2
- package/dist/admin-shell/document-mutation-notice.d.ts +6 -0
- package/dist/admin-shell/document-mutation-notice.js +53 -0
- package/dist/admin-shell/document-mutation-state.d.ts +22 -0
- package/dist/admin-shell/document-mutation-state.js +71 -0
- package/dist/admin-shell/document-mutation-state.test.d.ts +1 -0
- package/dist/admin-shell/scheduled-publications/list.js +15 -5
- package/dist/admin-shell/singletons/history.js +4 -2
- package/dist/admin-shell/singletons/view.d.ts +1 -1
- package/dist/admin-shell/singletons/view.js +98 -19
- package/dist/integrations/byline-admin-services.js +7 -1
- package/dist/integrations/byline-field-services.js +2 -9
- 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-collection-edit-route.js +1 -1
- package/dist/routes/create-collection-list-route.d.ts +0 -7
- package/dist/routes/create-collection-list-route.js +7 -9
- package/dist/routes/create-sign-in-route.js +4 -2
- package/dist/routes/create-singleton-route.d.ts +2 -0
- package/dist/routes/create-singleton-route.js +4 -3
- 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 +5 -1
- package/dist/server-fns/collections/copy-to-locale.js +7 -2
- package/dist/server-fns/collections/create.d.ts +4 -1
- package/dist/server-fns/collections/create.js +8 -3
- package/dist/server-fns/collections/delete-locale.d.ts +5 -1
- package/dist/server-fns/collections/delete-locale.js +7 -2
- package/dist/server-fns/collections/delete-outcome.d.ts +7 -3
- package/dist/server-fns/collections/delete-outcome.js +4 -0
- package/dist/server-fns/collections/delete.d.ts +5 -1
- package/dist/server-fns/collections/delete.js +8 -3
- package/dist/server-fns/collections/duplicate.d.ts +5 -1
- package/dist/server-fns/collections/duplicate.js +8 -3
- package/dist/server-fns/collections/get.d.ts +1 -0
- package/dist/server-fns/collections/get.js +12 -6
- 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 +3 -1
- package/dist/server-fns/collections/list.js +15 -4
- 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 -2
- package/dist/server-fns/collections/reorder.js +23 -76
- package/dist/server-fns/collections/restore-version.d.ts +6 -1
- package/dist/server-fns/collections/restore-version.js +8 -2
- package/dist/server-fns/collections/save-outcome.d.ts +1 -0
- package/dist/server-fns/collections/save-outcome.js +1 -0
- package/dist/server-fns/collections/scheduled-publication.d.ts +64 -7
- package/dist/server-fns/collections/scheduled-publication.js +42 -21
- 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 +14 -2
- package/dist/server-fns/collections/status.js +18 -5
- package/dist/server-fns/collections/tree-mutation.d.ts +7 -6
- package/dist/server-fns/collections/tree-mutation.js +17 -5
- package/dist/server-fns/collections/tree.d.ts +29 -6
- package/dist/server-fns/collections/tree.js +32 -17
- package/dist/server-fns/collections/update.d.ts +18 -6
- package/dist/server-fns/collections/update.js +39 -20
- package/dist/server-fns/collections/upload.d.ts +11 -1
- package/dist/server-fns/collections/upload.js +6 -2
- package/dist/server-fns/document-mutation-errors.d.ts +5 -0
- package/dist/server-fns/document-mutation-errors.js +50 -0
- package/dist/server-fns/editable-revision.d.ts +9 -0
- package/dist/server-fns/editable-revision.js +11 -0
- 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/singleton-document-read.d.ts +1 -1
- package/dist/server-fns/singleton-document-read.js +7 -3
- package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +9 -2
- package/dist/server-fns/singletons/cancel-scheduled-publish.js +7 -1
- package/dist/server-fns/singletons/change-status.d.ts +5 -1
- package/dist/server-fns/singletons/change-status.js +7 -1
- package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +8 -2
- package/dist/server-fns/singletons/confirm-scheduled-publish.js +7 -2
- package/dist/server-fns/singletons/copy-to-locale.d.ts +5 -1
- package/dist/server-fns/singletons/copy-to-locale.js +7 -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 +6 -4
- 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 +5 -1
- package/dist/server-fns/singletons/restore-version.js +9 -3
- package/dist/server-fns/singletons/schedule-publish.d.ts +8 -2
- package/dist/server-fns/singletons/schedule-publish.js +7 -2
- package/dist/server-fns/singletons/unpublish.d.ts +5 -1
- package/dist/server-fns/singletons/unpublish.js +7 -1
- package/dist/server-fns/singletons/update.d.ts +6 -4
- package/dist/server-fns/singletons/update.js +8 -4
- package/dist/server-fns/structural-receipt.d.ts +4 -0
- package/dist/server-fns/structural-receipt.js +31 -0
- package/package.json +20 -20
- 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/admin-shell/collections/edit.tsx +173 -54
- package/src/admin-shell/collections/history.tsx +11 -2
- package/src/admin-shell/collections/list.tsx +22 -6
- package/src/admin-shell/collections/restore-version-modal.tsx +12 -3
- package/src/admin-shell/collections/save-navigation.test.tsx +156 -8
- package/src/admin-shell/collections/tree-list.tsx +16 -6
- package/src/admin-shell/collections/version-history.tsx +13 -3
- package/src/admin-shell/document-mutation-notice.tsx +45 -0
- package/src/admin-shell/document-mutation-state.test.tsx +146 -0
- package/src/admin-shell/document-mutation-state.ts +95 -0
- package/src/admin-shell/scheduled-publications/list.tsx +16 -6
- package/src/admin-shell/singletons/history.test.tsx +3 -1
- package/src/admin-shell/singletons/history.tsx +10 -2
- package/src/admin-shell/singletons/view.test.tsx +59 -18
- package/src/admin-shell/singletons/view.tsx +110 -29
- package/src/integrations/byline-admin-services.ts +7 -1
- package/src/integrations/byline-field-services.ts +2 -3
- 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-collection-edit-route.tsx +1 -0
- package/src/routes/create-collection-list-route.tsx +13 -2
- package/src/routes/create-sign-in-route.tsx +10 -2
- package/src/routes/create-singleton-route.test.node.ts +10 -2
- package/src/routes/create-singleton-route.tsx +6 -4
- 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 +43 -36
- package/src/server-fns/collections/create.ts +56 -50
- package/src/server-fns/collections/delete-locale.ts +43 -32
- package/src/server-fns/collections/delete-outcome.test.node.ts +16 -0
- package/src/server-fns/collections/delete-outcome.ts +27 -16
- package/src/server-fns/collections/delete.ts +46 -38
- package/src/server-fns/collections/duplicate.ts +40 -32
- package/src/server-fns/collections/get.ts +11 -4
- package/src/server-fns/collections/history.ts +2 -0
- package/src/server-fns/collections/list.ts +10 -3
- package/src/server-fns/collections/reindex.ts +2 -0
- package/src/server-fns/collections/reorder.ts +34 -124
- package/src/server-fns/collections/restore-version.ts +49 -39
- package/src/server-fns/collections/revision-input.test.node.ts +122 -0
- package/src/server-fns/collections/save-outcome.test.node.ts +3 -0
- package/src/server-fns/collections/save-outcome.ts +2 -0
- package/src/server-fns/collections/scheduled-publication.ts +149 -115
- 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 +89 -64
- package/src/server-fns/collections/tree-mutation.test.node.ts +87 -29
- package/src/server-fns/collections/tree-mutation.ts +28 -11
- package/src/server-fns/collections/tree.ts +156 -122
- package/src/server-fns/collections/update.ts +113 -86
- package/src/server-fns/collections/upload-singleton.test.node.ts +10 -7
- package/src/server-fns/collections/upload.ts +91 -77
- package/src/server-fns/document-mutation-errors.ts +67 -0
- package/src/server-fns/document-mutation-transport.test.node.ts +211 -0
- package/src/server-fns/editable-revision.test.node.ts +23 -0
- package/src/server-fns/editable-revision.ts +18 -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/singleton-document-read.ts +7 -3
- package/src/server-fns/singletons/cancel-scheduled-publish.ts +12 -3
- package/src/server-fns/singletons/change-status.ts +12 -3
- package/src/server-fns/singletons/confirm-scheduled-publish.ts +14 -6
- package/src/server-fns/singletons/copy-to-locale.ts +22 -15
- 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 +5 -3
- package/src/server-fns/singletons/history.ts +2 -0
- package/src/server-fns/singletons/restore-version.ts +19 -12
- package/src/server-fns/singletons/schedule-publish.ts +20 -7
- package/src/server-fns/singletons/singletons.test.node.ts +69 -25
- package/src/server-fns/singletons/unpublish.ts +12 -3
- package/src/server-fns/singletons/update.ts +23 -16
- package/src/server-fns/structural-receipt.ts +41 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const SIGN_IN_MAX_BODY_BYTES = 16384;
|
|
2
|
+
const checked = new WeakSet();
|
|
3
|
+
function wasSignInBodyChecked(request) {
|
|
4
|
+
return checked.has(request);
|
|
5
|
+
}
|
|
6
|
+
async function checkSignInBody(request) {
|
|
7
|
+
if ('POST' !== request.method) return new Response('Method not allowed', {
|
|
8
|
+
status: 405,
|
|
9
|
+
headers: {
|
|
10
|
+
Allow: 'POST'
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
if (!request.headers.get('content-type')?.toLowerCase().startsWith('application/json')) return new Response('Expected JSON', {
|
|
14
|
+
status: 415
|
|
15
|
+
});
|
|
16
|
+
const declared = request.headers.get('content-length');
|
|
17
|
+
if (null !== declared && (!/^\d+$/.test(declared) || Number(declared) > SIGN_IN_MAX_BODY_BYTES)) return new Response('Payload too large', {
|
|
18
|
+
status: 413
|
|
19
|
+
});
|
|
20
|
+
const reader = request.clone().body?.getReader();
|
|
21
|
+
if (!reader) return new Response('Missing body', {
|
|
22
|
+
status: 400
|
|
23
|
+
});
|
|
24
|
+
let timer;
|
|
25
|
+
const deadline = new Promise((_, reject)=>{
|
|
26
|
+
timer = setTimeout(()=>reject(new Error('Body timeout')), 5000);
|
|
27
|
+
});
|
|
28
|
+
try {
|
|
29
|
+
let size = 0;
|
|
30
|
+
while(true){
|
|
31
|
+
const { value, done } = await Promise.race([
|
|
32
|
+
reader.read(),
|
|
33
|
+
deadline
|
|
34
|
+
]);
|
|
35
|
+
if (done) break;
|
|
36
|
+
size += value.byteLength;
|
|
37
|
+
if (size > SIGN_IN_MAX_BODY_BYTES) return new Response('Payload too large', {
|
|
38
|
+
status: 413
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
checked.add(request);
|
|
42
|
+
return;
|
|
43
|
+
} catch {
|
|
44
|
+
return new Response('Incomplete request body', {
|
|
45
|
+
status: 408
|
|
46
|
+
});
|
|
47
|
+
} finally{
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
reader.cancel().catch(()=>{});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export { SIGN_IN_MAX_BODY_BYTES, checkSignInBody, wasSignInBodyChecked };
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
/** Register after CSRF in Start's global requestMiddleware, before RPC deserialization. */
|
|
9
|
+
export declare const passwordSignInMiddleware: import("@tanstack/react-start").RequestMiddlewareAfterServer<{}, undefined, undefined>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createMiddleware } from "@tanstack/react-start";
|
|
2
|
+
import { adminSignIn } from "../server-fns/auth/sign-in.js";
|
|
3
|
+
import { checkSignInBody } from "./sign-in-body.js";
|
|
4
|
+
const passwordSignInMiddleware = createMiddleware().server(async (ctx)=>{
|
|
5
|
+
const endpoint = new URL(adminSignIn.url, ctx.request.url).pathname.replace(/\/$/, '');
|
|
6
|
+
if ('serverFn' !== ctx.handlerType || ctx.pathname !== endpoint && !ctx.pathname.startsWith(`${endpoint}/`)) return ctx.next();
|
|
7
|
+
const rejected = await checkSignInBody(ctx.request);
|
|
8
|
+
return rejected ?? ctx.next();
|
|
9
|
+
});
|
|
10
|
+
export { passwordSignInMiddleware };
|
|
@@ -14,10 +14,12 @@ import { AdminMenuProvider } from "../admin-shell/chrome/admin-menu-provider.js"
|
|
|
14
14
|
import { Content } from "../admin-shell/chrome/content.js";
|
|
15
15
|
import { RouteError, RouteNotFound } from "../admin-shell/chrome/route-error.js";
|
|
16
16
|
import { RouteProgressBar } from "../admin-shell/chrome/route-progress-bar.js";
|
|
17
|
+
import { SessionChangeBoundary } from "../admin-shell/chrome/session-change-boundary.js";
|
|
17
18
|
import { buildLocaleDefinitions } from "../i18n/locale-definitions.js";
|
|
18
19
|
import { bylineAdminServices } from "../integrations/byline-admin-services.js";
|
|
19
20
|
import { BylineAiAdminProvider } from "../integrations/byline-ai.js";
|
|
20
21
|
import { bylineFieldServices } from "../integrations/byline-field-services.js";
|
|
22
|
+
import { observeSession, sessionIsChanged } from "../integrations/session-coordination.js";
|
|
21
23
|
import { getAnalyticsRuntime } from "../server-fns/analytics/index.js";
|
|
22
24
|
import { getCurrentAdminUser } from "../server-fns/auth/index.js";
|
|
23
25
|
import { getScheduledPublicationRuntime } from "../server-fns/collections/index.js";
|
|
@@ -29,6 +31,7 @@ function createAdminLayoutRoute(path) {
|
|
|
29
31
|
const signInPath = getSignInRoutePath();
|
|
30
32
|
try {
|
|
31
33
|
const user = await getCurrentAdminUser();
|
|
34
|
+
if ("u" > typeof window) observeSession(user.sessionId);
|
|
32
35
|
const [activeLocale, scheduledPublicationRuntime, analyticsRuntime] = await Promise.all([
|
|
33
36
|
getActiveLocaleFn(),
|
|
34
37
|
getScheduledPublicationRuntime(),
|
|
@@ -40,7 +43,16 @@ function createAdminLayoutRoute(path) {
|
|
|
40
43
|
scheduledPublicationRuntime,
|
|
41
44
|
analyticsRuntime
|
|
42
45
|
};
|
|
43
|
-
} catch
|
|
46
|
+
} catch (error) {
|
|
47
|
+
const code = error?.code;
|
|
48
|
+
if (!("u" > typeof window && sessionIsChanged()) && ![
|
|
49
|
+
'ERR_UNAUTHENTICATED',
|
|
50
|
+
'ERR_ACCESS_EXPIRED',
|
|
51
|
+
'ERR_INVALID_TOKEN',
|
|
52
|
+
'ERR_REVOKED_TOKEN',
|
|
53
|
+
'ERR_ACCOUNT_DISABLED',
|
|
54
|
+
'ERR_SESSION_CHANGED'
|
|
55
|
+
].includes(code ?? '')) throw error;
|
|
44
56
|
throw redirect({
|
|
45
57
|
to: signInPath,
|
|
46
58
|
search: {
|
|
@@ -64,36 +76,39 @@ function createAdminLayoutRoute(path) {
|
|
|
64
76
|
});
|
|
65
77
|
window.location.reload();
|
|
66
78
|
};
|
|
67
|
-
return /*#__PURE__*/ jsx(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
children: /*#__PURE__*/ jsx(
|
|
76
|
-
services:
|
|
77
|
-
children: /*#__PURE__*/ jsx(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
79
|
+
return /*#__PURE__*/ jsx(SessionChangeBoundary, {
|
|
80
|
+
user: user,
|
|
81
|
+
children: /*#__PURE__*/ jsx(I18nProvider, {
|
|
82
|
+
bundle: i18n.translations ?? {},
|
|
83
|
+
activeLocale: activeLocale,
|
|
84
|
+
defaultLocale: i18n.admin.defaultLocale,
|
|
85
|
+
localeDefinitions: localeDefinitions,
|
|
86
|
+
setLocale: handleSetLocale,
|
|
87
|
+
children: /*#__PURE__*/ jsx(BylineAdminServicesProvider, {
|
|
88
|
+
services: bylineAdminServices,
|
|
89
|
+
children: /*#__PURE__*/ jsx(BylineFieldServicesProvider, {
|
|
90
|
+
services: bylineFieldServices,
|
|
91
|
+
children: /*#__PURE__*/ jsx(BylineAiAdminProvider, {
|
|
92
|
+
children: /*#__PURE__*/ jsxs(AdminMenuProvider, {
|
|
93
|
+
children: [
|
|
94
|
+
/*#__PURE__*/ jsx(RouteProgressBar, {}),
|
|
95
|
+
/*#__PURE__*/ jsx(AdminAppBar, {
|
|
96
|
+
user: user
|
|
97
|
+
}),
|
|
98
|
+
/*#__PURE__*/ jsxs("main", {
|
|
99
|
+
className: clsx('byline-admin-layout-main', admin_layout_module.main),
|
|
100
|
+
children: [
|
|
101
|
+
/*#__PURE__*/ jsx(AdminMenuDrawer, {
|
|
102
|
+
analyticsEnabled: analyticsRuntime.enabled,
|
|
103
|
+
scheduledPublicationEnabled: scheduledPublicationRuntime.enabled
|
|
104
|
+
}),
|
|
105
|
+
/*#__PURE__*/ jsx(Content, {
|
|
106
|
+
children: /*#__PURE__*/ jsx(Outlet, {})
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
})
|
|
110
|
+
]
|
|
111
|
+
})
|
|
97
112
|
})
|
|
98
113
|
})
|
|
99
114
|
})
|
|
@@ -1,8 +1 @@
|
|
|
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
1
|
export declare function createCollectionListRoute(path: string): any;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { getCollectionAdminConfig, getWorkflowStatuses, parseDocumentRevision } from "@byline/core";
|
|
2
3
|
import { useEffect, useRef } from "react";
|
|
3
4
|
import { createFileRoute, notFound } from "@tanstack/react-router";
|
|
4
5
|
import { applyRelationColumnFormatters } from "@byline/admin/react";
|
|
5
|
-
import { getCollectionAdminConfig, getWorkflowStatuses } from "@byline/core";
|
|
6
6
|
import { useTranslation } from "@byline/i18n/react";
|
|
7
7
|
import { useToastManager } from "@byline/ui/react";
|
|
8
8
|
import { BreadcrumbsClient } from "../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js";
|
|
@@ -124,17 +124,16 @@ function createCollectionListRoute(path) {
|
|
|
124
124
|
collection: collection,
|
|
125
125
|
collectionLabels: data.included.collection.labels,
|
|
126
126
|
listActions: adminConfig?.listActions,
|
|
127
|
-
onMove: async ({ documentId, parentDocumentId, beforeDocumentId, afterDocumentId })=>{
|
|
128
|
-
await placeTreeNode({
|
|
127
|
+
onMove: async ({ documentId, parentDocumentId, beforeDocumentId, afterDocumentId })=>await placeTreeNode({
|
|
129
128
|
data: {
|
|
129
|
+
expectedRevision: parseDocumentRevision(data.rows.find((row)=>row.id === documentId)?.revision),
|
|
130
130
|
collection,
|
|
131
131
|
documentId,
|
|
132
132
|
parentDocumentId,
|
|
133
133
|
beforeDocumentId,
|
|
134
134
|
afterDocumentId
|
|
135
135
|
}
|
|
136
|
-
})
|
|
137
|
-
}
|
|
136
|
+
})
|
|
138
137
|
}) : CustomListView ? /*#__PURE__*/ jsx(CustomListView, {
|
|
139
138
|
data: data,
|
|
140
139
|
workflowStatuses: workflowStatuses
|
|
@@ -145,16 +144,15 @@ function createCollectionListRoute(path) {
|
|
|
145
144
|
useAsTitle: collectionDef.useAsTitle,
|
|
146
145
|
orderable: true === collectionDef.orderable,
|
|
147
146
|
listActions: adminConfig?.listActions,
|
|
148
|
-
onReorder: async ({ documentId, beforeDocumentId, afterDocumentId })=>{
|
|
149
|
-
await reorderCollectionDocument({
|
|
147
|
+
onReorder: async ({ documentId, beforeDocumentId, afterDocumentId })=>await reorderCollectionDocument({
|
|
150
148
|
data: {
|
|
149
|
+
expectedRevision: parseDocumentRevision(data.docs.find((row)=>row.id === documentId)?.revision),
|
|
151
150
|
collection,
|
|
152
151
|
documentId,
|
|
153
152
|
beforeDocumentId,
|
|
154
153
|
afterDocumentId
|
|
155
154
|
}
|
|
156
|
-
})
|
|
157
|
-
}
|
|
155
|
+
})
|
|
158
156
|
})
|
|
159
157
|
]
|
|
160
158
|
});
|
|
@@ -10,7 +10,8 @@ function createSignInRoute(path, { homeUrl } = {}) {
|
|
|
10
10
|
validateSearch: (search)=>{
|
|
11
11
|
const callbackUrl = resolveAdminCallbackPath(search.callbackUrl);
|
|
12
12
|
return {
|
|
13
|
-
callbackUrl
|
|
13
|
+
callbackUrl,
|
|
14
|
+
reauthenticate: '1' === search.reauthenticate || 1 === search.reauthenticate || true === search.reauthenticate
|
|
14
15
|
};
|
|
15
16
|
},
|
|
16
17
|
beforeLoad: async ()=>{
|
|
@@ -20,10 +21,11 @@ function createSignInRoute(path, { homeUrl } = {}) {
|
|
|
20
21
|
};
|
|
21
22
|
},
|
|
22
23
|
component: function() {
|
|
23
|
-
const { callbackUrl } = Route.useSearch();
|
|
24
|
+
const { callbackUrl, reauthenticate } = Route.useSearch();
|
|
24
25
|
const { activeLocale } = Route.useRouteContext();
|
|
25
26
|
return /*#__PURE__*/ jsx(SignInPage, {
|
|
26
27
|
redirectTo: resolveAdminSignInRedirect(callbackUrl),
|
|
28
|
+
reauthenticate: reauthenticate,
|
|
27
29
|
activeLocale: activeLocale,
|
|
28
30
|
homeUrl: resolvedHomeUrl
|
|
29
31
|
});
|
|
@@ -20,8 +20,10 @@ export declare const getSingletonRouteDocument: import("@tanstack/react-start").
|
|
|
20
20
|
locale?: string;
|
|
21
21
|
}, Promise<{
|
|
22
22
|
document: null;
|
|
23
|
+
expectedEmpty: true;
|
|
23
24
|
initialData: Record<string, any>;
|
|
24
25
|
} | {
|
|
26
|
+
expectedEmpty?: undefined;
|
|
25
27
|
document: {
|
|
26
28
|
_publishedVersion: Record<string, any> | null;
|
|
27
29
|
_scheduledPublicationEnabled: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { createFileRoute, notFound } from "@tanstack/react-router";
|
|
3
3
|
import { createServerFn } from "@tanstack/react-start";
|
|
4
|
-
import {
|
|
4
|
+
import { getAdminRequestContext } from "@byline/client/server";
|
|
5
5
|
import { buildInitialDataFromFields, documentAbilityKey, getServerConfig, getSingletonAdminConfig } from "@byline/core";
|
|
6
6
|
import { useTranslation } from "@byline/i18n/react";
|
|
7
7
|
import { z } from "zod";
|
|
@@ -28,6 +28,7 @@ const getSingletonRouteDocument = createServerFn({
|
|
|
28
28
|
});
|
|
29
29
|
if (null == document) return {
|
|
30
30
|
document: null,
|
|
31
|
+
expectedEmpty: true,
|
|
31
32
|
initialData: serialise(await buildInitialDataFromFields(definition.fields, {
|
|
32
33
|
locale: data.locale ?? getServerConfig().i18n.content.defaultLocale
|
|
33
34
|
}))
|
|
@@ -54,7 +55,7 @@ const getSingletonRouteDocument = createServerFn({
|
|
|
54
55
|
if (scheduledPublicationEnabled) {
|
|
55
56
|
const actor = (await getAdminRequestContext()).actor;
|
|
56
57
|
canSchedulePublication = actor?.hasAbility(documentAbilityKey(definition, 'changeStatus')) === true && actor.hasAbility(documentAbilityKey(definition, 'publish'));
|
|
57
|
-
if (canSchedulePublication) scheduledPublish =
|
|
58
|
+
if (canSchedulePublication) scheduledPublish = document.scheduledPublication;
|
|
58
59
|
}
|
|
59
60
|
const serializedSchedule = null == scheduledPublish ? null : serialise(scheduledPublish);
|
|
60
61
|
return {
|
|
@@ -120,7 +121,7 @@ function createSingletonRoute(path) {
|
|
|
120
121
|
locale: locale,
|
|
121
122
|
contentLocales: contentLocales,
|
|
122
123
|
defaultContentLocale: defaultContentLocale
|
|
123
|
-
})
|
|
124
|
+
}, `${singleton}/${locale}`)
|
|
124
125
|
]
|
|
125
126
|
});
|
|
126
127
|
}
|
|
@@ -10,7 +10,9 @@ export interface ChangeAccountPasswordInput {
|
|
|
10
10
|
currentPassword: string;
|
|
11
11
|
newPassword: string;
|
|
12
12
|
}
|
|
13
|
-
export declare const changeAccountPassword: import("@tanstack/react-start").RequiredFetcher<
|
|
13
|
+
export declare const changeAccountPassword: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
14
|
+
bylineExpectedSessionId: string | null;
|
|
15
|
+
}, undefined, undefined>], (input: ChangeAccountPasswordInput) => ChangeAccountPasswordInput, Promise<{
|
|
14
16
|
id: string;
|
|
15
17
|
vid: number;
|
|
16
18
|
email: string;
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { changeAccountPasswordCommand } from "@byline/admin/admin-account";
|
|
3
|
-
import { getAdminRequestContext } from "@byline/client/server";
|
|
3
|
+
import { clearPreviewCookie, clearSessionCookies, 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 changeAccountPassword = 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
|
+
const account = await changeAccountPasswordCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
11
14
|
});
|
|
15
|
+
clearSessionCookies();
|
|
16
|
+
clearPreviewCookie();
|
|
17
|
+
return account;
|
|
12
18
|
});
|
|
13
19
|
export { changeAccountPassword };
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* status fields that the slim `CurrentAdminUser` on route context
|
|
12
12
|
* doesn't carry.
|
|
13
13
|
*/
|
|
14
|
-
export declare const getAccount: import("@tanstack/react-start").OptionalFetcher<
|
|
14
|
+
export declare const getAccount: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
15
|
+
bylineExpectedSessionId: string | null;
|
|
16
|
+
}, undefined, undefined>], (input?: Record<string, never>) => Record<string, never>, Promise<{
|
|
15
17
|
id: string;
|
|
16
18
|
vid: number;
|
|
17
19
|
email: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { getAccountCommand } from "@byline/admin/admin-account";
|
|
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 getAccount = 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 getAccountCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* actor is the target — none of these accept an `id`.
|
|
15
15
|
*/
|
|
16
16
|
export type { AccountResponse } from '@byline/admin/admin-account';
|
|
17
|
-
export { changeAccountPassword } from './change-password';
|
|
18
|
-
export { getAccount } from './get';
|
|
19
|
-
export { updateAccount } from './update';
|
|
20
|
-
export type { ChangeAccountPasswordInput } from './change-password';
|
|
21
|
-
export type { UpdateAccountInput } from './update';
|
|
17
|
+
export { changeAccountPassword } from './change-password.js';
|
|
18
|
+
export { getAccount } from './get.js';
|
|
19
|
+
export { updateAccount } from './update.js';
|
|
20
|
+
export type { ChangeAccountPasswordInput } from './change-password.js';
|
|
21
|
+
export type { UpdateAccountInput } from './update.js';
|
|
@@ -14,7 +14,9 @@ export interface UpdateAccountInput {
|
|
|
14
14
|
username?: string | null;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export declare const updateAccount: import("@tanstack/react-start").RequiredFetcher<
|
|
17
|
+
export declare const updateAccount: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
18
|
+
bylineExpectedSessionId: string | null;
|
|
19
|
+
}, undefined, undefined>], (input: UpdateAccountInput) => UpdateAccountInput, Promise<{
|
|
18
20
|
id: string;
|
|
19
21
|
vid: number;
|
|
20
22
|
email: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { updateAccountCommand } from "@byline/admin/admin-account";
|
|
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 updateAccount = 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 updateAccountCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore
|
|
@@ -47,4 +47,6 @@ export interface SystemActivityResponse {
|
|
|
47
47
|
* queries directly and is gated system-wide by `admin.activity.read` rather
|
|
48
48
|
* than by any document's own read gate.
|
|
49
49
|
*/
|
|
50
|
-
export declare const getSystemActivityLog: import("@tanstack/react-start").RequiredFetcher<
|
|
50
|
+
export declare const getSystemActivityLog: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
51
|
+
bylineExpectedSessionId: string | null;
|
|
52
|
+
}, undefined, undefined>], (input: SystemActivitySearchParams) => SystemActivitySearchParams, Promise<SystemActivityResponse>>;
|
|
@@ -3,10 +3,13 @@ import { assertAdminActor } from "@byline/admin";
|
|
|
3
3
|
import { ADMIN_ACTIVITY_ABILITIES } from "@byline/admin/admin-activity";
|
|
4
4
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
5
5
|
import { ERR_AUDIT_UNSUPPORTED, getLogger, getServerConfig } from "@byline/core";
|
|
6
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
6
7
|
import { resolveActorLabels } from "../collections/actors.js";
|
|
7
8
|
const getSystemActivityLog = createServerFn({
|
|
8
9
|
method: 'GET'
|
|
9
|
-
}).
|
|
10
|
+
}).middleware([
|
|
11
|
+
adminSessionMiddleware
|
|
12
|
+
]).validator((input)=>input ?? {}).handler(async ({ data })=>{
|
|
10
13
|
const context = await getAdminRequestContext();
|
|
11
14
|
assertAdminActor(context, ADMIN_ACTIVITY_ABILITIES.read);
|
|
12
15
|
const queries = getServerConfig().db.queries;
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const getRoleAbilities: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const getRoleAbilities: 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 { getRoleAbilitiesCommand } from "@byline/admin/admin-permissions";
|
|
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 getRoleAbilities = 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 getRoleAbilitiesCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore,
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* mounts on the admin-roles role detail page.
|
|
19
19
|
*/
|
|
20
20
|
export type { AbilityDescriptorResponse, AbilityGroupResponse, AbilityHolderRole, AbilityHolderUser, GetRoleAbilitiesResponse, ListRegisteredAbilitiesResponse, SetRoleAbilitiesResponse, WhoHasAbilityResponse, } from '@byline/admin/admin-permissions';
|
|
21
|
-
export { getRoleAbilities } from './get-role-abilities';
|
|
22
|
-
export { listRegisteredAbilities } from './list-registered';
|
|
23
|
-
export { type SetRoleAbilitiesInput, setRoleAbilities } from './set-role-abilities';
|
|
24
|
-
export { whoHasAbility } from './who-has';
|
|
21
|
+
export { getRoleAbilities } from './get-role-abilities.js';
|
|
22
|
+
export { listRegisteredAbilities } from './list-registered.js';
|
|
23
|
+
export { type SetRoleAbilitiesInput, setRoleAbilities } from './set-role-abilities.js';
|
|
24
|
+
export { whoHasAbility } from './who-has.js';
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* populated at init time by collection auto-registration plus
|
|
11
11
|
* `registerAdminAbilities`. No DB read.
|
|
12
12
|
*/
|
|
13
|
-
export declare const listRegisteredAbilities: import("@tanstack/react-start").OptionalFetcher<undefined, undefined,
|
|
13
|
+
export declare const listRegisteredAbilities: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
14
|
+
bylineExpectedSessionId: string | null;
|
|
15
|
+
}, undefined, undefined>], undefined, Promise<{
|
|
14
16
|
abilities: {
|
|
15
17
|
key: string;
|
|
16
18
|
label: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { listRegisteredAbilitiesCommand } from "@byline/admin/admin-permissions";
|
|
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 listRegisteredAbilities = createServerFn({
|
|
6
7
|
method: 'GET'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).handler(async ()=>{
|
|
8
11
|
const context = await getAdminRequestContext();
|
|
9
12
|
return listRegisteredAbilitiesCommand(context, {}, {
|
|
10
13
|
store: bylineCore().adminStore,
|
|
@@ -9,7 +9,9 @@ export interface SetRoleAbilitiesInput {
|
|
|
9
9
|
id: string;
|
|
10
10
|
abilities: string[];
|
|
11
11
|
}
|
|
12
|
-
export declare const setRoleAbilities: import("@tanstack/react-start").RequiredFetcher<
|
|
12
|
+
export declare const setRoleAbilities: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
13
|
+
bylineExpectedSessionId: string | null;
|
|
14
|
+
}, undefined, undefined>], (input: SetRoleAbilitiesInput) => SetRoleAbilitiesInput, Promise<{
|
|
13
15
|
roleId: string;
|
|
14
16
|
abilities: string[];
|
|
15
17
|
}>>;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { setRoleAbilitiesCommand } from "@byline/admin/admin-permissions";
|
|
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 setRoleAbilities = 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 setRoleAbilitiesCommand(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 whoHasAbility: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const whoHasAbility: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
ability: string;
|
|
10
12
|
}) => {
|
|
11
13
|
ability: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { whoHasAbilityCommand } from "@byline/admin/admin-permissions";
|
|
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 whoHasAbility = 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 whoHasAbilityCommand(context, data, {
|
|
10
13
|
store: bylineCore().adminStore,
|
|
@@ -11,7 +11,9 @@ export interface CreateAdminRoleInput {
|
|
|
11
11
|
description?: string | null;
|
|
12
12
|
order?: number;
|
|
13
13
|
}
|
|
14
|
-
export declare const createAdminRole: import("@tanstack/react-start").RequiredFetcher<
|
|
14
|
+
export declare const createAdminRole: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
15
|
+
bylineExpectedSessionId: string | null;
|
|
16
|
+
}, undefined, undefined>], (input: CreateAdminRoleInput) => CreateAdminRoleInput, Promise<{
|
|
15
17
|
id: string;
|
|
16
18
|
vid: number;
|
|
17
19
|
name: string;
|
|
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
|
|
|
2
2
|
import { createAdminRoleCommand } 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 createAdminRole = 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 createAdminRoleCommand(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 deleteAdminRole: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const deleteAdminRole: 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
|
}) => {
|