{"version":3,"sources":["../src/modules/build-in/renderers/auth/shell-settings-menu-renderer.tsx"],"sourcesContent":["import type { IEntityNamedRenderer } from '../../../../components';\n\nimport { Menu } from '@mantine/core';\nimport { modals } from '@mantine/modals';\nimport { LogInIcon, LogOutIcon, UserCircleIcon } from 'lucide-react';\n\nimport { useEntityEngine, useEntitySession, useMasterDetailViewContainer } from '../../../../uikit';\n\nconst sellSettingsMenu: IEntityNamedRenderer = {\n    name: 'auth-shell-settings-menu-renderer',\n    slotName: 'shell-settings-menu',\n    renderer: (props) => <AuthSettingsMenu {...props} />,\n};\n\nfunction AuthSettingsMenu(props: any) {\n    const engine = useEntityEngine();\n    const { session, sessionLoading, sessionRefresh } = useEntitySession();\n    const { currentAction, performAction } = useMasterDetailViewContainer();\n\n    const handleUserView = () => {\n        performAction({\n            actionType: 'view',\n            payload: {\n                modelName: 'ee-base-user',\n                viewType: 'grid',\n            },\n            contextObject: {\n                objectId: session?.userInfo?.id || '',\n            },\n        });\n    };\n\n    const handleLoginView = () => {\n        performAction({\n            actionType: 'view',\n            payload: {\n                modelName: '__default__',\n                viewType: 'auth',\n            },\n            contextObject: {\n                objectId: session?.userInfo?.id || '',\n            },\n            target: '__root__',\n        });\n    };\n\n    async function getCsrfToken() {\n        const response = await fetch(engine.settings.getUrl('/auth/csrf') /*'/api/ee/auth/csrf'*/);\n        const { csrfToken } = await response.json();\n        return csrfToken;\n    }\n\n    const handleLogout = async () => {\n        const performLogout = async () => {\n            const csrfToken = await getCsrfToken();\n            await fetch(engine.settings.getUrl('/auth/signout'), {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application/x-www-form-urlencoded',\n                },\n                body: new URLSearchParams({ csrfToken, json: 'true' }),\n            });\n\n            await sessionRefresh();\n            window.location.reload();\n        };\n\n        modals.openConfirmModal({\n            title: '确认退出登录?',\n            centered: true,\n            children: <p>你确定要退出登录吗？</p>,\n            labels: { confirm: '退出登录', cancel: '取消' },\n            confirmProps: { color: 'red' },\n            onCancel: () => {},\n            onConfirm: async () => {\n                await performLogout();\n            },\n        });\n    };\n\n    if (!engine.settings.authenticationEnabled) {\n        return null;\n    }\n\n    if (session && session.isAuthenticated()) {\n        return (\n            <>\n                <Menu.Item leftSection={<UserCircleIcon size={14} />} onClick={handleUserView}>\n                    用户管理\n                </Menu.Item>\n                <Menu.Item leftSection={<LogOutIcon size={14} />} onClick={handleLogout}>\n                    退出登录\n                </Menu.Item>\n            </>\n        );\n    } else {\n        return (\n            <Menu.Item leftSection={<LogInIcon size={14} />} onClick={handleLoginView}>\n                登录...\n            </Menu.Item>\n        );\n    }\n\n    // return null;\n}\n\nexport default sellSettingsMenu;\n"],"mappings":";;;;;;;;;;AAEA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,WAAW,YAAY,sBAAsB;AAO7B,SA2Eb,UA3Ea,KA2Eb,YA3Ea;AAHzB,IAAM,mBAAyC;AAAA,EAC3C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU,CAAC,UAAU,oBAAC,oBAAkB,GAAG,OAAO;AACtD;AAEA,SAAS,iBAAiB,OAAY;AAClC,QAAM,SAAS,gBAAgB;AAC/B,QAAM,EAAE,SAAS,gBAAgB,eAAe,IAAI,iBAAiB;AACrE,QAAM,EAAE,eAAe,cAAc,IAAI,6BAA6B;AAEtE,QAAM,iBAAiB,MAAM;AACzB,kBAAc;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACL,WAAW;AAAA,QACX,UAAU;AAAA,MACd;AAAA,MACA,eAAe;AAAA,QACX,UAAU,SAAS,UAAU,MAAM;AAAA,MACvC;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,QAAM,kBAAkB,MAAM;AAC1B,kBAAc;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,QACL,WAAW;AAAA,QACX,UAAU;AAAA,MACd;AAAA,MACA,eAAe;AAAA,QACX,UAAU,SAAS,UAAU,MAAM;AAAA,MACvC;AAAA,MACA,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AAEA,iBAAe,eAAe;AAC1B,UAAM,WAAW,MAAM;AAAA,MAAM,OAAO,SAAS,OAAO,YAAY;AAAA;AAAA,IAAyB;AACzF,UAAM,EAAE,UAAU,IAAI,MAAM,SAAS,KAAK;AAC1C,WAAO;AAAA,EACX;AAEA,QAAM,eAAe,YAAY;AAC7B,UAAM,gBAAgB,YAAY;AAC9B,YAAM,YAAY,MAAM,aAAa;AACrC,YAAM,MAAM,OAAO,SAAS,OAAO,eAAe,GAAG;AAAA,QACjD,QAAQ;AAAA,QACR,SAAS;AAAA,UACL,gBAAgB;AAAA,QACpB;AAAA,QACA,MAAM,IAAI,gBAAgB,EAAE,WAAW,MAAM,OAAO,CAAC;AAAA,MACzD,CAAC;AAED,YAAM,eAAe;AACrB,aAAO,SAAS,OAAO;AAAA,IAC3B;AAEA,WAAO,iBAAiB;AAAA,MACpB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU,oBAAC,OAAE,0EAAU;AAAA,MACvB,QAAQ,EAAE,SAAS,4BAAQ,QAAQ,eAAK;AAAA,MACxC,cAAc,EAAE,OAAO,MAAM;AAAA,MAC7B,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,WAAW,YAAY;AACnB,cAAM,cAAc;AAAA,MACxB;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,MAAI,CAAC,OAAO,SAAS,uBAAuB;AACxC,WAAO;AAAA,EACX;AAEA,MAAI,WAAW,QAAQ,gBAAgB,GAAG;AACtC,WACI,iCACI;AAAA,0BAAC,KAAK,MAAL,EAAU,aAAa,oBAAC,kBAAe,MAAM,IAAI,GAAI,SAAS,gBAAgB,sCAE/E;AAAA,MACA,oBAAC,KAAK,MAAL,EAAU,aAAa,oBAAC,cAAW,MAAM,IAAI,GAAI,SAAS,cAAc,sCAEzE;AAAA,OACJ;AAAA,EAER,OAAO;AACH,WACI,oBAAC,KAAK,MAAL,EAAU,aAAa,oBAAC,aAAU,MAAM,IAAI,GAAI,SAAS,iBAAiB,6BAE3E;AAAA,EAER;AAGJ;AAEA,IAAO,uCAAQ;","names":[]}