@realtekh/core-theme-admin
v0.0.12
Published
RealTek CORE-THEME — shared React component & admin-screen library (AddFormV1, EditFormV1, ListView, DetailViewV1, ...).
Readme
CORE-THEME
CORE-THEME 1
Auth handling for pages (built in)
When a page from this library (e.g. AdminPage, JobsListPage, …) is opened
without a logged-in session, the data APIs reject with a 401 and the page
would otherwise render empty ("no module") with no explanation.
This is handled inside the package — every exported page is already wrapped with an auth guard. A host app does nothing: just route to the page, and if it's opened without a session the user sees a clear "You haven't logged into this session. Please login to access the data." screen with a Login button.
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import { AdminPage } from '@realtekh/core-theme-admin';
import '@realtekh/core-theme-admin/style.css';
export default function App() {
return (
<BrowserRouter>
<Routes>
{/* opened without login → shows the "not logged in" screen automatically */}
<Route path="/admin" element={<AdminPage />} />
</Routes>
</BrowserRouter>
);
}Guarding your own pages (optional)
The same guard is exported for any custom page the host app builds:
import { AuthGuard, withAuthGuard } from '@realtekh/core-theme-admin';
// wrap inline…
<AuthGuard><MyPage /></AuthGuard>
// …or bake it into your own component, like the library does:
const MyGuardedPage = withAuthGuard(MyPage);Customizing the screen (AuthGuard / withAuthGuard props, all optional)
| Prop | Default | Purpose |
| ------------ | ------------------------------------------------------------------- | -------------------------------------------------- |
| title | "You're not logged in" | Heading on the error screen. |
| message | "You haven't logged into this session. Please login to access the data." | Sub-text. |
| loginPath | "/login" | Where the Login button sends the user. |
| loginLabel | "Go to Login" | Login button text. |
| onLogin | — | Custom handler for the Login button (overrides loginPath). |
| fallback | — | Render your own screen instead of the default one. |
The guard re-checks the session live on login, logout, tab focus and
cross-tab storage changes, so it reveals/hides content without a reload.
MongoDB admin seed during package install
Installing @realtekh/core-theme-admin installs the admin package and its
bundled npm dependencies. The package also includes a MongoDB initializer in
its postinstall script. The only packages the host app should keep as its own
runtime copies are the React/router peer dependencies: react, react-dom,
and react-router-dom.
Normal npm install @realtekh/core-theme-admin installs the package but does
not show an interactive DB-name prompt. To initialize MongoDB during install,
either run npm with --foreground-scripts so the prompt is visible, or pass
MONGO_DB_NAME for a one-command non-interactive install.
When MongoDB init runs, it asks for or reads the MongoDB database name and creates the auth/admin collections used by the Go auth service:
usersrolesmenuspermissionsrole_menu_permissionsuser_menu_permissionsmenu_structures
It seeds the default ADMIN role, default admin user, migrated permission
keys, menu master rows, role/user permission maps, and the login side-menu JSON
used by the MongoDB auth APIs. Each collection, index, and seed step is logged
in the command prompt.
Defaults:
- Mongo URI:
mongodb://localhost:27017 - Admin email:
[email protected] - Admin password:
password
In the project where you install @realtekh/core-theme-admin, create a .env file:
MONGO_URI=mongodb://localhost:27017
[email protected]
ADMIN_PASSWORD_HASH=<bcrypt-hash>
DEFAULT_TENANT_ID=93c782a4aa626175e5d11afa
DEFAULT_BUSINESS_ID=67ac80d40fd559c44345bd30
DEFAULT_BUSINESS_UNIT_ID=67ac811f0fd559c44345bd31To install and be asked for the database name, use foreground scripts:
npm install --foreground-scripts @realtekh/core-theme-adminWhen prompted, enter the database name to seed:
Enter MongoDB database name: ZINNEXT_DEV_API_V1The initializer reads MONGO_URI from the installing project's .env, then
creates and seeds the collections in the database name you entered.
Run manually:
npx core-theme-init-mongodbRun without prompt:
npx core-theme-init-mongodb --db ZINNEXT_DEV_API_V1You can also provide the Mongo URL directly:
npx core-theme-init-mongodb --uri mongodb://localhost:27017 --db ZINNEXT_DEV_API_V1Recommended single non-interactive install/init command. This installs the package and runs MongoDB init in the same command:
MONGO_DB_NAME=ZINNEXT_DEV_API_V1 MONGO_URI=mongodb://localhost:27017 npm install @realtekh/core-theme-adminOn Windows PowerShell:
$env:MONGO_DB_NAME="ZINNEXT_DEV_API_V1"; $env:MONGO_URI="mongodb://localhost:27017"; npm install @realtekh/core-theme-adminSkip the install-time initializer:
CORE_THEME_SKIP_DB_INIT=1 npm install @realtekh/core-theme-admin