Admin pages
An admin page is the same native page primitive placed in workspace administration. Use it for app configuration and operational controls, not ordinary member workflow.
contributes:
ui:
- id: reports-admin
kind: nativeModule
surface: page
slot: admin.workspace.tab
sectionId: reports
label: Reports settings
route: /admin/reports/*
roles: [OWNER, ADMIN]
module:
entry: dist/ui/app.js
export: ReportsAdmin
styles: dist/ui/app.cssslot decides where Core mounts the page. Core passes route/subroute just as it does for a workspace page; the rendered content remains app-owned. Declare roles for the intended administrators and still enforce authorization in the app backend. UI visibility is not a security boundary.
import { useAppFetch } from '@sota/platform';
export function ReportsAdmin() {
const appFetch = useAppFetch();
async function save() {
const response = await appFetch('/settings', {
method: 'PUT',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ enabled: true }),
});
if (!response.ok) throw new Error('Could not save settings');
}
return <button type="button" onClick={save}>Enable reports</button>;
}