@gadmin2n/schematics 0.0.68 → 0.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/canvas.prisma +45 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +24 -23
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +93 -90
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Audit.ts +70 -0
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +3 -3
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Page.ts +70 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/PageResource.ts +70 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Resource.ts +70 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RolePages.ts +70 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RoleResource.ts +70 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/SavedQuery.ts +70 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/User.ts +70 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +95 -2
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +4 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +7 -1
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +1 -3
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +2 -2
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +6 -5
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +157 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +290 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/permission-manage.ts +184 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/prismaModels.ts +143 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/sync-resources.ts +100 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/syncDataMngtPages.ts +119 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +1 -3
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +109 -143
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +5 -2
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.spec.ts +20 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.ts +81 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.dto.ts +49 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.module.ts +11 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.spec.ts +334 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.ts +249 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +2 -1
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +2 -2
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +17 -4
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +7737 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.env +1 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.eslintrc.json +38 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.prettierignore +2 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/web/dev-shell-entry.html +49 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -2
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +137 -111
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +46 -44
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +32 -12
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +74 -23
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +9 -9
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +57 -31
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +53 -24
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +148 -72
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +190 -16
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +914 -63
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +17 -8
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +0 -10
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +969 -46
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/pagePathUtils.ts +66 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +85 -25
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/propPatcher.ts +84 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +16 -20
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +4 -4
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +13 -13
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +15 -16
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +15 -15
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -2
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +896 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +219 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +159 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +192 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +1034 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +8 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +509 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +66 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +552 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +263 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +35 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +207 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +382 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +135 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +53 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +8 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +1 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +31 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +9 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +39349 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +19 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +12 -12
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +22 -26
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +13 -9
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +4 -4
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +22 -37
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +4 -4
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +10 -10
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +1 -1
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +113 -65
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +14 -14
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +1 -1
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +2 -2
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +1 -1
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +21 -21
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +17 -13
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +26 -5
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +221 -51
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +3 -3
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +199 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +335 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +56 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +401 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +129 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +202 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/UndoConfirm.tsx +36 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/index.tsx +8 -0
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +835 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +8 -8
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +1 -1
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +120 -70
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-name-initials.ts +3 -3
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-random-color.ts +11 -11
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +16 -19
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +1 -1
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +99 -73
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +22 -27
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/page-tree.ts +74 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +95 -51
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.tsx +7 -3
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +15 -15
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +10 -10
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +8 -7
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +10 -10
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +10 -10
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +36 -27
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useECharts.tsx +144 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +4 -4
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +34 -34
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +8 -4
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +1 -1
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +55 -41
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +8 -8
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +9 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +193 -0
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +194 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +81 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +37 -37
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +23 -31
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +34 -35
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +1 -1
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +4 -6
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +41 -34
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +33 -20
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +87 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +192 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +409 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +1372 -0
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +384 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +476 -0
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +135 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/IsolatedLivePreview.tsx +101 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +236 -0
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +200 -0
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasApi.ts +92 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +25 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +875 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +126 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasI18n.ts +11 -0
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +115 -0
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ChartViewerConfigModal.tsx +217 -0
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +153 -0
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +211 -0
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +90 -0
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +87 -0
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +204 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +1153 -0
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/index.tsx +2 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +45 -0
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +45 -0
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +108 -0
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/create.tsx +105 -0
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +121 -0
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/index.tsx +4 -0
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +237 -0
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +74 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +29 -20
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +3 -3
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +7 -3
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +58 -23
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +206 -122
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +8 -4
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +1 -1
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +345 -190
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +1 -1
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +341 -340
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +2 -2
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +2 -2
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +41 -24
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +64 -36
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +2 -2
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +78 -40
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +3 -3
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +4 -4
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +19 -9
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +45 -47
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +4 -4
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +1 -1
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +121 -147
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +1 -1
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +2 -2
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +2 -2
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +25 -19
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +5 -5
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +10 -10
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +31 -26
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +76 -71
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +1 -1
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +1 -1
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +3 -3
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +1 -1
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +1 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +42 -25
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +1193 -32
  220. package/package.json +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/seedDataMngtPages.ts +0 -258
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +0 -497
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/skills.ts +0 -464
@@ -0,0 +1 @@
1
+ VITE_BACKEND_URL=http://localhost:8000
@@ -0,0 +1,38 @@
1
+ {
2
+ "root": true,
3
+ "ignorePatterns": ["node_modules/", "dist/"],
4
+ "parser": "@typescript-eslint/parser",
5
+ "parserOptions": {
6
+ "ecmaVersion": "latest",
7
+ "sourceType": "module",
8
+ "ecmaFeatures": { "jsx": true }
9
+ },
10
+ "plugins": ["@typescript-eslint", "react", "react-hooks"],
11
+ "extends": [
12
+ "eslint:recommended",
13
+ "plugin:@typescript-eslint/recommended",
14
+ "plugin:react/recommended",
15
+ "plugin:react-hooks/recommended"
16
+ ],
17
+ "settings": {
18
+ "react": { "version": "detect" }
19
+ },
20
+ "rules": {
21
+ "react/react-in-jsx-scope": "off",
22
+ "react/prop-types": "off",
23
+ "react/display-name": "off",
24
+ "@typescript-eslint/no-explicit-any": "off",
25
+ "@typescript-eslint/ban-types": "off",
26
+ "@typescript-eslint/no-empty-object-type": "off",
27
+ "@typescript-eslint/no-unsafe-function-type": "off",
28
+ "@typescript-eslint/no-wrapper-object-types": "warn",
29
+ "@typescript-eslint/no-unnecessary-type-constraint": "warn",
30
+ "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }],
31
+ "@typescript-eslint/no-unused-expressions": "warn",
32
+ "react/no-unescaped-entities": "warn",
33
+ "react/jsx-key": "warn",
34
+ "react-hooks/rules-of-hooks": "warn",
35
+ "react-hooks/exhaustive-deps": "warn",
36
+ "no-prototype-builtins": "warn"
37
+ }
38
+ }
@@ -0,0 +1,2 @@
1
+ dist/**
2
+ node_modules/**
@@ -0,0 +1,49 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Gadmin Dev</title>
7
+ <script defer src="https://knot.woa.com/chat-sdk/latest/sdk.js"></script>
8
+ <!--
9
+ Block Vite full-reload on the dev-shell page.
10
+ App code changes broadcast a "full-reload" WS message to ALL clients.
11
+ We intercept it here at the WebSocket layer — before Vite's own client
12
+ script ever sees it — so location.reload() is never called.
13
+ Dev-shell's own file changes are handled by React Fast Refresh (module
14
+ swap) and don't need a full reload.
15
+ -->
16
+ <script>
17
+ /*
18
+ * Block ALL Vite HMR messages on the dev-shell page.
19
+ * Vite's HMR WebSocket is same-origin (same host:port as the dev server).
20
+ * Third-party WS connections (e.g. Knot SDK → wss://knot.woa.com) are
21
+ * cross-origin and are left completely untouched.
22
+ * Dev-shell doesn't need HMR; keeping the socket open avoids Vite errors,
23
+ * but we silently discard every incoming message.
24
+ */
25
+ (function () {
26
+ var OrigWS = window.WebSocket;
27
+ function PatchedWS(url, protocols) {
28
+ var ws = protocols ? new OrigWS(url, protocols) : new OrigWS(url);
29
+ try {
30
+ if (new URL(url, location.href).host === location.host) {
31
+ var origAdd = ws.addEventListener.bind(ws);
32
+ ws.addEventListener = function (type, fn, opts) {
33
+ if (type !== 'message') origAdd(type, fn, opts);
34
+ };
35
+ Object.defineProperty(ws, 'onmessage', { get: function () { return null; }, set: function () {} });
36
+ }
37
+ } catch (_) {}
38
+ return ws;
39
+ }
40
+ PatchedWS.prototype = OrigWS.prototype;
41
+ window.WebSocket = PatchedWS;
42
+ })();
43
+ </script>
44
+ </head>
45
+ <body>
46
+ <div id="dev-shell-root"></div>
47
+ <script type="module" src="/src/dev-shell/index.tsx"></script>
48
+ </body>
49
+ </html>
@@ -10,7 +10,8 @@
10
10
  "@dnd-kit/modifiers": "^9.0.0",
