@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.
Files changed (252) hide show
  1. package/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
  2. package/dist/admin-shell/chrome/admin-app-bar.js +10 -2
  3. package/dist/admin-shell/chrome/session-change-boundary.d.ts +14 -0
  4. package/dist/admin-shell/chrome/session-change-boundary.js +87 -0
  5. package/dist/admin-shell/chrome/session-change-boundary.test.d.ts +8 -0
  6. package/dist/admin-shell/chrome/sign-in-page.d.ts +2 -1
  7. package/dist/admin-shell/chrome/sign-in-page.js +60 -3
  8. package/dist/integrations/byline-admin-services.js +7 -1
  9. package/dist/integrations/client-ip.d.ts +19 -0
  10. package/dist/integrations/client-ip.js +34 -0
  11. package/dist/integrations/session-coordination.d.ts +24 -0
  12. package/dist/integrations/session-coordination.js +85 -0
  13. package/dist/integrations/session-middleware.d.ts +11 -0
  14. package/dist/integrations/session-middleware.js +94 -0
  15. package/dist/integrations/session-request-kind.d.ts +9 -0
  16. package/dist/integrations/session-request-kind.js +10 -0
  17. package/dist/integrations/session-request-middleware.d.ts +9 -0
  18. package/dist/integrations/session-request-middleware.js +7 -0
  19. package/dist/integrations/sign-in-body.d.ts +12 -0
  20. package/dist/integrations/sign-in-body.js +52 -0
  21. package/dist/integrations/sign-in-middleware.d.ts +9 -0
  22. package/dist/integrations/sign-in-middleware.js +10 -0
  23. package/dist/routes/create-admin-layout-route.js +46 -31
  24. package/dist/routes/create-sign-in-route.js +4 -2
  25. package/dist/server-fns/admin-account/change-password.d.ts +3 -1
  26. package/dist/server-fns/admin-account/change-password.js +9 -3
  27. package/dist/server-fns/admin-account/get.d.ts +3 -1
  28. package/dist/server-fns/admin-account/get.js +4 -1
  29. package/dist/server-fns/admin-account/index.d.ts +5 -5
  30. package/dist/server-fns/admin-account/update.d.ts +3 -1
  31. package/dist/server-fns/admin-account/update.js +4 -1
  32. package/dist/server-fns/admin-activity/get.d.ts +3 -1
  33. package/dist/server-fns/admin-activity/get.js +4 -1
  34. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +3 -1
  35. package/dist/server-fns/admin-permissions/get-role-abilities.js +4 -1
  36. package/dist/server-fns/admin-permissions/index.d.ts +4 -4
  37. package/dist/server-fns/admin-permissions/list-registered.d.ts +3 -1
  38. package/dist/server-fns/admin-permissions/list-registered.js +4 -1
  39. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +3 -1
  40. package/dist/server-fns/admin-permissions/set-role-abilities.js +4 -1
  41. package/dist/server-fns/admin-permissions/who-has.d.ts +3 -1
  42. package/dist/server-fns/admin-permissions/who-has.js +4 -1
  43. package/dist/server-fns/admin-roles/create.d.ts +3 -1
  44. package/dist/server-fns/admin-roles/create.js +4 -1
  45. package/dist/server-fns/admin-roles/delete.d.ts +3 -1
  46. package/dist/server-fns/admin-roles/delete.js +4 -1
  47. package/dist/server-fns/admin-roles/get.d.ts +3 -1
  48. package/dist/server-fns/admin-roles/get.js +4 -1
  49. package/dist/server-fns/admin-roles/index.d.ts +6 -6
  50. package/dist/server-fns/admin-roles/list.d.ts +3 -1
  51. package/dist/server-fns/admin-roles/list.js +4 -1
  52. package/dist/server-fns/admin-roles/reorder.d.ts +3 -1
  53. package/dist/server-fns/admin-roles/reorder.js +4 -1
  54. package/dist/server-fns/admin-roles/update.d.ts +3 -1
  55. package/dist/server-fns/admin-roles/update.js +4 -1
  56. package/dist/server-fns/admin-users/create.d.ts +3 -1
  57. package/dist/server-fns/admin-users/create.js +4 -1
  58. package/dist/server-fns/admin-users/delete.d.ts +3 -1
  59. package/dist/server-fns/admin-users/delete.js +4 -1
  60. package/dist/server-fns/admin-users/disable.d.ts +3 -1
  61. package/dist/server-fns/admin-users/disable.js +4 -1
  62. package/dist/server-fns/admin-users/enable.d.ts +3 -1
  63. package/dist/server-fns/admin-users/enable.js +4 -1
  64. package/dist/server-fns/admin-users/get-user-roles.d.ts +3 -1
  65. package/dist/server-fns/admin-users/get-user-roles.js +4 -1
  66. package/dist/server-fns/admin-users/get.d.ts +3 -1
  67. package/dist/server-fns/admin-users/get.js +4 -1
  68. package/dist/server-fns/admin-users/index.d.ts +10 -10
  69. package/dist/server-fns/admin-users/list.d.ts +3 -1
  70. package/dist/server-fns/admin-users/list.js +4 -1
  71. package/dist/server-fns/admin-users/set-password.d.ts +3 -1
  72. package/dist/server-fns/admin-users/set-password.js +4 -1
  73. package/dist/server-fns/admin-users/set-user-roles.d.ts +3 -1
  74. package/dist/server-fns/admin-users/set-user-roles.js +4 -1
  75. package/dist/server-fns/admin-users/update.d.ts +3 -1
  76. package/dist/server-fns/admin-users/update.js +4 -1
  77. package/dist/server-fns/ai/execute.d.ts +3 -1
  78. package/dist/server-fns/ai/execute.js +4 -1
  79. package/dist/server-fns/ai/index.d.ts +1 -1
  80. package/dist/server-fns/analytics/maintenance.d.ts +6 -2
  81. package/dist/server-fns/analytics/maintenance.js +7 -2
  82. package/dist/server-fns/analytics/queries.d.ts +18 -6
  83. package/dist/server-fns/analytics/queries.js +19 -6
  84. package/dist/server-fns/auth/current-user.d.ts +1 -0
  85. package/dist/server-fns/auth/current-user.js +5 -2
  86. package/dist/server-fns/auth/renew.d.ts +13 -0
  87. package/dist/server-fns/auth/renew.js +45 -0
  88. package/dist/server-fns/auth/sign-in.d.ts +2 -1
  89. package/dist/server-fns/auth/sign-in.js +88 -17
  90. package/dist/server-fns/auth/sign-out.d.ts +3 -1
  91. package/dist/server-fns/auth/sign-out.js +38 -6
  92. package/dist/server-fns/collections/audit.d.ts +3 -1
  93. package/dist/server-fns/collections/audit.js +4 -1
  94. package/dist/server-fns/collections/copy-to-locale.d.ts +10 -1
  95. package/dist/server-fns/collections/copy-to-locale.js +5 -2
  96. package/dist/server-fns/collections/create.d.ts +10 -1
  97. package/dist/server-fns/collections/create.js +5 -2
  98. package/dist/server-fns/collections/delete-locale.d.ts +10 -1
  99. package/dist/server-fns/collections/delete-locale.js +5 -2
  100. package/dist/server-fns/collections/delete.d.ts +10 -1
  101. package/dist/server-fns/collections/delete.js +5 -2
  102. package/dist/server-fns/collections/duplicate.d.ts +10 -1
  103. package/dist/server-fns/collections/duplicate.js +5 -2
  104. package/dist/server-fns/collections/get.d.ts +7 -0
  105. package/dist/server-fns/collections/get.js +8 -3
  106. package/dist/server-fns/collections/history.d.ts +3 -1
  107. package/dist/server-fns/collections/history.js +4 -1
  108. package/dist/server-fns/collections/index.d.ts +21 -21
  109. package/dist/server-fns/collections/list.d.ts +10 -1
  110. package/dist/server-fns/collections/list.js +5 -2
  111. package/dist/server-fns/collections/reindex.d.ts +3 -1
  112. package/dist/server-fns/collections/reindex.js +4 -1
  113. package/dist/server-fns/collections/reorder.d.ts +10 -1
  114. package/dist/server-fns/collections/reorder.js +5 -2
  115. package/dist/server-fns/collections/restore-version.d.ts +10 -1
  116. package/dist/server-fns/collections/restore-version.js +5 -2
  117. package/dist/server-fns/collections/scheduled-publication.d.ts +22 -5
  118. package/dist/server-fns/collections/scheduled-publication.js +17 -6
  119. package/dist/server-fns/collections/set-list-view-preference.d.ts +3 -1
  120. package/dist/server-fns/collections/set-list-view-preference.js +4 -1
  121. package/dist/server-fns/collections/stats.js +4 -1
  122. package/dist/server-fns/collections/status.d.ts +13 -2
  123. package/dist/server-fns/collections/status.js +8 -3
  124. package/dist/server-fns/collections/tree.d.ts +22 -5
  125. package/dist/server-fns/collections/tree.js +17 -6
  126. package/dist/server-fns/collections/update.d.ts +13 -2
  127. package/dist/server-fns/collections/update.js +8 -3
  128. package/dist/server-fns/collections/upload.d.ts +10 -1
  129. package/dist/server-fns/collections/upload.js +4 -1
  130. package/dist/server-fns/i18n/set-locale.d.ts +3 -1
  131. package/dist/server-fns/i18n/set-locale.js +18 -3
  132. package/dist/server-fns/preview/disable.d.ts +3 -1
  133. package/dist/server-fns/preview/disable.js +4 -1
  134. package/dist/server-fns/preview/enable.d.ts +3 -1
  135. package/dist/server-fns/preview/enable.js +4 -1
  136. package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +10 -1
  137. package/dist/server-fns/singletons/cancel-scheduled-publish.js +5 -2
  138. package/dist/server-fns/singletons/change-status.d.ts +10 -1
  139. package/dist/server-fns/singletons/change-status.js +5 -2
  140. package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +10 -1
  141. package/dist/server-fns/singletons/confirm-scheduled-publish.js +5 -2
  142. package/dist/server-fns/singletons/copy-to-locale.d.ts +10 -1
  143. package/dist/server-fns/singletons/copy-to-locale.js +5 -2
  144. package/dist/server-fns/singletons/find-by-version.d.ts +3 -1
  145. package/dist/server-fns/singletons/find-by-version.js +4 -1
  146. package/dist/server-fns/singletons/get-scheduled-publish.d.ts +3 -1
  147. package/dist/server-fns/singletons/get-scheduled-publish.js +4 -1
  148. package/dist/server-fns/singletons/get.d.ts +3 -1
  149. package/dist/server-fns/singletons/get.js +4 -1
  150. package/dist/server-fns/singletons/history.d.ts +3 -1
  151. package/dist/server-fns/singletons/history.js +4 -1
  152. package/dist/server-fns/singletons/restore-version.d.ts +10 -1
  153. package/dist/server-fns/singletons/restore-version.js +5 -2
  154. package/dist/server-fns/singletons/schedule-publish.d.ts +10 -1
  155. package/dist/server-fns/singletons/schedule-publish.js +5 -2
  156. package/dist/server-fns/singletons/unpublish.d.ts +10 -1
  157. package/dist/server-fns/singletons/unpublish.js +5 -2
  158. package/dist/server-fns/singletons/update.d.ts +10 -1
  159. package/dist/server-fns/singletons/update.js +5 -2
  160. package/package.json +19 -19
  161. package/src/admin-shell/chrome/admin-app-bar.tsx +11 -6
  162. package/src/admin-shell/chrome/session-change-boundary.test.tsx +78 -0
  163. package/src/admin-shell/chrome/session-change-boundary.tsx +94 -0
  164. package/src/admin-shell/chrome/sign-in-page.tsx +68 -3
  165. package/src/integrations/byline-admin-services.ts +7 -1
  166. package/src/integrations/client-ip.test.node.ts +45 -0
  167. package/src/integrations/client-ip.ts +54 -0
  168. package/src/integrations/framework-fetch-shape.test.node.ts +56 -0
  169. package/src/integrations/session-client.test.node.ts +121 -0
  170. package/src/integrations/session-coordination.test.node.ts +77 -0
  171. package/src/integrations/session-coordination.ts +96 -0
  172. package/src/integrations/session-middleware.test.node.ts +87 -0
  173. package/src/integrations/session-middleware.ts +107 -0
  174. package/src/integrations/session-request-kind.ts +18 -0
  175. package/src/integrations/session-request-middleware.ts +17 -0
  176. package/src/integrations/sign-in-body.test.node.ts +59 -0
  177. package/src/integrations/sign-in-body.ts +50 -0
  178. package/src/integrations/sign-in-middleware.ts +24 -0
  179. package/src/routes/create-admin-layout-route.tsx +48 -30
  180. package/src/routes/create-sign-in-route.tsx +10 -2
  181. package/src/server-fns/admin-account/change-password.test.node.ts +69 -0
  182. package/src/server-fns/admin-account/change-password.ts +13 -2
  183. package/src/server-fns/admin-account/get.ts +2 -0
  184. package/src/server-fns/admin-account/update.ts +2 -0
  185. package/src/server-fns/admin-activity/get.ts +2 -0
  186. package/src/server-fns/admin-permissions/get-role-abilities.ts +2 -0
  187. package/src/server-fns/admin-permissions/list-registered.ts +5 -4
  188. package/src/server-fns/admin-permissions/set-role-abilities.ts +2 -0
  189. package/src/server-fns/admin-permissions/who-has.ts +2 -0
  190. package/src/server-fns/admin-roles/create.ts +2 -0
  191. package/src/server-fns/admin-roles/delete.ts +2 -0
  192. package/src/server-fns/admin-roles/get.ts +2 -0
  193. package/src/server-fns/admin-roles/list.ts +5 -4
  194. package/src/server-fns/admin-roles/reorder.ts +2 -0
  195. package/src/server-fns/admin-roles/update.ts +2 -0
  196. package/src/server-fns/admin-users/create.ts +2 -0
  197. package/src/server-fns/admin-users/delete.ts +2 -0
  198. package/src/server-fns/admin-users/disable.ts +2 -0
  199. package/src/server-fns/admin-users/enable.ts +2 -0
  200. package/src/server-fns/admin-users/get-user-roles.ts +2 -0
  201. package/src/server-fns/admin-users/get.ts +2 -0
  202. package/src/server-fns/admin-users/list.ts +2 -0
  203. package/src/server-fns/admin-users/set-password.ts +2 -0
  204. package/src/server-fns/admin-users/set-user-roles.ts +2 -0
  205. package/src/server-fns/admin-users/update.ts +2 -0
  206. package/src/server-fns/ai/execute.ts +3 -0
  207. package/src/server-fns/analytics/maintenance.ts +4 -0
  208. package/src/server-fns/analytics/queries.ts +14 -8
  209. package/src/server-fns/auth/current-user.ts +7 -3
  210. package/src/server-fns/auth/renew.test.node.ts +85 -0
  211. package/src/server-fns/auth/renew.ts +54 -0
  212. package/src/server-fns/auth/sign-in.test.node.ts +114 -0
  213. package/src/server-fns/auth/sign-in.ts +80 -27
  214. package/src/server-fns/auth/sign-out.test.node.ts +85 -0
  215. package/src/server-fns/auth/sign-out.ts +44 -19
  216. package/src/server-fns/collections/audit.ts +2 -0
  217. package/src/server-fns/collections/copy-to-locale.ts +3 -1
  218. package/src/server-fns/collections/create.ts +3 -1
  219. package/src/server-fns/collections/delete-locale.ts +3 -1
  220. package/src/server-fns/collections/delete.ts +3 -1
  221. package/src/server-fns/collections/duplicate.ts +3 -1
  222. package/src/server-fns/collections/get.ts +4 -1
  223. package/src/server-fns/collections/history.ts +2 -0
  224. package/src/server-fns/collections/list.ts +3 -1
  225. package/src/server-fns/collections/reindex.ts +2 -0
  226. package/src/server-fns/collections/reorder.ts +3 -1
  227. package/src/server-fns/collections/restore-version.ts +3 -1
  228. package/src/server-fns/collections/revision-input.test.node.ts +14 -0
  229. package/src/server-fns/collections/scheduled-publication.ts +14 -7
  230. package/src/server-fns/collections/set-list-view-preference.ts +2 -0
  231. package/src/server-fns/collections/stats.ts +2 -0
  232. package/src/server-fns/collections/status.ts +4 -1
  233. package/src/server-fns/collections/tree.ts +7 -1
  234. package/src/server-fns/collections/update.ts +4 -1
  235. package/src/server-fns/collections/upload-singleton.test.node.ts +8 -1
  236. package/src/server-fns/collections/upload.ts +10 -0
  237. package/src/server-fns/i18n/set-locale.ts +19 -3
  238. package/src/server-fns/preview/disable.ts +8 -4
  239. package/src/server-fns/preview/enable.ts +9 -5
  240. package/src/server-fns/singletons/cancel-scheduled-publish.ts +3 -1
  241. package/src/server-fns/singletons/change-status.ts +3 -1
  242. package/src/server-fns/singletons/confirm-scheduled-publish.ts +3 -1
  243. package/src/server-fns/singletons/copy-to-locale.ts +3 -1
  244. package/src/server-fns/singletons/find-by-version.ts +2 -0
  245. package/src/server-fns/singletons/get-scheduled-publish.ts +2 -0
  246. package/src/server-fns/singletons/get.ts +2 -0
  247. package/src/server-fns/singletons/history.ts +2 -0
  248. package/src/server-fns/singletons/restore-version.ts +3 -1
  249. package/src/server-fns/singletons/schedule-publish.ts +3 -1
  250. package/src/server-fns/singletons/singletons.test.node.ts +6 -0
  251. package/src/server-fns/singletons/unpublish.ts +3 -1
  252. package/src/server-fns/singletons/update.ts +3 -1
