@byline/host-tanstack-start 0.9.3
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/LICENSE +373 -0
- package/README.md +48 -0
- package/dist/admin-shell/admin-roles/container.d.ts +34 -0
- package/dist/admin-shell/admin-roles/container.d.ts.map +1 -0
- package/dist/admin-shell/admin-roles/container.js +259 -0
- package/dist/admin-shell/admin-roles/container.module.js +17 -0
- package/dist/admin-shell/admin-roles/container_module.css +93 -0
- package/dist/admin-shell/admin-roles/delete.d.ts +9 -0
- package/dist/admin-shell/admin-roles/delete.d.ts.map +1 -0
- package/dist/admin-shell/admin-roles/delete.js +107 -0
- package/dist/admin-shell/admin-roles/delete.module.js +10 -0
- package/dist/admin-shell/admin-roles/delete_module.css +35 -0
- package/dist/admin-shell/admin-roles/list.d.ts +25 -0
- package/dist/admin-shell/admin-roles/list.d.ts.map +1 -0
- package/dist/admin-shell/admin-roles/list.js +292 -0
- package/dist/admin-shell/admin-roles/list.module.js +24 -0
- package/dist/admin-shell/admin-roles/list_module.css +113 -0
- package/dist/admin-shell/admin-users/container.d.ts +18 -0
- package/dist/admin-shell/admin-users/container.d.ts.map +1 -0
- package/dist/admin-shell/admin-users/container.js +418 -0
- package/dist/admin-shell/admin-users/container.module.js +22 -0
- package/dist/admin-shell/admin-users/container_module.css +136 -0
- package/dist/admin-shell/admin-users/delete.d.ts +9 -0
- package/dist/admin-shell/admin-users/delete.d.ts.map +1 -0
- package/dist/admin-shell/admin-users/delete.js +115 -0
- package/dist/admin-shell/admin-users/delete.module.js +10 -0
- package/dist/admin-shell/admin-users/delete_module.css +35 -0
- package/dist/admin-shell/admin-users/list.d.ts +13 -0
- package/dist/admin-shell/admin-users/list.d.ts.map +1 -0
- package/dist/admin-shell/admin-users/list.js +328 -0
- package/dist/admin-shell/admin-users/list.module.js +22 -0
- package/dist/admin-shell/admin-users/list_module.css +112 -0
- package/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
- package/dist/admin-shell/chrome/admin-app-bar.d.ts.map +1 -0
- package/dist/admin-shell/chrome/admin-app-bar.js +71 -0
- package/dist/admin-shell/chrome/admin-app-bar.module.js +9 -0
- package/dist/admin-shell/chrome/admin-app-bar_module.css +54 -0
- package/dist/admin-shell/chrome/admin-layout.module.js +5 -0
- package/dist/admin-shell/chrome/admin-layout_module.css +8 -0
- package/dist/admin-shell/chrome/branding.d.ts +9 -0
- package/dist/admin-shell/chrome/branding.d.ts.map +1 -0
- package/dist/admin-shell/chrome/branding.js +17 -0
- package/dist/admin-shell/chrome/branding.module.js +6 -0
- package/dist/admin-shell/chrome/branding_module.css +11 -0
- package/dist/admin-shell/chrome/breadcrumbs/@types.d.ts +6 -0
- package/dist/admin-shell/chrome/breadcrumbs/@types.d.ts.map +1 -0
- package/dist/admin-shell/chrome/breadcrumbs/@types.js +1 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.d.ts +7 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.d.ts.map +1 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.js +20 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.d.ts +24 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.d.ts.map +1 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.js +23 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.d.ts +15 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.js +77 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.module.js +12 -0
- package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs_module.css +81 -0
- package/dist/admin-shell/chrome/byline-logo.d.ts +12 -0
- package/dist/admin-shell/chrome/byline-logo.d.ts.map +1 -0
- package/dist/admin-shell/chrome/byline-logo.js +178 -0
- package/dist/admin-shell/chrome/content.d.ts +24 -0
- package/dist/admin-shell/chrome/content.d.ts.map +1 -0
- package/dist/admin-shell/chrome/content.js +31 -0
- package/dist/admin-shell/chrome/content.module.js +5 -0
- package/dist/admin-shell/chrome/content_module.css +10 -0
- package/dist/admin-shell/chrome/dashboard.d.ts +14 -0
- package/dist/admin-shell/chrome/dashboard.d.ts.map +1 -0
- package/dist/admin-shell/chrome/dashboard.js +129 -0
- package/dist/admin-shell/chrome/dashboard.module.js +19 -0
- package/dist/admin-shell/chrome/dashboard_module.css +175 -0
- package/dist/admin-shell/chrome/drawer-toggle.d.ts +9 -0
- package/dist/admin-shell/chrome/drawer-toggle.d.ts.map +1 -0
- package/dist/admin-shell/chrome/drawer-toggle.js +57 -0
- package/dist/admin-shell/chrome/drawer-toggle.module.js +8 -0
- package/dist/admin-shell/chrome/drawer-toggle_module.css +21 -0
- package/dist/admin-shell/chrome/hamburger.d.ts +10 -0
- package/dist/admin-shell/chrome/hamburger.d.ts.map +1 -0
- package/dist/admin-shell/chrome/hamburger.js +30 -0
- package/dist/admin-shell/chrome/hamburger.module.js +5 -0
- package/dist/admin-shell/chrome/hamburger_module.css +7 -0
- package/dist/admin-shell/chrome/loose-router.d.ts +33 -0
- package/dist/admin-shell/chrome/loose-router.d.ts.map +1 -0
- package/dist/admin-shell/chrome/loose-router.js +6 -0
- package/dist/admin-shell/chrome/menu-drawer.d.ts +10 -0
- package/dist/admin-shell/chrome/menu-drawer.d.ts.map +1 -0
- package/dist/admin-shell/chrome/menu-drawer.js +141 -0
- package/dist/admin-shell/chrome/menu-drawer.module.js +12 -0
- package/dist/admin-shell/chrome/menu-drawer_module.css +137 -0
- package/dist/admin-shell/chrome/menu-provider.d.ts +21 -0
- package/dist/admin-shell/chrome/menu-provider.d.ts.map +1 -0
- package/dist/admin-shell/chrome/menu-provider.js +54 -0
- package/dist/admin-shell/chrome/preview-toggle.d.ts +13 -0
- package/dist/admin-shell/chrome/preview-toggle.d.ts.map +1 -0
- package/dist/admin-shell/chrome/preview-toggle.js +75 -0
- package/dist/admin-shell/chrome/route-error.d.ts +22 -0
- package/dist/admin-shell/chrome/route-error.d.ts.map +1 -0
- package/dist/admin-shell/chrome/route-error.js +119 -0
- package/dist/admin-shell/chrome/route-error.module.js +14 -0
- package/dist/admin-shell/chrome/route-error_module.css +94 -0
- package/dist/admin-shell/chrome/router-pager.d.ts +19 -0
- package/dist/admin-shell/chrome/router-pager.d.ts.map +1 -0
- package/dist/admin-shell/chrome/router-pager.js +91 -0
- package/dist/admin-shell/chrome/sign-in-page.d.ts +19 -0
- package/dist/admin-shell/chrome/sign-in-page.d.ts.map +1 -0
- package/dist/admin-shell/chrome/sign-in-page.js +20 -0
- package/dist/admin-shell/chrome/sign-in-page.module.js +6 -0
- package/dist/admin-shell/chrome/sign-in-page_module.css +22 -0
- package/dist/admin-shell/chrome/sort-icons.d.ts +10 -0
- package/dist/admin-shell/chrome/sort-icons.d.ts.map +1 -0
- package/dist/admin-shell/chrome/sort-icons.js +103 -0
- package/dist/admin-shell/chrome/th-sortable.d.ts +23 -0
- package/dist/admin-shell/chrome/th-sortable.d.ts.map +1 -0
- package/dist/admin-shell/chrome/th-sortable.js +75 -0
- package/dist/admin-shell/chrome/th-sortable.module.js +10 -0
- package/dist/admin-shell/chrome/th-sortable_module.css +37 -0
- package/dist/admin-shell/chrome/use-media-query.d.ts +9 -0
- package/dist/admin-shell/chrome/use-media-query.d.ts.map +1 -0
- package/dist/admin-shell/chrome/use-media-query.js +20 -0
- package/dist/admin-shell/chrome/utils.d.ts +12 -0
- package/dist/admin-shell/chrome/utils.d.ts.map +1 -0
- package/dist/admin-shell/chrome/utils.js +8 -0
- package/dist/admin-shell/collections/api.d.ts +28 -0
- package/dist/admin-shell/collections/api.d.ts.map +1 -0
- package/dist/admin-shell/collections/api.js +51 -0
- package/dist/admin-shell/collections/api.module.js +9 -0
- package/dist/admin-shell/collections/api_module.css +42 -0
- package/dist/admin-shell/collections/create.d.ts +14 -0
- package/dist/admin-shell/collections/create.d.ts.map +1 -0
- package/dist/admin-shell/collections/create.js +77 -0
- package/dist/admin-shell/collections/edit.d.ts +19 -0
- package/dist/admin-shell/collections/edit.d.ts.map +1 -0
- package/dist/admin-shell/collections/edit.js +279 -0
- package/dist/admin-shell/collections/history.d.ts +20 -0
- package/dist/admin-shell/collections/history.d.ts.map +1 -0
- package/dist/admin-shell/collections/history.js +252 -0
- package/dist/admin-shell/collections/history.module.js +18 -0
- package/dist/admin-shell/collections/history_module.css +121 -0
- package/dist/admin-shell/collections/list.d.ts +16 -0
- package/dist/admin-shell/collections/list.d.ts.map +1 -0
- package/dist/admin-shell/collections/list.js +253 -0
- package/dist/admin-shell/collections/list.module.js +16 -0
- package/dist/admin-shell/collections/list_module.css +88 -0
- package/dist/admin-shell/collections/preview-link.d.ts +32 -0
- package/dist/admin-shell/collections/preview-link.d.ts.map +1 -0
- package/dist/admin-shell/collections/preview-link.js +54 -0
- package/dist/admin-shell/collections/tanstack-navigation-guard.d.ts +16 -0
- package/dist/admin-shell/collections/tanstack-navigation-guard.d.ts.map +1 -0
- package/dist/admin-shell/collections/tanstack-navigation-guard.js +19 -0
- package/dist/admin-shell/collections/view-menu.d.ts +58 -0
- package/dist/admin-shell/collections/view-menu.d.ts.map +1 -0
- package/dist/admin-shell/collections/view-menu.js +203 -0
- package/dist/admin-shell/collections/view-menu.module.js +11 -0
- package/dist/admin-shell/collections/view-menu_module.css +43 -0
- package/dist/auth/auth-context.d.ts +38 -0
- package/dist/auth/auth-context.d.ts.map +1 -0
- package/dist/auth/auth-context.js +57 -0
- package/dist/auth/auth-cookies.d.ts +35 -0
- package/dist/auth/auth-cookies.d.ts.map +1 -0
- package/dist/auth/auth-cookies.js +46 -0
- package/dist/auth/preview-cookies.d.ts +20 -0
- package/dist/auth/preview-cookies.d.ts.map +1 -0
- package/dist/auth/preview-cookies.js +26 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/integrations/abilities.d.ts +67 -0
- package/dist/integrations/abilities.d.ts.map +1 -0
- package/dist/integrations/abilities.js +25 -0
- package/dist/integrations/api-utils.d.ts +34 -0
- package/dist/integrations/api-utils.d.ts.map +1 -0
- package/dist/integrations/api-utils.js +22 -0
- package/dist/integrations/byline-admin-services.d.ts +25 -0
- package/dist/integrations/byline-admin-services.d.ts.map +1 -0
- package/dist/integrations/byline-admin-services.js +26 -0
- package/dist/integrations/byline-client.d.ts +22 -0
- package/dist/integrations/byline-client.d.ts.map +1 -0
- package/dist/integrations/byline-client.js +13 -0
- package/dist/integrations/byline-core.d.ts +28 -0
- package/dist/integrations/byline-core.d.ts.map +1 -0
- package/dist/integrations/byline-core.js +5 -0
- package/dist/integrations/byline-field-services.d.ts +19 -0
- package/dist/integrations/byline-field-services.d.ts.map +1 -0
- package/dist/integrations/byline-field-services.js +14 -0
- package/dist/integrations/byline-public-client.d.ts +10 -0
- package/dist/integrations/byline-public-client.d.ts.map +1 -0
- package/dist/integrations/byline-public-client.js +15 -0
- package/dist/integrations/byline-viewer-client.d.ts +21 -0
- package/dist/integrations/byline-viewer-client.d.ts.map +1 -0
- package/dist/integrations/byline-viewer-client.js +39 -0
- package/dist/integrations/start-errors.d.ts +23 -0
- package/dist/integrations/start-errors.d.ts.map +1 -0
- package/dist/integrations/start-errors.js +32 -0
- package/dist/routes/create-admin-account-route.d.ts +9 -0
- package/dist/routes/create-admin-account-route.d.ts.map +1 -0
- package/dist/routes/create-admin-account-route.js +68 -0
- package/dist/routes/create-admin-dashboard-route.d.ts +9 -0
- package/dist/routes/create-admin-dashboard-route.d.ts.map +1 -0
- package/dist/routes/create-admin-dashboard-route.js +44 -0
- package/dist/routes/create-admin-layout-route.d.ts +14 -0
- package/dist/routes/create-admin-layout-route.d.ts.map +1 -0
- package/dist/routes/create-admin-layout-route.js +64 -0
- package/dist/routes/create-admin-permissions-route.d.ts +9 -0
- package/dist/routes/create-admin-permissions-route.d.ts.map +1 -0
- package/dist/routes/create-admin-permissions-route.js +39 -0
- package/dist/routes/create-admin-role-edit-route.d.ts +9 -0
- package/dist/routes/create-admin-role-edit-route.d.ts.map +1 -0
- package/dist/routes/create-admin-role-edit-route.js +79 -0
- package/dist/routes/create-admin-roles-list-route.d.ts +9 -0
- package/dist/routes/create-admin-roles-list-route.d.ts.map +1 -0
- package/dist/routes/create-admin-roles-list-route.js +39 -0
- package/dist/routes/create-admin-user-edit-route.d.ts +9 -0
- package/dist/routes/create-admin-user-edit-route.d.ts.map +1 -0
- package/dist/routes/create-admin-user-edit-route.js +86 -0
- package/dist/routes/create-admin-users-list-route.d.ts +9 -0
- package/dist/routes/create-admin-users-list-route.d.ts.map +1 -0
- package/dist/routes/create-admin-users-list-route.js +71 -0
- package/dist/routes/create-collection-api-route.d.ts +15 -0
- package/dist/routes/create-collection-api-route.d.ts.map +1 -0
- package/dist/routes/create-collection-api-route.js +71 -0
- package/dist/routes/create-collection-create-route.d.ts +9 -0
- package/dist/routes/create-collection-create-route.d.ts.map +1 -0
- package/dist/routes/create-collection-create-route.js +53 -0
- package/dist/routes/create-collection-edit-route.d.ts +15 -0
- package/dist/routes/create-collection-edit-route.d.ts.map +1 -0
- package/dist/routes/create-collection-edit-route.js +65 -0
- package/dist/routes/create-collection-history-route.d.ts +15 -0
- package/dist/routes/create-collection-history-route.d.ts.map +1 -0
- package/dist/routes/create-collection-history-route.js +94 -0
- package/dist/routes/create-collection-list-route.d.ts +9 -0
- package/dist/routes/create-collection-list-route.d.ts.map +1 -0
- package/dist/routes/create-collection-list-route.js +130 -0
- package/dist/routes/create-sign-in-route.d.ts +9 -0
- package/dist/routes/create-sign-in-route.d.ts.map +1 -0
- package/dist/routes/create-sign-in-route.js +21 -0
- package/dist/routes/index.d.ts +35 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +14 -0
- package/dist/server-fns/admin-account/change-password.d.ts +30 -0
- package/dist/server-fns/admin-account/change-password.d.ts.map +1 -0
- package/dist/server-fns/admin-account/change-password.js +13 -0
- package/dist/server-fns/admin-account/get.d.ts +31 -0
- package/dist/server-fns/admin-account/get.d.ts.map +1 -0
- package/dist/server-fns/admin-account/get.js +13 -0
- package/dist/server-fns/admin-account/index.d.ts +22 -0
- package/dist/server-fns/admin-account/index.d.ts.map +1 -0
- package/dist/server-fns/admin-account/index.js +3 -0
- package/dist/server-fns/admin-account/update.d.ts +34 -0
- package/dist/server-fns/admin-account/update.d.ts.map +1 -0
- package/dist/server-fns/admin-account/update.js +13 -0
- package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +16 -0
- package/dist/server-fns/admin-permissions/get-role-abilities.d.ts.map +1 -0
- package/dist/server-fns/admin-permissions/get-role-abilities.js +14 -0
- package/dist/server-fns/admin-permissions/index.d.ts +25 -0
- package/dist/server-fns/admin-permissions/index.d.ts.map +1 -0
- package/dist/server-fns/admin-permissions/index.js +4 -0
- package/dist/server-fns/admin-permissions/list-registered.d.ts +33 -0
- package/dist/server-fns/admin-permissions/list-registered.d.ts.map +1 -0
- package/dist/server-fns/admin-permissions/list-registered.js +14 -0
- package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +16 -0
- package/dist/server-fns/admin-permissions/set-role-abilities.d.ts.map +1 -0
- package/dist/server-fns/admin-permissions/set-role-abilities.js +14 -0
- package/dist/server-fns/admin-permissions/who-has.d.ts +26 -0
- package/dist/server-fns/admin-permissions/who-has.d.ts.map +1 -0
- package/dist/server-fns/admin-permissions/who-has.js +14 -0
- package/dist/server-fns/admin-roles/create.d.ts +24 -0
- package/dist/server-fns/admin-roles/create.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/create.js +13 -0
- package/dist/server-fns/admin-roles/delete.d.ts +17 -0
- package/dist/server-fns/admin-roles/delete.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/delete.js +13 -0
- package/dist/server-fns/admin-roles/get.d.ts +22 -0
- package/dist/server-fns/admin-roles/get.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/get.js +13 -0
- package/dist/server-fns/admin-roles/index.d.ts +23 -0
- package/dist/server-fns/admin-roles/index.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/index.js +6 -0
- package/dist/server-fns/admin-roles/list.d.ts +26 -0
- package/dist/server-fns/admin-roles/list.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/list.js +13 -0
- package/dist/server-fns/admin-roles/reorder.d.ts +15 -0
- package/dist/server-fns/admin-roles/reorder.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/reorder.js +13 -0
- package/dist/server-fns/admin-roles/update.d.ts +27 -0
- package/dist/server-fns/admin-roles/update.d.ts.map +1 -0
- package/dist/server-fns/admin-roles/update.js +13 -0
- package/dist/server-fns/admin-users/create.d.ts +35 -0
- package/dist/server-fns/admin-users/create.d.ts.map +1 -0
- package/dist/server-fns/admin-users/create.js +13 -0
- package/dist/server-fns/admin-users/delete.d.ts +17 -0
- package/dist/server-fns/admin-users/delete.d.ts.map +1 -0
- package/dist/server-fns/admin-users/delete.js +13 -0
- package/dist/server-fns/admin-users/disable.d.ts +15 -0
- package/dist/server-fns/admin-users/disable.d.ts.map +1 -0
- package/dist/server-fns/admin-users/disable.js +13 -0
- package/dist/server-fns/admin-users/enable.d.ts +15 -0
- package/dist/server-fns/admin-users/enable.d.ts.map +1 -0
- package/dist/server-fns/admin-users/enable.js +13 -0
- package/dist/server-fns/admin-users/get-user-roles.d.ts +25 -0
- package/dist/server-fns/admin-users/get-user-roles.d.ts.map +1 -0
- package/dist/server-fns/admin-users/get-user-roles.js +13 -0
- package/dist/server-fns/admin-users/get.d.ts +29 -0
- package/dist/server-fns/admin-users/get.d.ts.map +1 -0
- package/dist/server-fns/admin-users/get.js +13 -0
- package/dist/server-fns/admin-users/index.d.ts +28 -0
- package/dist/server-fns/admin-users/index.d.ts.map +1 -0
- package/dist/server-fns/admin-users/index.js +10 -0
- package/dist/server-fns/admin-users/list.d.ts +51 -0
- package/dist/server-fns/admin-users/list.d.ts.map +1 -0
- package/dist/server-fns/admin-users/list.js +13 -0
- package/dist/server-fns/admin-users/set-password.d.ts +30 -0
- package/dist/server-fns/admin-users/set-password.d.ts.map +1 -0
- package/dist/server-fns/admin-users/set-password.js +13 -0
- package/dist/server-fns/admin-users/set-user-roles.d.ts +25 -0
- package/dist/server-fns/admin-users/set-user-roles.d.ts.map +1 -0
- package/dist/server-fns/admin-users/set-user-roles.js +13 -0
- package/dist/server-fns/admin-users/update.d.ts +37 -0
- package/dist/server-fns/admin-users/update.d.ts.map +1 -0
- package/dist/server-fns/admin-users/update.js +13 -0
- package/dist/server-fns/auth/current-user.d.ts +38 -0
- package/dist/server-fns/auth/current-user.d.ts.map +1 -0
- package/dist/server-fns/auth/current-user.js +52 -0
- package/dist/server-fns/auth/index.d.ts +11 -0
- package/dist/server-fns/auth/index.d.ts.map +1 -0
- package/dist/server-fns/auth/index.js +3 -0
- package/dist/server-fns/auth/sign-in.d.ts +19 -0
- package/dist/server-fns/auth/sign-in.d.ts.map +1 -0
- package/dist/server-fns/auth/sign-in.js +31 -0
- package/dist/server-fns/auth/sign-out.d.ts +11 -0
- package/dist/server-fns/auth/sign-out.d.ts.map +1 -0
- package/dist/server-fns/auth/sign-out.js +17 -0
- package/dist/server-fns/collections/create.d.ts +21 -0
- package/dist/server-fns/collections/create.d.ts.map +1 -0
- package/dist/server-fns/collections/create.js +40 -0
- package/dist/server-fns/collections/delete.d.ts +18 -0
- package/dist/server-fns/collections/delete.d.ts.map +1 -0
- package/dist/server-fns/collections/delete.js +44 -0
- package/dist/server-fns/collections/get.d.ts +26 -0
- package/dist/server-fns/collections/get.d.ts.map +1 -0
- package/dist/server-fns/collections/get.js +133 -0
- package/dist/server-fns/collections/history.d.ts +43 -0
- package/dist/server-fns/collections/history.d.ts.map +1 -0
- package/dist/server-fns/collections/history.js +29 -0
- package/dist/server-fns/collections/index.d.ts +16 -0
- package/dist/server-fns/collections/index.d.ts.map +1 -0
- package/dist/server-fns/collections/index.js +9 -0
- package/dist/server-fns/collections/list.d.ts +54 -0
- package/dist/server-fns/collections/list.d.ts.map +1 -0
- package/dist/server-fns/collections/list.js +65 -0
- package/dist/server-fns/collections/stats.d.ts +17 -0
- package/dist/server-fns/collections/stats.d.ts.map +1 -0
- package/dist/server-fns/collections/stats.js +28 -0
- package/dist/server-fns/collections/status.d.ts +31 -0
- package/dist/server-fns/collections/status.d.ts.map +1 -0
- package/dist/server-fns/collections/status.js +79 -0
- package/dist/server-fns/collections/update.d.ts +26 -0
- package/dist/server-fns/collections/update.d.ts.map +1 -0
- package/dist/server-fns/collections/update.js +41 -0
- package/dist/server-fns/collections/upload.d.ts +57 -0
- package/dist/server-fns/collections/upload.d.ts.map +1 -0
- package/dist/server-fns/collections/upload.js +132 -0
- package/dist/server-fns/collections/utils.d.ts +15 -0
- package/dist/server-fns/collections/utils.d.ts.map +1 -0
- package/dist/server-fns/collections/utils.js +4 -0
- package/dist/server-fns/preview/disable.d.ts +12 -0
- package/dist/server-fns/preview/disable.d.ts.map +1 -0
- package/dist/server-fns/preview/disable.js +12 -0
- package/dist/server-fns/preview/enable.d.ts +12 -0
- package/dist/server-fns/preview/enable.d.ts.map +1 -0
- package/dist/server-fns/preview/enable.js +14 -0
- package/dist/server-fns/preview/index.d.ts +11 -0
- package/dist/server-fns/preview/index.d.ts.map +1 -0
- package/dist/server-fns/preview/index.js +3 -0
- package/dist/server-fns/preview/state.d.ts +11 -0
- package/dist/server-fns/preview/state.d.ts.map +1 -0
- package/dist/server-fns/preview/state.js +8 -0
- package/package.json +164 -0
- package/src/admin-shell/admin-roles/container.module.css +132 -0
- package/src/admin-shell/admin-roles/container.tsx +209 -0
- package/src/admin-shell/admin-roles/delete.module.css +52 -0
- package/src/admin-shell/admin-roles/delete.tsx +117 -0
- package/src/admin-shell/admin-roles/list.module.css +158 -0
- package/src/admin-shell/admin-roles/list.tsx +308 -0
- package/src/admin-shell/admin-users/container.module.css +199 -0
- package/src/admin-shell/admin-users/container.tsx +344 -0
- package/src/admin-shell/admin-users/delete.module.css +52 -0
- package/src/admin-shell/admin-users/delete.tsx +129 -0
- package/src/admin-shell/admin-users/list.module.css +164 -0
- package/src/admin-shell/admin-users/list.tsx +314 -0
- package/src/admin-shell/chrome/admin-app-bar.module.css +72 -0
- package/src/admin-shell/chrome/admin-app-bar.tsx +74 -0
- package/src/admin-shell/chrome/admin-layout.module.css +16 -0
- package/src/admin-shell/chrome/branding.module.css +20 -0
- package/src/admin-shell/chrome/branding.tsx +23 -0
- package/src/admin-shell/chrome/breadcrumbs/@types.ts +5 -0
- package/src/admin-shell/chrome/breadcrumbs/breadcrumbs-client.tsx +30 -0
- package/src/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.tsx +48 -0
- package/src/admin-shell/chrome/breadcrumbs/breadcrumbs.module.css +93 -0
- package/src/admin-shell/chrome/breadcrumbs/breadcrumbs.tsx +96 -0
- package/src/admin-shell/chrome/byline-logo.tsx +151 -0
- package/src/admin-shell/chrome/content.module.css +16 -0
- package/src/admin-shell/chrome/content.tsx +60 -0
- package/src/admin-shell/chrome/dashboard.module.css +245 -0
- package/src/admin-shell/chrome/dashboard.tsx +128 -0
- package/src/admin-shell/chrome/drawer-toggle.module.css +30 -0
- package/src/admin-shell/chrome/drawer-toggle.tsx +62 -0
- package/src/admin-shell/chrome/hamburger.module.css +16 -0
- package/src/admin-shell/chrome/hamburger.tsx +56 -0
- package/src/admin-shell/chrome/loose-router.ts +47 -0
- package/src/admin-shell/chrome/menu-drawer.module.css +196 -0
- package/src/admin-shell/chrome/menu-drawer.tsx +155 -0
- package/src/admin-shell/chrome/menu-provider.tsx +95 -0
- package/src/admin-shell/chrome/preview-toggle.tsx +107 -0
- package/src/admin-shell/chrome/route-error.module.css +114 -0
- package/src/admin-shell/chrome/route-error.tsx +125 -0
- package/src/admin-shell/chrome/router-pager.tsx +179 -0
- package/src/admin-shell/chrome/sign-in-page.module.css +32 -0
- package/src/admin-shell/chrome/sign-in-page.tsx +35 -0
- package/src/admin-shell/chrome/sort-icons.tsx +127 -0
- package/src/admin-shell/chrome/th-sortable.module.css +51 -0
- package/src/admin-shell/chrome/th-sortable.tsx +114 -0
- package/src/admin-shell/chrome/use-media-query.ts +28 -0
- package/src/admin-shell/chrome/utils.ts +20 -0
- package/src/admin-shell/collections/api.module.css +62 -0
- package/src/admin-shell/collections/api.tsx +70 -0
- package/src/admin-shell/collections/create.tsx +108 -0
- package/src/admin-shell/collections/edit.tsx +319 -0
- package/src/admin-shell/collections/history.module.css +156 -0
- package/src/admin-shell/collections/history.tsx +352 -0
- package/src/admin-shell/collections/list.module.css +124 -0
- package/src/admin-shell/collections/list.tsx +313 -0
- package/src/admin-shell/collections/preview-link.tsx +138 -0
- package/src/admin-shell/collections/tanstack-navigation-guard.ts +43 -0
- package/src/admin-shell/collections/view-menu.module.css +60 -0
- package/src/admin-shell/collections/view-menu.tsx +238 -0
- package/src/auth/auth-context.test.node.ts +200 -0
- package/src/auth/auth-context.ts +119 -0
- package/src/auth/auth-cookies.ts +113 -0
- package/src/auth/preview-cookies.ts +73 -0
- package/src/declarations.d.ts +4 -0
- package/src/index.ts +44 -0
- package/src/integrations/abilities.tsx +90 -0
- package/src/integrations/api-utils.ts +66 -0
- package/src/integrations/byline-admin-services.ts +86 -0
- package/src/integrations/byline-client.ts +40 -0
- package/src/integrations/byline-core.ts +32 -0
- package/src/integrations/byline-field-services.ts +35 -0
- package/src/integrations/byline-public-client.ts +53 -0
- package/src/integrations/byline-viewer-client.ts +99 -0
- package/src/integrations/start-errors.ts +86 -0
- package/src/routes/create-admin-account-route.tsx +65 -0
- package/src/routes/create-admin-dashboard-route.tsx +52 -0
- package/src/routes/create-admin-layout-route.tsx +89 -0
- package/src/routes/create-admin-permissions-route.tsx +43 -0
- package/src/routes/create-admin-role-edit-route.tsx +88 -0
- package/src/routes/create-admin-roles-list-route.tsx +39 -0
- package/src/routes/create-admin-user-edit-route.tsx +105 -0
- package/src/routes/create-admin-users-list-route.tsx +84 -0
- package/src/routes/create-collection-api-route.tsx +111 -0
- package/src/routes/create-collection-create-route.tsx +66 -0
- package/src/routes/create-collection-edit-route.tsx +102 -0
- package/src/routes/create-collection-history-route.tsx +130 -0
- package/src/routes/create-collection-list-route.tsx +175 -0
- package/src/routes/create-sign-in-route.tsx +39 -0
- package/src/routes/index.ts +36 -0
- package/src/server-fns/admin-account/change-password.ts +27 -0
- package/src/server-fns/admin-account/get.ts +27 -0
- package/src/server-fns/admin-account/index.ts +28 -0
- package/src/server-fns/admin-account/update.ts +31 -0
- package/src/server-fns/admin-permissions/get-role-abilities.ts +27 -0
- package/src/server-fns/admin-permissions/index.ts +36 -0
- package/src/server-fns/admin-permissions/list-registered.ts +36 -0
- package/src/server-fns/admin-permissions/set-role-abilities.ts +32 -0
- package/src/server-fns/admin-permissions/who-has.ts +24 -0
- package/src/server-fns/admin-roles/create.ts +28 -0
- package/src/server-fns/admin-roles/delete.ts +25 -0
- package/src/server-fns/admin-roles/get.ts +21 -0
- package/src/server-fns/admin-roles/index.ts +25 -0
- package/src/server-fns/admin-roles/list.ts +27 -0
- package/src/server-fns/admin-roles/reorder.ts +21 -0
- package/src/server-fns/admin-roles/update.ts +31 -0
- package/src/server-fns/admin-users/create.ts +32 -0
- package/src/server-fns/admin-users/delete.ts +21 -0
- package/src/server-fns/admin-users/disable.ts +24 -0
- package/src/server-fns/admin-users/enable.ts +24 -0
- package/src/server-fns/admin-users/get-user-roles.ts +21 -0
- package/src/server-fns/admin-users/get.ts +21 -0
- package/src/server-fns/admin-users/index.ts +35 -0
- package/src/server-fns/admin-users/list.ts +40 -0
- package/src/server-fns/admin-users/set-password.ts +27 -0
- package/src/server-fns/admin-users/set-user-roles.ts +26 -0
- package/src/server-fns/admin-users/update.ts +34 -0
- package/src/server-fns/auth/current-user.ts +117 -0
- package/src/server-fns/auth/index.ts +15 -0
- package/src/server-fns/auth/sign-in.ts +71 -0
- package/src/server-fns/auth/sign-out.ts +42 -0
- package/src/server-fns/collections/create.ts +58 -0
- package/src/server-fns/collections/delete.ts +62 -0
- package/src/server-fns/collections/get.ts +233 -0
- package/src/server-fns/collections/history.ts +73 -0
- package/src/server-fns/collections/index.ts +16 -0
- package/src/server-fns/collections/list.ts +121 -0
- package/src/server-fns/collections/stats.ts +52 -0
- package/src/server-fns/collections/status.ts +102 -0
- package/src/server-fns/collections/update.ts +67 -0
- package/src/server-fns/collections/upload.ts +274 -0
- package/src/server-fns/collections/utils.ts +17 -0
- package/src/server-fns/preview/disable.ts +24 -0
- package/src/server-fns/preview/enable.ts +27 -0
- package/src/server-fns/preview/index.ts +11 -0
- package/src/server-fns/preview/state.ts +30 -0
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
|
|
9
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
type AdminUserListOrder,
|
|
13
|
+
type AdminUserListResponse,
|
|
14
|
+
listAdminUsersCommand,
|
|
15
|
+
} from '@byline/admin/admin-users'
|
|
16
|
+
|
|
17
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
18
|
+
import { bylineCore } from '../../integrations/byline-core.js'
|
|
19
|
+
|
|
20
|
+
export interface ListAdminUsersInput {
|
|
21
|
+
page?: number
|
|
22
|
+
pageSize?: number
|
|
23
|
+
query?: string
|
|
24
|
+
order?: AdminUserListOrder
|
|
25
|
+
desc?: boolean
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* List admin users. Thin server-fn wrapper over `listAdminUsersCommand`
|
|
30
|
+
* — validation, ability assertion, and shaping all live in the command.
|
|
31
|
+
* The wrapper's job is to resolve the request context from session
|
|
32
|
+
* cookies, pass the `AdminStore` in, and let errors propagate to the
|
|
33
|
+
* TanStack Start transport layer for the client to branch on.
|
|
34
|
+
*/
|
|
35
|
+
export const listAdminUsers = createServerFn({ method: 'GET' })
|
|
36
|
+
.inputValidator((input: ListAdminUsersInput) => input ?? {})
|
|
37
|
+
.handler(async ({ data }): Promise<AdminUserListResponse> => {
|
|
38
|
+
const context = await getAdminRequestContext()
|
|
39
|
+
return listAdminUsersCommand(context, data, { store: bylineCore().adminStore! })
|
|
40
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
|
|
9
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
10
|
+
|
|
11
|
+
import { type AdminUserResponse, setAdminUserPasswordCommand } from '@byline/admin/admin-users'
|
|
12
|
+
|
|
13
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
14
|
+
import { bylineCore } from '../../integrations/byline-core.js'
|
|
15
|
+
|
|
16
|
+
export interface SetAdminUserPasswordInput {
|
|
17
|
+
id: string
|
|
18
|
+
vid: number
|
|
19
|
+
password: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const setAdminUserPassword = createServerFn({ method: 'POST' })
|
|
23
|
+
.inputValidator((input: SetAdminUserPasswordInput) => input)
|
|
24
|
+
.handler(async ({ data }): Promise<AdminUserResponse> => {
|
|
25
|
+
const context = await getAdminRequestContext()
|
|
26
|
+
return setAdminUserPasswordCommand(context, data, { store: bylineCore().adminStore! })
|
|
27
|
+
})
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
|
|
9
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
10
|
+
|
|
11
|
+
import { setRolesForUserCommand, type UserRolesResponse } from '@byline/admin/admin-roles'
|
|
12
|
+
|
|
13
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
14
|
+
import { bylineCore } from '../../integrations/byline-core.js'
|
|
15
|
+
|
|
16
|
+
export interface SetUserRolesInput {
|
|
17
|
+
userId: string
|
|
18
|
+
roleIds: string[]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const setUserRoles = createServerFn({ method: 'POST' })
|
|
22
|
+
.inputValidator((input: SetUserRolesInput) => input)
|
|
23
|
+
.handler(async ({ data }): Promise<UserRolesResponse> => {
|
|
24
|
+
const context = await getAdminRequestContext()
|
|
25
|
+
return setRolesForUserCommand(context, data, { store: bylineCore().adminStore! })
|
|
26
|
+
})
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
|
|
9
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
10
|
+
|
|
11
|
+
import { type AdminUserResponse, updateAdminUserCommand } from '@byline/admin/admin-users'
|
|
12
|
+
|
|
13
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
14
|
+
import { bylineCore } from '../../integrations/byline-core.js'
|
|
15
|
+
|
|
16
|
+
export interface UpdateAdminUserInput {
|
|
17
|
+
id: string
|
|
18
|
+
vid: number
|
|
19
|
+
patch: {
|
|
20
|
+
email?: string
|
|
21
|
+
given_name?: string | null
|
|
22
|
+
family_name?: string | null
|
|
23
|
+
username?: string | null
|
|
24
|
+
is_super_admin?: boolean
|
|
25
|
+
is_email_verified?: boolean
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const updateAdminUser = createServerFn({ method: 'POST' })
|
|
30
|
+
.inputValidator((input: UpdateAdminUserInput) => input)
|
|
31
|
+
.handler(async ({ data }): Promise<AdminUserResponse> => {
|
|
32
|
+
const context = await getAdminRequestContext()
|
|
33
|
+
return updateAdminUserCommand(context, data, { store: bylineCore().adminStore! })
|
|
34
|
+
})
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Admin profile lookup for the authenticated request.
|
|
11
|
+
*
|
|
12
|
+
* Thin wrapper that resolves the `AdminAuth` via `getAdminRequestContext()`
|
|
13
|
+
* (which handles verify + lazy refresh + cookie rewrites), then fetches the
|
|
14
|
+
* admin user's profile row so the UI can render "signed in as X" without
|
|
15
|
+
* embedding identity metadata in the JWT itself.
|
|
16
|
+
*
|
|
17
|
+
* Throws `ERR_UNAUTHENTICATED` through `getAdminRequestContext` when there
|
|
18
|
+
* is no valid session — callers treat that as "redirect to sign-in".
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
22
|
+
|
|
23
|
+
import { type Actor, AuthError } from '@byline/auth'
|
|
24
|
+
import { getServerConfig } from '@byline/core'
|
|
25
|
+
import type { PgAdapter } from '@byline/db-postgres'
|
|
26
|
+
import { createAdminUsersRepository } from '@byline/db-postgres/admin'
|
|
27
|
+
|
|
28
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
29
|
+
|
|
30
|
+
export interface CurrentAdminUser {
|
|
31
|
+
id: string
|
|
32
|
+
email: string
|
|
33
|
+
given_name: string | null
|
|
34
|
+
family_name: string | null
|
|
35
|
+
is_super_admin: boolean
|
|
36
|
+
/**
|
|
37
|
+
* Flat ability set resolved from the actor's role grants. Sent to the
|
|
38
|
+
* client so the admin shell can render cosmetic ability cues (hide
|
|
39
|
+
* Users / Roles / Permissions menu items, disable buttons, etc.). The
|
|
40
|
+
* real enforcement boundary is server-side (`assertActorCanPerform` /
|
|
41
|
+
* `assertAdminActor`) — UI cues are an affordance, never a security
|
|
42
|
+
* guarantee.
|
|
43
|
+
*
|
|
44
|
+
* Empty for a non-super-admin who happens to hold zero abilities.
|
|
45
|
+
* Super-admins also receive an empty array here; the `is_super_admin`
|
|
46
|
+
* flag is what callers should branch on for the bypass.
|
|
47
|
+
*/
|
|
48
|
+
abilities: string[]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const getCurrentAdminUser = createServerFn({ method: 'GET' }).handler(
|
|
52
|
+
async (): Promise<CurrentAdminUser> => {
|
|
53
|
+
const { actor } = await getAdminRequestContext()
|
|
54
|
+
if (!actor) {
|
|
55
|
+
// getAdminRequestContext always returns an AdminAuth on success; the
|
|
56
|
+
// null branch is compile-time impossible here but satisfies the type.
|
|
57
|
+
throw new Error('unexpected null actor after getAdminRequestContext')
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const db = (getServerConfig().db as PgAdapter).drizzle
|
|
61
|
+
const users = createAdminUsersRepository(db)
|
|
62
|
+
const row = await users.getById(actor.id)
|
|
63
|
+
if (!row) {
|
|
64
|
+
// Session resolved to an admin id that no longer exists — force the
|
|
65
|
+
// caller back through sign-in rather than return partial data.
|
|
66
|
+
throw new Error('admin user not found for current session')
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
id: row.id,
|
|
71
|
+
email: row.email,
|
|
72
|
+
given_name: row.given_name,
|
|
73
|
+
family_name: row.family_name,
|
|
74
|
+
is_super_admin: row.is_super_admin,
|
|
75
|
+
abilities: Array.from(actor.abilities),
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Soft variant for public-page consumers (e.g. the content admin bar that
|
|
82
|
+
* renders only when the visitor is signed in). Returns `null` instead of
|
|
83
|
+
* throwing when there is no session — anonymous visitors are the common
|
|
84
|
+
* case here, so a thrown error would be wrong shape for a public route
|
|
85
|
+
* loader. Other failure modes (DB unavailable, session points to a
|
|
86
|
+
* deleted admin) are still coerced to `null` so the bar simply hides.
|
|
87
|
+
*/
|
|
88
|
+
export const getCurrentAdminUserSoft = createServerFn({ method: 'GET' }).handler(
|
|
89
|
+
async (): Promise<CurrentAdminUser | null> => {
|
|
90
|
+
try {
|
|
91
|
+
let actor: Actor
|
|
92
|
+
try {
|
|
93
|
+
;({ actor } = await getAdminRequestContext())
|
|
94
|
+
} catch (err) {
|
|
95
|
+
if (err instanceof AuthError) return null
|
|
96
|
+
throw err
|
|
97
|
+
}
|
|
98
|
+
if (!actor) return null
|
|
99
|
+
|
|
100
|
+
const db = (getServerConfig().db as PgAdapter).drizzle
|
|
101
|
+
const users = createAdminUsersRepository(db)
|
|
102
|
+
const row = await users.getById(actor.id)
|
|
103
|
+
if (!row) return null
|
|
104
|
+
|
|
105
|
+
return {
|
|
106
|
+
id: row.id,
|
|
107
|
+
email: row.email,
|
|
108
|
+
given_name: row.given_name,
|
|
109
|
+
family_name: row.family_name,
|
|
110
|
+
is_super_admin: row.is_super_admin,
|
|
111
|
+
abilities: Array.from(actor.abilities),
|
|
112
|
+
}
|
|
113
|
+
} catch {
|
|
114
|
+
return null
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
)
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
|
|
9
|
+
export {
|
|
10
|
+
type CurrentAdminUser,
|
|
11
|
+
getCurrentAdminUser,
|
|
12
|
+
getCurrentAdminUserSoft,
|
|
13
|
+
} from './current-user.js'
|
|
14
|
+
export { adminSignIn, type SignInInput, type SignInResult } from './sign-in.js'
|
|
15
|
+
export { adminSignOut } from './sign-out.js'
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Admin sign-in server function.
|
|
11
|
+
*
|
|
12
|
+
* Verifies email/password against the configured `SessionProvider`, sets
|
|
13
|
+
* the two-cookie session pair on success, and returns a minimal caller
|
|
14
|
+
* shape (just the admin user id). Errors propagate as `AuthError`s from
|
|
15
|
+
* `@byline/auth` — the UI surface renders a generic "invalid credentials"
|
|
16
|
+
* message rather than distinguishing unknown-email from wrong-password
|
|
17
|
+
* (the provider also equalises timing for the same reason).
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
21
|
+
import { getRequestHeader } from '@tanstack/react-start/server'
|
|
22
|
+
|
|
23
|
+
import { getServerConfig } from '@byline/core'
|
|
24
|
+
|
|
25
|
+
import { setSessionCookies } from '../../auth/auth-cookies.js'
|
|
26
|
+
|
|
27
|
+
export interface SignInInput {
|
|
28
|
+
email: string
|
|
29
|
+
password: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface SignInResult {
|
|
33
|
+
userId: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const adminSignIn = createServerFn({ method: 'POST' })
|
|
37
|
+
.inputValidator((input: SignInInput) => {
|
|
38
|
+
if (typeof input?.email !== 'string' || input.email.length === 0) {
|
|
39
|
+
throw new Error('email is required')
|
|
40
|
+
}
|
|
41
|
+
if (typeof input?.password !== 'string' || input.password.length === 0) {
|
|
42
|
+
throw new Error('password is required')
|
|
43
|
+
}
|
|
44
|
+
return { email: input.email, password: input.password }
|
|
45
|
+
})
|
|
46
|
+
.handler(async ({ data }): Promise<SignInResult> => {
|
|
47
|
+
const provider = getServerConfig().sessionProvider
|
|
48
|
+
if (!provider) {
|
|
49
|
+
throw new Error('no sessionProvider configured')
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// TanStack Start doesn't currently expose the raw request IP in a
|
|
53
|
+
// cross-runtime way; pass what we can observe and leave the ip field
|
|
54
|
+
// unset. Operators who need accurate client IPs for refresh-token
|
|
55
|
+
// provenance will typically run behind a reverse proxy that stamps
|
|
56
|
+
// `x-forwarded-for` — revisit when Phase 5 sees real deployments.
|
|
57
|
+
const userAgent = getRequestHeader('user-agent') ?? undefined
|
|
58
|
+
const forwardedFor = getRequestHeader('x-forwarded-for') ?? undefined
|
|
59
|
+
const ip = forwardedFor?.split(',')[0]?.trim() || undefined
|
|
60
|
+
|
|
61
|
+
const result = await provider.signInWithPassword({
|
|
62
|
+
email: data.email,
|
|
63
|
+
password: data.password,
|
|
64
|
+
userAgent,
|
|
65
|
+
ip,
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
setSessionCookies(result)
|
|
69
|
+
|
|
70
|
+
return { userId: result.actor.id }
|
|
71
|
+
})
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Admin sign-out server function.
|
|
11
|
+
*
|
|
12
|
+
* Revokes the current refresh token (so a stolen copy cannot be reused)
|
|
13
|
+
* and clears both session cookies. Idempotent — if the caller already
|
|
14
|
+
* lacks a refresh cookie, we still clear whatever's there and return
|
|
15
|
+
* successfully.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
19
|
+
|
|
20
|
+
import { getServerConfig } from '@byline/core'
|
|
21
|
+
|
|
22
|
+
import { clearSessionCookies, readRefreshTokenCookie } from '../../auth/auth-cookies.js'
|
|
23
|
+
|
|
24
|
+
export const adminSignOut = createServerFn({ method: 'POST' }).handler(async () => {
|
|
25
|
+
const provider = getServerConfig().sessionProvider
|
|
26
|
+
const refreshToken = readRefreshTokenCookie()
|
|
27
|
+
|
|
28
|
+
if (provider && refreshToken) {
|
|
29
|
+
// Best-effort revoke — `revokeSession` itself is idempotent for
|
|
30
|
+
// unknown/already-revoked tokens, so failures here would almost
|
|
31
|
+
// certainly be transport-level. Swallow and continue: the cookies
|
|
32
|
+
// get cleared regardless, so the caller's session ends.
|
|
33
|
+
try {
|
|
34
|
+
await provider.revokeSession(refreshToken)
|
|
35
|
+
} catch {
|
|
36
|
+
// no-op
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
clearSessionCookies()
|
|
41
|
+
return { status: 'ok' as const }
|
|
42
|
+
})
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
|
|
9
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
10
|
+
|
|
11
|
+
import { ERR_NOT_FOUND, getLogger, getServerConfig } from '@byline/core'
|
|
12
|
+
import type { DocumentLifecycleContext } from '@byline/core/services'
|
|
13
|
+
import { createDocument } from '@byline/core/services'
|
|
14
|
+
|
|
15
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
16
|
+
import { ensureCollection } from '../../integrations/api-utils.js'
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Create document
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
export const createCollectionDocument = createServerFn({ method: 'POST' })
|
|
23
|
+
.inputValidator(
|
|
24
|
+
(input: { collection: string; data: any; locale?: string; path?: string }) => input
|
|
25
|
+
)
|
|
26
|
+
.handler(async ({ data: input }) => {
|
|
27
|
+
const { collection: path, data: documentData, locale, path: explicitPath } = input
|
|
28
|
+
const logger = getLogger()
|
|
29
|
+
const config = await ensureCollection(path)
|
|
30
|
+
if (!config) {
|
|
31
|
+
throw ERR_NOT_FOUND({
|
|
32
|
+
message: 'Collection not found',
|
|
33
|
+
details: { collectionPath: path },
|
|
34
|
+
}).log(logger)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const serverConfig = getServerConfig()
|
|
38
|
+
const ctx: DocumentLifecycleContext = {
|
|
39
|
+
db: serverConfig.db,
|
|
40
|
+
definition: config.definition,
|
|
41
|
+
collectionId: config.collection.id,
|
|
42
|
+
collectionVersion: config.collection.version,
|
|
43
|
+
collectionPath: path,
|
|
44
|
+
logger,
|
|
45
|
+
defaultLocale: serverConfig.i18n.content.defaultLocale,
|
|
46
|
+
slugifier: serverConfig.slugifier,
|
|
47
|
+
requestContext: await getAdminRequestContext(),
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
await createDocument(ctx, {
|
|
51
|
+
data: structuredClone(documentData),
|
|
52
|
+
status: documentData.status,
|
|
53
|
+
locale: locale ?? serverConfig.i18n.content.defaultLocale,
|
|
54
|
+
path: explicitPath,
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
return { status: 'ok' as const }
|
|
58
|
+
})
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
|
|
9
|
+
import { createServerFn } from '@tanstack/react-start'
|
|
10
|
+
|
|
11
|
+
import { ERR_NOT_FOUND, getLogger, getServerConfig, getUploadFields } from '@byline/core'
|
|
12
|
+
import type { DocumentLifecycleContext } from '@byline/core/services'
|
|
13
|
+
import { deleteDocument as deleteDocumentService } from '@byline/core/services'
|
|
14
|
+
|
|
15
|
+
import { getAdminRequestContext } from '../../auth/auth-context.js'
|
|
16
|
+
import { ensureCollection } from '../../integrations/api-utils.js'
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Delete document (soft-delete — marks all versions as deleted)
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
export const deleteDocument = createServerFn({ method: 'POST' })
|
|
23
|
+
.inputValidator((input: { collection: string; id: string }) => input)
|
|
24
|
+
.handler(async ({ data: input }) => {
|
|
25
|
+
const { collection: path, id } = input
|
|
26
|
+
const logger = getLogger()
|
|
27
|
+
const config = await ensureCollection(path)
|
|
28
|
+
if (!config) {
|
|
29
|
+
throw ERR_NOT_FOUND({
|
|
30
|
+
message: 'Collection not found',
|
|
31
|
+
details: { collectionPath: path },
|
|
32
|
+
}).log(logger)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const serverConfig = getServerConfig()
|
|
36
|
+
// Resolve the storage provider so the lifecycle service can clean up
|
|
37
|
+
// uploaded files and variants on deletion. With per-field upload
|
|
38
|
+
// config, a collection may have one (or more) image/file fields with
|
|
39
|
+
// their own storage. The delete path needs *a* provider; we pick the
|
|
40
|
+
// first upload-capable field's, falling back to the site-wide
|
|
41
|
+
// default. Multi-storage collections are out of scope today —
|
|
42
|
+
// deletion routes everything through one provider, which is fine
|
|
43
|
+
// when all upload fields target the same backend (the common case).
|
|
44
|
+
const firstUploadField = getUploadFields(config.definition)[0]
|
|
45
|
+
const storage = firstUploadField?.upload?.storage ?? serverConfig.storage
|
|
46
|
+
const db = serverConfig.db
|
|
47
|
+
const ctx: DocumentLifecycleContext = {
|
|
48
|
+
db,
|
|
49
|
+
definition: config.definition,
|
|
50
|
+
collectionId: config.collection.id,
|
|
51
|
+
collectionVersion: config.collection.version,
|
|
52
|
+
collectionPath: path,
|
|
53
|
+
...(storage ? { storage } : {}),
|
|
54
|
+
logger,
|
|
55
|
+
defaultLocale: serverConfig.i18n.content.defaultLocale,
|
|
56
|
+
slugifier: serverConfig.slugifier,
|
|
57
|
+
requestContext: await getAdminRequestContext(),
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const result = await deleteDocumentService(ctx, { documentId: id })
|
|
61
|
+
return { status: 'ok' as const, deletedVersionCount: result.deletedVersionCount }
|
|
62
|
+
})
|