11
11
  "@dnd-kit/sortable": "^7.0.2",
12
12
  "@dnd-kit/utilities": "^3.2.2",
13
- "@gadmin2n/react-common": "^0.0.59",
13
+ "@gadmin2n/react-common": "^0.0.61",
14
+ "@monaco-editor/react": "^4.7.0",
14
15
  "@refinedev/antd": "^5.47.0",
15
16
  "@refinedev/cli": "^2.16.51",
16
17
  "@refinedev/core": "^4.58.0",
@@ -22,6 +23,7 @@
22
23
  "antd": "^5.24.6",
23
24
  "class-validator": "^0.14.0",
24
25
  "dayjs": "^1.11.19",
26
+ "echarts": "^5.6.0",
25
27
  "i18next": "^24.2.3",
26
28
  "i18next-browser-languagedetector": "^8.0.4",
27
29
  "i18next-http-backend": "^3.0.2",
@@ -34,9 +36,11 @@
34
36
  "react": "^18.2.0",
35
37
  "react-diff-viewer": "^3.1.1",
36
38
  "react-dom": "^18.2.0",
39
+ "react-grid-layout": "^2.2.3",
37
40
  "react-i18next": "^15.4.1",
38
41
  "react-router-dom": "^6.8.1",
39
42
  "reflect-metadata": "^0.1.13",