@@ -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(I18nProvider, {
68
- bundle: i18n.translations ?? {},
69
- activeLocale: activeLocale,
70
- defaultLocale: i18n.admin.defaultLocale,
71
- localeDefinitions: localeDefinitions,
72
- setLocale: handleSetLocale,
73
- children: /*#__PURE__*/ jsx(BylineAdminServicesProvider, {
74
- services: bylineAdminServices,
75
- children: /*#__PURE__*/ jsx(BylineFieldServicesProvider, {
76
- services: bylineFieldServices,
77
- children: /*#__PURE__*/ jsx(BylineAiAdminProvider, {
78
- children: /*#__PURE__*/ jsxs(AdminMenuProvider, {
79
- children: [
80
- /*#__PURE__*/ jsx(RouteProgressBar, {}),
81
- /*#__PURE__*/ jsx(AdminAppBar, {
82
- user: user
83
- }),
84
- /*#__PURE__*/ jsxs("main", {
85
- className: clsx('byline-admin-layout-main', admin_layout_module.main),
86
- children: [
87
- /*#__PURE__*/ jsx(AdminMenuDrawer, {
88
- analyticsEnabled: analyticsRuntime.enabled,
89
- scheduledPublicationEnabled: scheduledPublicationRuntime.enabled
90
- }),
91
- /*#__PURE__*/ jsx(Content, {
92
- children: /*#__PURE__*/ jsx(Outlet, {})
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
  })
@@ -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
  });
@@ -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<undefined, (input: ChangeAccountPasswordInput) => ChangeAccountPasswordInput, Promise<{
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
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
- return changeAccountPasswordCommand(context, data, {
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<undefined, (input?: Record<string, never>) => Record<string, never>, Promise<{
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
- }).validator((input)=>input ?? {}).handler(async ({ data })=>{
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<undefined, (input: UpdateAccountInput) => UpdateAccountInput, Promise<{
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
- }).validator((input)=>input).handler(async ({ data })=>{
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<undefined, (input: SystemActivitySearchParams) => SystemActivitySearchParams, Promise<SystemActivityResponse>>;
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
- }).validator((input)=>input ?? {}).handler(async ({ data })=>{
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, (input: {
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
- }).validator((input)=>input).handler(async ({ data })=>{
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, Promise<{
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
- }).handler(async ()=>{
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<undefined, (input: SetRoleAbilitiesInput) => SetRoleAbilitiesInput, Promise<{
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
- }).validator((input)=>input).handler(async ({ data })=>{
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, (input: {
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
- }).validator((input)=>input).handler(async ({ data })=>{
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<undefined, (input: CreateAdminRoleInput) => CreateAdminRoleInput, Promise<{
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
- }).validator((input)=>input).handler(async ({ data })=>{
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, (input: {
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
  }) => {
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { deleteAdminRoleCommand } 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 deleteAdminRole = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return deleteAdminRoleCommand(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 getAdminRole: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
8
+ export declare const getAdminRole: 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 { getAdminRoleCommand } 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 getAdminRole = createServerFn({
6
7
  method: 'GET'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return getAdminRoleCommand(context, data, {
10
13
  store: bylineCore().adminStore
@@ -14,9 +14,9 @@
14
14
  * without reaching across package boundaries.
15
15
  */
16
16
  export type { AdminRoleListResponse, AdminRoleResponse } from '@byline/admin/admin-roles';
17
- export { type CreateAdminRoleInput, createAdminRole } from './create';
18
- export { deleteAdminRole } from './delete';
19
- export { getAdminRole } from './get';
20
- export { listAdminRoles } from './list';
21
- export { reorderAdminRoles } from './reorder';
22
- export { type UpdateAdminRoleInput, updateAdminRole } from './update';
17
+ export { type CreateAdminRoleInput, createAdminRole } from './create.js';
18
+ export { deleteAdminRole } from './delete.js';
19
+ export { getAdminRole } from './get.js';
20
+ export { listAdminRoles } from './list.js';
21
+ export { reorderAdminRoles } from './reorder.js';
22
+ export { type UpdateAdminRoleInput, updateAdminRole } from './update.js';
@@ -11,7 +11,9 @@
11
11
  * No paging or sorting at this layer; the role set is small by design
12
12
  * and ordered by the `order` column.
13
13
  */
14
- export declare const listAdminRoles: import("@tanstack/react-start").OptionalFetcher<undefined, undefined, Promise<{
14
+ export declare const listAdminRoles: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
15
+ bylineExpectedSessionId: string | null;
16
+ }, undefined, undefined>], undefined, Promise<{
15
17
  roles: {
16
18
  id: string;
17
19
  vid: number;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { listAdminRolesCommand } 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 listAdminRoles = createServerFn({
6
7
  method: 'GET'
7
- }).handler(async ()=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).handler(async ()=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return listAdminRolesCommand(context, {}, {
10
13
  store: bylineCore().adminStore
@@ -5,7 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- export declare const reorderAdminRoles: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
8
+ export declare const reorderAdminRoles: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
9
11
  ids: string[];
10
12
  }) => {
11
13
  ids: string[];
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { reorderAdminRolesCommand } 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 reorderAdminRoles = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return reorderAdminRolesCommand(context, data, {
10
13
  store: bylineCore().adminStore