UNPKG

@scenemesh/entity-engine

Version:

一个“元数据驱动 + 组件适配 + 动态关系 + 视图管线”式的实体引擎。以 **Model + View + FieldType + SuiteAdapter + DataSource** 为五大支点,统一 CRUD / 查询 / 引用管理 / 视图渲染 / 扩展注册,支持在运行期无侵入拼装出 **表单、网格、主从、看板、仪表盘、流程/树形视图** 等多形态界面。

99 lines (98 loc) 3.4 kB
import { useMasterDetailViewContainer } from "./chunk-ZMWXHGM7.mjs"; import { useEntityEngine, useEntitySession } from "./chunk-GHV562E5.mjs"; import "./chunk-JRRRNEJD.mjs"; // src/modules/build-in/renderers/auth/shell-settings-menu-renderer.tsx import { Menu } from "@mantine/core"; import { modals } from "@mantine/modals"; import { LogInIcon, LogOutIcon, UserCircleIcon } from "lucide-react"; import { Fragment, jsx, jsxs } from "react/jsx-runtime"; var sellSettingsMenu = { name: "auth-shell-settings-menu-renderer", slotName: "shell-settings-menu", renderer: (props) => /* @__PURE__ */ jsx(AuthSettingsMenu, { ...props }) }; function AuthSettingsMenu(props) { const engine = useEntityEngine(); const { session, sessionLoading, sessionRefresh } = useEntitySession(); const { currentAction, performAction } = useMasterDetailViewContainer(); const handleUserView = () => { performAction({ actionType: "view", payload: { modelName: "ee-base-user", viewType: "grid" }, contextObject: { objectId: session?.userInfo?.id || "" } }); }; const handleLoginView = () => { performAction({ actionType: "view", payload: { modelName: "__default__", viewType: "auth" }, contextObject: { objectId: session?.userInfo?.id || "" }, target: "__root__" }); }; async function getCsrfToken() { const response = await fetch( engine.settings.getUrl("/auth/csrf") /*'/api/ee/auth/csrf'*/ ); const { csrfToken } = await response.json(); return csrfToken; } const handleLogout = async () => { const performLogout = async () => { const csrfToken = await getCsrfToken(); await fetch(engine.settings.getUrl("/auth/signout"), { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ csrfToken, json: "true" }) }); await sessionRefresh(); window.location.reload(); }; modals.openConfirmModal({ title: "\u786E\u8BA4\u9000\u51FA\u767B\u5F55?", centered: true, children: /* @__PURE__ */ jsx("p", { children: "\u4F60\u786E\u5B9A\u8981\u9000\u51FA\u767B\u5F55\u5417\uFF1F" }), labels: { confirm: "\u9000\u51FA\u767B\u5F55", cancel: "\u53D6\u6D88" }, confirmProps: { color: "red" }, onCancel: () => { }, onConfirm: async () => { await performLogout(); } }); }; if (!engine.settings.authenticationEnabled) { return null; } if (session && session.isAuthenticated()) { return /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx(Menu.Item, { leftSection: /* @__PURE__ */ jsx(UserCircleIcon, { size: 14 }), onClick: handleUserView, children: "\u7528\u6237\u7BA1\u7406" }), /* @__PURE__ */ jsx(Menu.Item, { leftSection: /* @__PURE__ */ jsx(LogOutIcon, { size: 14 }), onClick: handleLogout, children: "\u9000\u51FA\u767B\u5F55" }) ] }); } else { return /* @__PURE__ */ jsx(Menu.Item, { leftSection: /* @__PURE__ */ jsx(LogInIcon, { size: 14 }), onClick: handleLoginView, children: "\u767B\u5F55..." }); } } var shell_settings_menu_renderer_default = sellSettingsMenu; export { shell_settings_menu_renderer_default as default }; //# sourceMappingURL=shell-settings-menu-renderer-JVLHEA26.mjs.map