43
+ "sucrase": "^3.35.1",
40
44
  "vanilla-jsoneditor": "^0.23.7"
41
45
  },
42
46
  "devDependencies": {
@@ -53,8 +57,14 @@
53
57
  "@types/node": "^12.20.10",
54
58
  "@types/react": "^18.0.15",
55
59
  "@types/react-dom": "^18.0.6",
60
+ "@types/react-grid-layout": "^1.3.6",
61
+ "@typescript-eslint/eslint-plugin": "^8.59.0",
62
+ "@typescript-eslint/parser": "^8.59.0",
56
63
  "@vitejs/plugin-react": "^4.3.4",
57
64
  "autoprefixer": "^10.4.24",
65
+ "eslint": "^8",
66
+ "eslint-plugin-react": "^7.37.5",
67
+ "eslint-plugin-react-hooks": "^4",
58
68
  "husky": "^8.0.0",
59
69
  "lint-staged": "^13.0.0",
60
70
  "postcss": "^8.5.6",
@@ -68,7 +78,8 @@
68
78
  "dev": "vite --port 3000",
69
79
  "build": "tsc && vite build",
70
80
  "preview": "vite preview",
71
- "format": "prettier --write \"src/**/*.{ts,tsx}\"",
81
+ "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx}\"",
82
+ "lint": "eslint \"src/**/*.{ts,tsx}\"",
72
83
  "prepare": "cd .. && husky install"
73
84
  },
