@scenemesh/entity-engine
Version:
一个“元数据驱动 + 组件适配 + 动态关系 + 视图管线”式的实体引擎。以 **Model + View + FieldType + SuiteAdapter + DataSource** 为五大支点,统一 CRUD / 查询 / 引用管理 / 视图渲染 / 扩展注册,支持在运行期无侵入拼装出 **表单、网格、主从、看板、仪表盘、流程/树形视图** 等多形态界面。
99 lines (98 loc) • 3.4 kB
JavaScript
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