74
85
  "lint-staged": {
@@ -1,111 +1,137 @@
1
- import React from "react";
2
- import { Refine } from "@refinedev/core";
3
- import {
4
- notificationProvider,
5
- ErrorComponent,
6
- } from "@refinedev/antd";
7
- import { RefineKbar, RefineKbarProvider } from "@refinedev/kbar";
8
- import routerProvider, {
9
- NavigateToResource,
10
- UnsavedChangesNotifier,
11
- } from "@refinedev/react-router-v6";
12
- import { BrowserRouter, Outlet, Route, Routes } from "react-router-dom";
13
- import { useTranslation } from "react-i18next";
14
- import { useMemo } from "react";
15
- import { Spin } from "antd";
16
- import { Layout } from "components/layout";
17
- import { ColorModeContextProvider } from "components/contexts/color-mode";
18
- import { BusinessContextProvider } from "components/contexts/business";
19
- import { AgentProvider, AgentPanel } from "components/agentPanel";
20
- import { authProvider } from "authProvider";
21
- import "@refinedev/antd/dist/reset.css";
22
- import "./styles/antd.css";
23
- import "./styles/fc.css";
24
- import "./styles/index.css";
25
- import { auditLogProvider } from "auditLogProvider";
26
- import { gadminCrudProvider as dataProvider } from "./helpers/login";
27
- import { useDynamicResources } from "hooks/useDynamicResources";
28
- import { renderRoutes } from "config/routeRegistry";
29
-
30
- const isDev = import.meta.env.DEV;
31
-
32
- // Wrapper component that only renders AgentProvider in development
33
- const DevAgentWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => {
34
- if (!isDev) return <>{children}</>;
35
- return (
36
- <AgentProvider>
37
- {children}
38
- <AgentPanel />
39
- </AgentProvider>
40
- );
41
- };
42
-
43
- function App() {
44
- const { i18n } = useTranslation();
45
-
46
- // Stable reference i18n object identity never changes, so this memo runs once.
47
- // i18n.t / i18n.language are called at invocation time, always returning fresh values.
48
- const i18nProvider = useMemo(() => ({
49
- translate: (key: string, defaultMessage?: string) => i18n.t(key, defaultMessage ?? ""),
50
- changeLocale: (lang: string) => i18n.changeLanguage(lang),
51
- getLocale: () => i18n.language,
52
- }), [i18n]);
53
-
54
- const resources = useDynamicResources();
55
-
56
- return (
57
- <BrowserRouter>
58
- <RefineKbarProvider>
59
- <BusinessContextProvider>
60
- <ColorModeContextProvider>
61
- <DevAgentWrapper>
62
- <Refine
63
- resources={resources}
64
- notificationProvider={notificationProvider}
65
- routerProvider={routerProvider}
66
- i18nProvider={i18nProvider}
67
- authProvider={authProvider}
68
- auditLogProvider={auditLogProvider(dataProvider)}
69
- dataProvider={{
70
- default: dataProvider,
71
- }}
72
- options={{
73
- syncWithLocation: true,
74
- warnWhenUnsavedChanges: true,
75
- }}
76
- >
77
- {resources.length === 0 ? (
78
- <div style={{ display: "flex", justifyContent: "center", alignItems: "center", height: "100vh" }}>
79
- <Spin size="large" />
80
- </div>
81
- ) : (
82
- <Routes>
83
- <Route
84
- path="/"
85
- element={
86
- <Layout>
87
- <Outlet />
88
- </Layout>
89
- }
90
- >
91
- <Route
92
- index
93
- element={<NavigateToResource resource={resources[0]?.name} />}
94
- />
95
- {renderRoutes()}
96
- <Route path="*" element={<ErrorComponent />} />
97
- </Route>
98
- </Routes>
99
- )}
100
- <RefineKbar />
101
- <UnsavedChangesNotifier />
102
- </Refine>
103
- </DevAgentWrapper>
104
- </ColorModeContextProvider>
105
- </BusinessContextProvider>
106
- </RefineKbarProvider>
107
- </BrowserRouter>
108
- );
109
- }
110
-
111
- export default App;
1
+ import React from 'react';
2
+ import { Refine } from '@refinedev/core';
3
+ import { notificationProvider, ErrorComponent } from '@refinedev/antd';
4
+ import { RefineKbar, RefineKbarProvider } from '@refinedev/kbar';
5
+ import routerProvider, {
6
+ NavigateToResource,
7
+ UnsavedChangesNotifier,
8
+ } from '@refinedev/react-router-v6';
9
+ import { BrowserRouter, Outlet, Route, Routes } from 'react-router-dom';
10
+ import { useTranslation } from 'react-i18next';
11
+ import { useMemo } from 'react';
12
+ import { Spin } from 'antd';
13
+ import { Layout } from 'components/layout';
14
+ import { ColorModeContextProvider } from 'components/contexts/color-mode';
15
+ import { BusinessContextProvider } from 'components/contexts/business';
16
+ import { AgentProvider, ElementInspector } from 'components/agentPanel';
17
+ import { authProvider } from 'authProvider';
18
+ import '@refinedev/antd/dist/reset.css';
19
+ import './styles/antd.css';
20
+ import './styles/fc.css';
21
+ import './styles/index.css';
22
+ import { auditLogProvider } from 'auditLogProvider';
23
+ import { gadminCrudProvider as dataProvider } from './helpers/http';
24
+ import { useDynamicResources } from 'hooks/useDynamicResources';
25
+ import { renderRoutes } from 'config/routeRegistry';
26
+
27
+ const isDev = import.meta.env.DEV;
28
+
29
+ // Wrapper component that only renders AgentProvider in development
30
+ const DevAgentWrapper: React.FC<{ children: React.ReactNode }> = ({
31
+ children,
32
+ }) => {
33
+ if (!isDev) return <>{children}</>;
34
+ return (
35
+ <AgentProvider>
36
+ {children}
37
+ <ElementInspector />
38
+ </AgentProvider>
39
+ );
40
+ };
41
+
42
+ function App() {
43
+ const { i18n } = useTranslation();
44
+
45
+ // Stable reference — i18n object identity never changes, so this memo runs once.
46
+ // i18n.t / i18n.language are called at invocation time, always returning fresh values.
47
+ const i18nProvider = useMemo(
48
+ () => ({
49
+ translate: (key: string, defaultMessage?: string) =>
50
+ i18n.t(key, defaultMessage ?? ''),
51
+ changeLocale: (lang: string) => i18n.changeLanguage(lang),
52
+ getLocale: () => i18n.language,
53
+ }),
54
+ [i18n],
55
+ );
56
+
57
+ const resources = useDynamicResources();
58
+
59
+ return (
60
+ <BrowserRouter basename={isDev ? '/app' : '/'}>
61
+ <RefineKbarProvider>
62
+ <BusinessContextProvider>
63
+ <ColorModeContextProvider>
64
+ <DevAgentWrapper>
65
+ <Refine
66
+ resources={resources}
67
+ notificationProvider={notificationProvider}
68
+ routerProvider={routerProvider}
69
+ i18nProvider={i18nProvider}
70
+ authProvider={authProvider}
71
+ auditLogProvider={auditLogProvider(dataProvider)}
72
+ dataProvider={{
73
+ default: dataProvider,
74
+ }}
75
+ options={{
76
+ syncWithLocation: true,
77
+ warnWhenUnsavedChanges: true,
78
+ }}
79
+ >
80
+ {resources.length === 0 ? (
81
+ <div
82
+ style={{
83
+ display: 'flex',
84
+ justifyContent: 'center',
85
+ alignItems: 'center',
86
+ height: '100vh',
87
+ }}
88
+ >
89
+ <Spin size="large" />
90
+ </div>
91
+ ) : (
92
+ <Routes>
93
+ <Route
94
+ path="/"
95
+ element={
96
+ <Layout>
97
+ <Outlet />
98
+ </Layout>
99
+ }
100
+ >
101
+ <Route
102
+ index
103
+ element={
104
+ <NavigateToResource
105
+ resource={(() => {
106
+ // Find first leaf resource (has list URL, not used as parent by others)
107
+ const parentNames = new Set(
108
+ resources
109
+ .map((r) => r.meta?.parent)
110
+ .filter(Boolean),
111
+ );
112
+ return (
113
+ resources.find(
114
+ (r) => r.list && !parentNames.has(r.name),
115
+ ) ?? resources.find((r) => r.list)
116
+ )?.name;
117
+ })()}
118
+ />
119
+ }
120
+ />
121
+ {renderRoutes()}
122
+ <Route path="*" element={<ErrorComponent />} />
123
+ </Route>
124
+ </Routes>
125
+ )}
126
+ <RefineKbar />
127
+ <UnsavedChangesNotifier />
128
+ </Refine>
129
+ </DevAgentWrapper>
130
+ </ColorModeContextProvider>
131
+ </BusinessContextProvider>
132
+ </RefineKbarProvider>
133
+ </BrowserRouter>
134
+ );
135
+ }
136
+
137
+ export default App;
@@ -1,25 +1,19 @@
1
- import { AuditLogProvider } from "@refinedev/core";
2
- import {
3
- IDataContextProvider,
4
- IDataMultipleContextProvider,
5
- } from "@refinedev/core/dist/interfaces";
1
+ import { AuditLogProvider, DataProvider } from '@refinedev/core';
6
2
 
7
- export function auditLogProvider(
8
- dataProvider: IDataContextProvider | IDataMultipleContextProvider
9
- ): AuditLogProvider {
3
+ export function auditLogProvider(dataProvider: DataProvider): AuditLogProvider {
10
4
  return {
11
- get: async ({ resource, meta, }) => {
5
+ get: async ({ resource, meta }) => {
12
6
  const { data } = await dataProvider.getList({
13
- resource: "audit",
7
+ resource: 'audit',
14
8
  filters: [
15
9
  {
16
- field: "resource",
17
- operator: "eq",
10
+ field: 'resource',
11
+ operator: 'eq',
18
12
  value: resource,
19
13
  },
20
14
  {
21
- field: "resourceId",
22
- operator: "eq",
15
+ field: 'resourceId',
16
+ operator: 'eq',
23
17
  value: String(meta?.id),
24
18
  },
25
19
  ],
@@ -30,54 +24,62 @@ export function auditLogProvider(
30
24
  create: (params) => {
31
25
  if (params?.meta?.ids) {
32
26
  if (
33
- ["updateMany", "createMany"].includes(params.action) &&
27
+ ['updateMany', 'createMany'].includes(params.action) &&
34
28
  params.data.length === params?.meta?.ids.length
35
29
  ) {
36
- return dataProvider.createMany({
37
- resource: "audit",
38
- variables: params.data.map((item: any, index: number) => ({
39
- action: params.action,
40
- resource: params.resource,
41
- resourceId: String(params.meta.ids[index]),
42
- data: JSON.stringify(item),
43
- previousData: Array.isArray(params.previousData)
44
- ? JSON.stringify(params.previousData[index])
45
- : JSON.stringify(params.previousData),
46
- authorName: params?.author?.name || "",
47
- authorId: String(params?.author?.id) || "",
48
- })),
30
+ const variables = params.data.map((item: any, index: number) => ({
31
+ action: params.action,
32
+ resource: params.resource,
33
+ resourceId: String(params.meta.ids[index]),
34
+ data: JSON.stringify(item),
35
+ previousData: Array.isArray(params.previousData)
36
+ ? JSON.stringify(params.previousData[index])
37
+ : JSON.stringify(params.previousData),
38
+ authorName: params?.author?.name || '',
39
+ authorId: String(params?.author?.id) || '',
40
+ }));
41
+ if (dataProvider.createMany) {
42
+ return dataProvider.createMany({ resource: 'audit', variables });
43
+ }
44
+ return dataProvider.create({
45
+ resource: 'audit',
46
+ variables: variables[0],
49
47
  });
50
48
  } else {
51
- return dataProvider.createMany({
52
- resource: "audit",
53
- variables: params.meta.ids.map((id: any) => ({
54
- action: params.action,
55
- resource: params.resource,
56
- resourceId: String(id),
57
- data: "{}",
58
- previousData: "{}",
59
- authorName: params?.author?.name || "",
60
- authorId: String(params?.author?.id) || "",
61
- })),
49
+ const variables = params.meta.ids.map((id: any) => ({
50
+ action: params.action,
51
+ resource: params.resource,
52
+ resourceId: String(id),
53
+ data: '{}',
54
+ previousData: '{}',
55
+ authorName: params?.author?.name || '',
56
+ authorId: String(params?.author?.id) || '',
57
+ }));
58
+ if (dataProvider.createMany) {
59
+ return dataProvider.createMany({ resource: 'audit', variables });
60
+ }
61
+ return dataProvider.create({
62
+ resource: 'audit',
63
+ variables: variables[0],
62
64
  });
63
65
  }
64
66
  }
65
67
  return dataProvider.create({
66
- resource: "audit",
68
+ resource: 'audit',
67
69
  variables: {
68
70
  action: params.action,
69
71
  resource: params.resource,
70
- resourceId: params.meta.id || "",
72
+ resourceId: params.meta.id || '',
71
73
  data: JSON.stringify(params.data),
72
74
  previousData: JSON.stringify(params.previousData),
73
- authorName: params?.author?.name || "",
74
- authorId: String(params?.author?.id) || "",
75
+ authorName: params?.author?.name || '',
76
+ authorId: String(params?.author?.id) || '',
75
77
  },
76
78
  });
77
79
  },
78
80
  update: async ({ id, name }) => {
79
81
  const { data } = await dataProvider.update({
80
- resource: "audit",
82
+ resource: 'audit',
81
83
  id,
82
84
  variables: { name },
83
85
  });
@@ -1,10 +1,27 @@
1
1
  import { AuthBindings } from '@refinedev/core';
2
2
  import { getApiUrl } from 'config/http';
3
- import { requestHeaders } from 'helpers';
3
+ import { requestHeaders, GAdminTokenName, checkLogin } from 'helpers';
4
+ import Cookies from 'js-cookie';
4
5
  import memoize from 'lodash.memoize';
5
6
 
6
7
  const getUserInfoOnce = memoize(async () => {
7
- const res = await fetch(`${getApiUrl()}/userinfo`, { headers: requestHeaders() });
8
+ const headers = requestHeaders();
9
+
10
+ if (import.meta.env.DEV) {
11
+ console.log('[getUserInfoOnce] Fetching /userinfo');
12
+ console.log('[getUserInfoOnce] Request headers:', headers);
13
+ console.log('[getUserInfoOnce] Hostname:', window.location.hostname);
14
+ }
15
+
16
+ const res = await fetch(`${getApiUrl()}/userinfo`, { headers });
17
+
18
+ if (!res.ok) {
19
+ console.error(`[getUserInfoOnce] Got ${res.status} response`);
20
+ if (res.status === 401) {
21
+ console.error('[getUserInfoOnce] 401 - Missing or invalid credentials');
22
+ }
23
+ }
24
+
8
25
  const user = await res.json();
9
26
  return user;
10
27
  });
@@ -100,16 +117,19 @@ export const authProvider: AuthBindings = {
100
117
  return { error };
101
118
  },
102
119
  check: async () => {
103
- return localStorage.getItem('email')
104
- ? { authenticated: true }
105
- : {
106
- authenticated: false,
107
- redirectTo: '/login',
108
- error: {
109
- message: 'Check failed',
110
- name: 'Not authenticated',
111
- },
112
- };
120
+ // checkLogin() 会处理:URL 参数中的 token 写入 cookie、cookie 检查
121
+ if (checkLogin()) {
122
+ return { authenticated: true };
123
+ }
124
+
125
+ return {
126
+ authenticated: false,
127
+ redirectTo: '/login',
128
+ error: {
129
+ message: 'Check failed',
130
+ name: 'Not authenticated',
131
+ },
132
+ };
113
133
  },
114
134
  getPermissions: async () => ['admin'],
115
135
  getIdentity: async () => {