@gadmin2n/schematics 0.0.71 → 0.0.72
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.
- package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +21 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +9 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/package-lock.json +15579 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -3
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +16 -4
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +2 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.controller.ts +106 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.module.ts +10 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.service.ts +569 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +1159 -481
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/.env +1 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +1 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +130 -3
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +5 -5
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +2 -2
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +15 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +55 -43
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +1 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +2 -4
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +2 -4
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +536 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +671 -0
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +9 -60
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +2 -2
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +3 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +11 -11
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +12 -0
- package/package.json +1 -1
- package/dist/lib/application/files/gadmin2-game-angle-demo/web/.npmrc +0 -1
- package/src/lib/application/application.schema.d.ts +0 -59
- package/src/lib/application/files/gadmin2-game-angle-demo/.dockerignore +0 -33
- package/src/lib/application/files/gadmin2-game-angle-demo/.gitignore +0 -46
- package/src/lib/application/files/gadmin2-game-angle-demo/.husky/_/.gitignore +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/.husky/_/husky.sh +0 -36
- package/src/lib/application/files/gadmin2-game-angle-demo/.husky/pre-commit +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/Dockerfile +0 -63
- package/src/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/.types.d.ts +0 -143
- package/src/lib/application/files/gadmin2-game-angle-demo/config/prisma/canvas.prisma +0 -45
- package/src/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +0 -34
- package/src/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +0 -173
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Audit.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Game.ts +0 -58
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/ITActivityDay.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Log.ts +0 -56
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Page.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/PageResource.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Resource.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Role.ts +0 -58
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/RolePages.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/RoleResource.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/SavedQuery.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/User.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/_common.ts +0 -16
- package/src/lib/application/files/gadmin2-game-angle-demo/readme.md +0 -142
- package/src/lib/application/files/gadmin2-game-angle-demo/server/.env +0 -31
- package/src/lib/application/files/gadmin2-game-angle-demo/server/.env.local +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +0 -28
- package/src/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +0 -7
- package/src/lib/application/files/gadmin2-game-angle-demo/server/.prettierrc +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/server/README.md +0 -55
- package/src/lib/application/files/gadmin2-game-angle-demo/server/config/ac.config.ts +0 -24
- package/src/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +0 -58
- package/src/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +0 -25
- package/src/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +0 -1232
- package/src/lib/application/files/gadmin2-game-angle-demo/server/package.json +0 -143
- package/src/lib/application/files/gadmin2-game-angle-demo/server/prisma/.generator.prisma +0 -34
- package/src/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +0 -16
- package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +0 -157
- package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +0 -290
- package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/permission-manage.ts +0 -184
- package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/prismaModels.ts +0 -143
- package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/sync-resources.ts +0 -100
- package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/syncDataMngtPages.ts +0 -119
- package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/games.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +0 -21
- package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +0 -244
- package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/users.ts +0 -7
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/alias.config.ts +0 -7
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.spec.ts +0 -22
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.ts +0 -192
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +0 -91
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.service.ts +0 -189
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/auth.guard.ts +0 -154
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/http-cache.interceptor.ts +0 -21
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/logger.ts +0 -19
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/roles.guard.ts +0 -47
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/safe-log.util.ts +0 -176
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/taihu.ts +0 -175
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/tracing.ts +0 -174
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/trim.pipe.ts +0 -51
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/utils.ts +0 -145
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/woaAuth.ts +0 -95
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +0 -132
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.controller.ts +0 -190
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.service.spec.ts +0 -338
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.service.ts +0 -83
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.ts +0 -81
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.dto.ts +0 -49
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.module.ts +0 -11
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.spec.ts +0 -334
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.ts +0 -249
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.controller.ts +0 -188
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.service.ts +0 -83
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.controller.ts +0 -250
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +0 -1051
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.controller.ts +0 -196
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.module.ts +0 -13
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.service.ts +0 -219
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.controller.ts +0 -196
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.service.ts +0 -199
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.controller.ts +0 -210
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.module.ts +0 -12
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +0 -862
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/roles-refresher.service.ts +0 -133
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.controller.ts +0 -196
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.service.ts +0 -201
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.controller.ts +0 -196
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.service.ts +0 -216
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.controller.spec.ts +0 -20
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.controller.ts +0 -198
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.module.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.service.spec.ts +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.service.ts +0 -104
- package/src/lib/application/files/gadmin2-game-angle-demo/server/start-prod.sh +0 -130
- package/src/lib/application/files/gadmin2-game-angle-demo/server/test/app.e2e-spec.ts +0 -24
- package/src/lib/application/files/gadmin2-game-angle-demo/server/test/jest-e2e.json +0 -9
- package/src/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.json +0 -36
- package/src/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +0 -7737
- package/src/lib/application/files/gadmin2-game-angle-demo/web/.env +0 -2
- package/src/lib/application/files/gadmin2-game-angle-demo/web/.eslintrc.json +0 -38
- package/src/lib/application/files/gadmin2-game-angle-demo/web/.npmrc +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/.prettierignore +0 -2
- package/src/lib/application/files/gadmin2-game-angle-demo/web/.prettierrc +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/web/README.MD +0 -48
- package/src/lib/application/files/gadmin2-game-angle-demo/web/dev-shell-entry.html +0 -49
- package/src/lib/application/files/gadmin2-game-angle-demo/web/index.html +0 -19
- package/src/lib/application/files/gadmin2-game-angle-demo/web/package.json +0 -92
- package/src/lib/application/files/gadmin2-game-angle-demo/web/postcss.config.cjs +0 -6
- package/src/lib/application/files/gadmin2-game-angle-demo/web/public/favicon.ico +0 -0
- package/src/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/en.svg +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/zh_CN.svg +0 -11
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +0 -137
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +0 -89
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +0 -144
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -287
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +0 -56
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +0 -318
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +0 -323
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +0 -495
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.css +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.jsx +0 -53
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +0 -375
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +0 -1133
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +0 -70
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +0 -1034
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/pagePathUtils.ts +0 -66
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +0 -135
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/propPatcher.ts +0 -84
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +0 -58
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +0 -96
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +0 -72
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +0 -104
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +0 -2
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +0 -896
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +0 -219
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +0 -159
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +0 -192
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +0 -1034
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +0 -509
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +0 -66
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +0 -552
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +0 -263
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +0 -35
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +0 -207
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +0 -382
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +0 -135
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +0 -53
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +0 -31
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +0 -9
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +0 -39349
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +0 -19
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +0 -65
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +0 -54
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +0 -42
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +0 -106
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +0 -32
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +0 -19
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +0 -431
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +0 -61
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +0 -5
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +0 -21
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +0 -44
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +0 -78
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +0 -49
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +0 -428
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +0 -16
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +0 -199
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +0 -335
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +0 -56
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +0 -401
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +0 -129
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +0 -202
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/UndoConfirm.tsx +0 -36
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/index.tsx +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +0 -835
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +0 -13
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +0 -471
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-name-initials.ts +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-random-color.ts +0 -27
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +0 -84
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +0 -491
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +0 -82
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/page-tree.ts +0 -74
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +0 -226
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.tsx +0 -9
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/index.ts +0 -7
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +0 -138
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +0 -191
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +0 -153
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +0 -193
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +0 -182
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +0 -220
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useECharts.tsx +0 -144
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +0 -33
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +0 -303
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +0 -34
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +0 -38
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +0 -353
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +0 -23
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +0 -27
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +0 -321
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +0 -324
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/meta.json +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +0 -81
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +0 -3
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +0 -134
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +0 -105
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +0 -121
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +0 -220
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +0 -74
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +0 -87
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +0 -192
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +0 -409
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +0 -1372
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +0 -384
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +0 -476
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +0 -137
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/IsolatedLivePreview.tsx +0 -101
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +0 -236
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +0 -200
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasApi.ts +0 -92
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +0 -25
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +0 -875
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +0 -126
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasI18n.ts +0 -11
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +0 -115
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ChartViewerConfigModal.tsx +0 -217
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +0 -153
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +0 -211
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +0 -90
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +0 -87
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +0 -204
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +0 -1153
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/index.tsx +0 -2
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +0 -45
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +0 -45
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +0 -108
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/create.tsx +0 -105
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +0 -121
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/index.tsx +0 -4
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +0 -237
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +0 -74
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +0 -177
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +0 -42
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +0 -46
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +0 -136
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +0 -815
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +0 -40
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +0 -1370
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/queries.ts +0 -17
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +0 -45
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +0 -1090
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +0 -25
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +0 -28
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +0 -177
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +0 -230
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +0 -2
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +0 -250
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/queries.ts +0 -10
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/types.ts +0 -9
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +0 -30
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +0 -47
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +0 -66
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +0 -300
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +0 -35
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +0 -405
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/queries.ts +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +0 -8
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +0 -17
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +0 -19
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +0 -194
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +0 -5
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +0 -48
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +0 -145
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +0 -377
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/queries.ts +0 -14
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +0 -5
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +0 -132
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +0 -58
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +0 -128
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +0 -18
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +0 -21
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +0 -3
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +0 -7
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +0 -1
- package/src/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +0 -13
- package/src/lib/application/files/gadmin2-game-angle-demo/web/tsconfig.json +0 -28
- package/src/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +0 -48
- package/src/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +0 -9482
- package/src/lib/class/class.schema.d.ts +0 -32
- package/src/lib/class/files/js/__name__.js +0 -1
- package/src/lib/class/files/js/__name__.spec.js +0 -7
- package/src/lib/class/files/ts/__name__.spec.ts +0 -7
- package/src/lib/class/files/ts/__name__.ts +0 -1
- package/src/lib/client-app/angular/angular.schema.d.ts +0 -32
- package/src/lib/client-app/angular/files/angular.constants.ts +0 -4
- package/src/lib/client-app/angular/files/angular.module.ts +0 -41
- package/src/lib/client-app/angular/files/angular.providers.ts +0 -27
- package/src/lib/client-app/angular/files/angular.utils.ts +0 -19
- package/src/lib/client-app/angular/files/interfaces/angular-options.interface.ts +0 -87
- package/src/lib/client-app/angular/files/loaders/abstract.loader.ts +0 -16
- package/src/lib/client-app/angular/files/loaders/express.loader.ts +0 -25
- package/src/lib/client-app/angular/files/loaders/fastify.loader.ts +0 -34
- package/src/lib/client-app/angular/files/loaders/noop.loader.ts +0 -12
- package/src/lib/configuration/configuration.schema.d.ts +0 -18
- package/src/lib/configuration/files/js/nest-cli.json +0 -6
- package/src/lib/configuration/files/ts/nest-cli.json +0 -5
- package/src/lib/controller/controller.schema.d.ts +0 -45
- package/src/lib/controller/files/js/__name__.controller.js +0 -4
- package/src/lib/controller/files/js/__name__.controller.spec.js +0 -18
- package/src/lib/controller/files/ts/__name__.controller.spec.ts +0 -18
- package/src/lib/controller/files/ts/__name__.controller.ts +0 -137
- package/src/lib/decorator/decorator.schema.d.ts +0 -24
- package/src/lib/decorator/files/js/__name__.decorator.js +0 -3
- package/src/lib/decorator/files/ts/__name__.decorator.ts +0 -3
- package/src/lib/filter/files/js/__name__.filter.js +0 -6
- package/src/lib/filter/files/js/__name__.filter.spec.js +0 -7
- package/src/lib/filter/files/ts/__name__.filter.spec.ts +0 -7
- package/src/lib/filter/files/ts/__name__.filter.ts +0 -6
- package/src/lib/filter/filter.schema.d.ts +0 -28
- package/src/lib/gateway/files/js/__name__.gateway.js +0 -9
- package/src/lib/gateway/files/js/__name__.gateway.spec.js +0 -18
- package/src/lib/gateway/files/ts/__name__.gateway.spec.ts +0 -18
- package/src/lib/gateway/files/ts/__name__.gateway.ts +0 -9
- package/src/lib/gateway/gateway.schema.d.ts +0 -36
- package/src/lib/guard/files/js/__name__.guard.js +0 -8
- package/src/lib/guard/files/js/__name__.guard.spec.js +0 -7
- package/src/lib/guard/files/ts/__name__.guard.spec.ts +0 -7
- package/src/lib/guard/files/ts/__name__.guard.ts +0 -11
- package/src/lib/guard/guard.schema.d.ts +0 -28
- package/src/lib/interceptor/files/js/__name__.interceptor.js +0 -8
- package/src/lib/interceptor/files/js/__name__.interceptor.spec.js +0 -7
- package/src/lib/interceptor/files/ts/default/__name__.interceptor.spec.ts +0 -7
- package/src/lib/interceptor/files/ts/default/__name__.interceptor.ts +0 -9
- package/src/lib/interceptor/files/ts/generated/__name__.interceptor.spec.ts +0 -7
- package/src/lib/interceptor/files/ts/generated/__name__.interceptor.ts +0 -13
- package/src/lib/interceptor/interceptor.schema.d.ts +0 -35
- package/src/lib/interface/files/__name__.interface.ts +0 -1
- package/src/lib/interface/interface.schema.d.ts +0 -20
- package/src/lib/library/files/js/.babelrc +0 -4
- package/src/lib/library/files/js/jsconfig.json +0 -9
- package/src/lib/library/files/js/src/__name__.module.js +0 -8
- package/src/lib/library/files/js/src/__name__.service.js +0 -4
- package/src/lib/library/files/js/src/__name__.service.spec.js +0 -18
- package/src/lib/library/files/js/src/index.js +0 -2
- package/src/lib/library/files/ts/src/__name__.module.ts +0 -8
- package/src/lib/library/files/ts/src/__name__.service.spec.ts +0 -18
- package/src/lib/library/files/ts/src/__name__.service.ts +0 -4
- package/src/lib/library/files/ts/src/index.ts +0 -2
- package/src/lib/library/files/ts/tsconfig.lib.json +0 -9
- package/src/lib/library/library.schema.d.ts +0 -24
- package/src/lib/middleware/files/js/__name__.middleware.js +0 -8
- package/src/lib/middleware/files/js/__name__.middleware.spec.js +0 -7
- package/src/lib/middleware/files/ts/__name__.middleware.spec.ts +0 -7
- package/src/lib/middleware/files/ts/__name__.middleware.ts +0 -8
- package/src/lib/middleware/middleware.schema.d.ts +0 -28
- package/src/lib/module/files/js/__name__.module.js +0 -4
- package/src/lib/module/files/ts/__name__.module.ts +0 -4
- package/src/lib/module/module.schema.d.ts +0 -40
- package/src/lib/pipe/files/js/__name__.pipe.js +0 -8
- package/src/lib/pipe/files/js/__name__.pipe.spec.js +0 -7
- package/src/lib/pipe/files/ts/__name__.pipe.spec.ts +0 -7
- package/src/lib/pipe/files/ts/__name__.pipe.ts +0 -8
- package/src/lib/pipe/pipe.schema.d.ts +0 -28
- package/src/lib/prisma-resource/files/ts/__name__.controller.spec.ts +0 -20
- package/src/lib/prisma-resource/files/ts/__name__.controller.ts +0 -63
- package/src/lib/prisma-resource/files/ts/__name__.module.ts +0 -9
- package/src/lib/prisma-resource/files/ts/__name__.service.spec.ts +0 -18
- package/src/lib/prisma-resource/files/ts/__name__.service.ts +0 -28
- package/src/lib/prisma-resource/files/ts/dto/create-__name@singular__.dto.ts +0 -1
- package/src/lib/prisma-resource/files/ts/dto/create-__name@singular__.input.ts +0 -7
- package/src/lib/prisma-resource/files/ts/dto/update-__name@singular__.dto.ts +0 -6
- package/src/lib/prisma-resource/files/ts/dto/update-__name@singular__.input.ts +0 -13
- package/src/lib/prisma-resource/files/ts/entities/__name@singular@ent__.ts +0 -7
- package/src/lib/prisma-resource/prisma-resource.schema.d.ts +0 -57
- package/src/lib/provider/files/js/__name__.js +0 -4
- package/src/lib/provider/files/js/__name__.spec.js +0 -18
- package/src/lib/provider/files/ts/__name__.spec.ts +0 -18
- package/src/lib/provider/files/ts/__name__.ts +0 -4
- package/src/lib/provider/provider.schema.d.ts +0 -48
- package/src/lib/resolver/files/js/__name__.resolver.js +0 -4
- package/src/lib/resolver/files/js/__name__.resolver.spec.js +0 -18
- package/src/lib/resolver/files/ts/__name__.resolver.spec.ts +0 -18
- package/src/lib/resolver/files/ts/__name__.resolver.ts +0 -4
- package/src/lib/resolver/resolver.schema.d.ts +0 -36
- package/src/lib/resource/files/ts/__name__.controller.spec.ts +0 -20
- package/src/lib/resource/files/ts/__name__.controller.ts +0 -63
- package/src/lib/resource/files/ts/__name__.gateway.spec.ts +0 -19
- package/src/lib/resource/files/ts/__name__.gateway.ts +0 -34
- package/src/lib/resource/files/ts/__name__.graphql +0 -24
- package/src/lib/resource/files/ts/__name__.module.ts +0 -9
- package/src/lib/resource/files/ts/__name__.resolver.spec.ts +0 -19
- package/src/lib/resource/files/ts/__name__.resolver.ts +0 -60
- package/src/lib/resource/files/ts/__name__.service.spec.ts +0 -18
- package/src/lib/resource/files/ts/__name__.service.ts +0 -28
- package/src/lib/resource/files/ts/dto/create-__name@singular__.dto.ts +0 -1
- package/src/lib/resource/files/ts/dto/create-__name@singular__.input.ts +0 -7
- package/src/lib/resource/files/ts/dto/update-__name@singular__.dto.ts +0 -6
- package/src/lib/resource/files/ts/dto/update-__name@singular__.input.ts +0 -13
- package/src/lib/resource/files/ts/entities/__name@singular@ent__.ts +0 -7
- package/src/lib/resource/resource.schema.d.ts +0 -57
- package/src/lib/service/files/js/__name__.service.js +0 -4
- package/src/lib/service/files/js/__name__.service.spec.js +0 -18
- package/src/lib/service/files/ts/__name__.service.spec.ts +0 -18
- package/src/lib/service/files/ts/__name__.service.ts +0 -4
- package/src/lib/service/service.schema.d.ts +0 -44
- package/src/lib/sub-app/files/js/.babelrc +0 -4
- package/src/lib/sub-app/files/js/index.js +0 -2
- package/src/lib/sub-app/files/js/jsconfig.json +0 -10
- package/src/lib/sub-app/files/js/src/app.controller.js +0 -15
- package/src/lib/sub-app/files/js/src/app.controller.spec.js +0 -22
- package/src/lib/sub-app/files/js/src/app.module.js +0 -10
- package/src/lib/sub-app/files/js/src/app.service.js +0 -8
- package/src/lib/sub-app/files/js/src/main.js +0 -8
- package/src/lib/sub-app/files/js/test/app.e2e-spec.js +0 -23
- package/src/lib/sub-app/files/js/test/jest-e2e.json +0 -5
- package/src/lib/sub-app/files/ts/src/__name__.controller.spec.ts +0 -22
- package/src/lib/sub-app/files/ts/src/__name__.controller.ts +0 -12
- package/src/lib/sub-app/files/ts/src/__name__.module.ts +0 -10
- package/src/lib/sub-app/files/ts/src/__name__.service.ts +0 -8
- package/src/lib/sub-app/files/ts/src/main.ts +0 -8
- package/src/lib/sub-app/files/ts/test/app.e2e-spec.ts +0 -24
- package/src/lib/sub-app/files/ts/test/jest-e2e.json +0 -9
- package/src/lib/sub-app/files/ts/tsconfig.app.json +0 -9
- package/src/lib/sub-app/sub-app.schema.d.ts +0 -21
- package/src/lib/sub-app/workspace/js/.babelrc +0 -4
- package/src/lib/sub-app/workspace/js/index.js +0 -2
- package/src/lib/sub-app/workspace/js/jsconfig.json +0 -10
- package/src/lib/sub-app/workspace/ts/tsconfig.app.json +0 -9
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@nestjs/common';
|
|
2
|
-
import { ConfigService } from '@nestjs/config';
|
|
3
|
-
import * as crypto from 'crypto';
|
|
4
|
-
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import { Logger } from 'winston';
|
|
7
|
-
import TaihuId, { GAdminTokenName } from './lib/taihu';
|
|
8
|
-
|
|
9
|
-
@Injectable()
|
|
10
|
-
export class AppService {
|
|
11
|
-
private readonly externalPageSecretKey: string;
|
|
12
|
-
private readonly externalPageExpireSeconds: number;
|
|
13
|
-
|
|
14
|
-
constructor(
|
|
15
|
-
private readonly config: ConfigService,
|
|
16
|
-
@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
|
|
17
|
-
) {
|
|
18
|
-
this.logger = this.logger.child({
|
|
19
|
-
file: path.basename(__filename),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
// External Page 配置
|
|
23
|
-
this.externalPageSecretKey =
|
|
24
|
-
this.config.get<string>('EXTERNAL_PAGE_SECRET') ||
|
|
25
|
-
process.env.EXTERNAL_PAGE_SECRET ||
|
|
26
|
-
'change-this-secret-in-production';
|
|
27
|
-
|
|
28
|
-
this.externalPageExpireSeconds =
|
|
29
|
-
this.config.get<number>('EXTERNAL_PAGE_EXPIRE_SECONDS') || 300;
|
|
30
|
-
|
|
31
|
-
if (this.externalPageSecretKey === 'change-this-secret-in-production') {
|
|
32
|
-
this.logger.warn(
|
|
33
|
-
'external_page_secret_warning - 使用默认密钥,请在生产环境配置 EXTERNAL_PAGE_SECRET 环境变量',
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getHello(): string {
|
|
39
|
-
return 'Hello World!';
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async loginCallback(req, res) {
|
|
43
|
-
const { code, state } = req.query;
|
|
44
|
-
|
|
45
|
-
const tokenInfo = await TaihuId.getToken(code);
|
|
46
|
-
const userInfo = await TaihuId.getUserInfo(tokenInfo.access_token);
|
|
47
|
-
|
|
48
|
-
const expiresIn = 7 * 24 * 3600;
|
|
49
|
-
const { user_id, sub, name, email } = userInfo;
|
|
50
|
-
const payload = { user_id, sub, name, email };
|
|
51
|
-
const token = await TaihuId.sign(payload, expiresIn);
|
|
52
|
-
|
|
53
|
-
// append token param for local development
|
|
54
|
-
const redirectUrl = new URL(state);
|
|
55
|
-
const selfUrl = new URL(process.env.TAIHU_CALLBACK || '');
|
|
56
|
-
if (redirectUrl.hostname !== selfUrl.hostname) {
|
|
57
|
-
redirectUrl.searchParams.set(GAdminTokenName, token);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
res.cookie(GAdminTokenName, token, {
|
|
61
|
-
maxAge: expiresIn * 1000,
|
|
62
|
-
httpOnly: false,
|
|
63
|
-
});
|
|
64
|
-
res.status(302).redirect(redirectUrl.toString());
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
login(req, res) {
|
|
68
|
-
const { redirect_url, ui_locales = 'zh-CN' } = req.query;
|
|
69
|
-
|
|
70
|
-
// TODO: verify redirect_url domain
|
|
71
|
-
|
|
72
|
-
const authorizeUrl = TaihuId.authorize(redirect_url, ui_locales);
|
|
73
|
-
res.status(302).redirect(authorizeUrl);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
logout(req, res) {
|
|
77
|
-
const { redirect_url } = req.query;
|
|
78
|
-
|
|
79
|
-
const logoutUrl = TaihuId.logout(redirect_url);
|
|
80
|
-
res.cookie(GAdminTokenName, '', { maxAge: 0 });
|
|
81
|
-
res.status(302).redirect(logoutUrl);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// ============ External Page 功能 ============
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* 生成带签名的外部页面 URL
|
|
88
|
-
*/
|
|
89
|
-
generateExternalPageSignedUrl(
|
|
90
|
-
domain: string,
|
|
91
|
-
pageCode: string,
|
|
92
|
-
userid: string,
|
|
93
|
-
): { url: string; expiresIn: number } {
|
|
94
|
-
const timestamp = Date.now();
|
|
95
|
-
const data = `${domain}:${pageCode}:${userid}:${timestamp}`;
|
|
96
|
-
|
|
97
|
-
const signature = crypto
|
|
98
|
-
.createHmac('sha256', this.externalPageSecretKey)
|
|
99
|
-
.update(data)
|
|
100
|
-
.digest('hex');
|
|
101
|
-
|
|
102
|
-
let pagePath: string;
|
|
103
|
-
let pageQuery: string;
|
|
104
|
-
|
|
105
|
-
const queryIndex = pageCode.indexOf('?');
|
|
106
|
-
if (queryIndex !== -1) {
|
|
107
|
-
pagePath = pageCode.substring(0, queryIndex);
|
|
108
|
-
pageQuery = pageCode.substring(queryIndex + 1);
|
|
109
|
-
} else {
|
|
110
|
-
pagePath = pageCode;
|
|
111
|
-
pageQuery = '';
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const signParams = `_t=${timestamp}&_s=${signature}&_u=${encodeURIComponent(
|
|
115
|
-
userid,
|
|
116
|
-
)}`;
|
|
117
|
-
|
|
118
|
-
let url: string;
|
|
119
|
-
if (pageQuery) {
|
|
120
|
-
url = `https://oit-erp-gtdr.woa.com/${domain}/${pagePath}?${pageQuery}&${signParams}`;
|
|
121
|
-
} else {
|
|
122
|
-
url = `https://oit-erp-gtdr.woa.com/${domain}/${pagePath}?${signParams}`;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
this.logger.info(
|
|
126
|
-
`external_page_sign_url - 生成签名URL - domain: ${domain}, pageCode: ${pageCode}, userid: ${userid}`,
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
return {
|
|
130
|
-
url,
|
|
131
|
-
expiresIn: this.externalPageExpireSeconds,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* 验证外部页面签名
|
|
137
|
-
*/
|
|
138
|
-
verifyExternalPageSignature(
|
|
139
|
-
domain: string,
|
|
140
|
-
pageCode: string,
|
|
141
|
-
userid: string,
|
|
142
|
-
timestamp: string,
|
|
143
|
-
signature: string,
|
|
144
|
-
): { valid: boolean; reason?: string } {
|
|
145
|
-
const ts = parseInt(timestamp, 10);
|
|
146
|
-
if (isNaN(ts)) {
|
|
147
|
-
return { valid: false, reason: 'invalid timestamp format' };
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const now = Date.now();
|
|
151
|
-
const age = now - ts;
|
|
152
|
-
|
|
153
|
-
if (age < -5000) {
|
|
154
|
-
return { valid: false, reason: 'timestamp in future' };
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (age > this.externalPageExpireSeconds * 1000) {
|
|
158
|
-
return { valid: false, reason: 'signature expired' };
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const data = `${domain}:${pageCode}:${userid}:${timestamp}`;
|
|
162
|
-
const expectedSignature = crypto
|
|
163
|
-
.createHmac('sha256', this.externalPageSecretKey)
|
|
164
|
-
.update(data)
|
|
165
|
-
.digest('hex');
|
|
166
|
-
|
|
167
|
-
if (signature.length !== expectedSignature.length) {
|
|
168
|
-
return { valid: false, reason: 'invalid signature' };
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
try {
|
|
172
|
-
const signatureBuffer = Buffer.from(signature, 'hex');
|
|
173
|
-
const expectedBuffer = Buffer.from(expectedSignature, 'hex');
|
|
174
|
-
|
|
175
|
-
if (
|
|
176
|
-
!crypto.timingSafeEqual(
|
|
177
|
-
new Uint8Array(signatureBuffer),
|
|
178
|
-
new Uint8Array(expectedBuffer),
|
|
179
|
-
)
|
|
180
|
-
) {
|
|
181
|
-
return { valid: false, reason: 'invalid signature' };
|
|
182
|
-
}
|
|
183
|
-
} catch {
|
|
184
|
-
return { valid: false, reason: 'invalid signature format' };
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return { valid: true };
|
|
188
|
-
}
|
|
189
|
-
}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
// https://iwiki.woa.com/pages/viewpage.action?pageId=4007728669
|
|
2
|
-
// node version >= v12.22
|
|
3
|
-
// npm i jose@4.14.4
|
|
4
|
-
import { UserType } from '@gadmin2n/nest-common';
|
|
5
|
-
import {
|
|
6
|
-
CanActivate,
|
|
7
|
-
ExecutionContext,
|
|
8
|
-
Injectable,
|
|
9
|
-
SetMetadata,
|
|
10
|
-
UnauthorizedException,
|
|
11
|
-
} from '@nestjs/common';
|
|
12
|
-
import { Reflector } from '@nestjs/core';
|
|
13
|
-
import { ApiSecurity } from '@nestjs/swagger';
|
|
14
|
-
import { DECORATORS_PREFIX } from '@nestjs/swagger/dist/constants';
|
|
15
|
-
import * as path from 'path';
|
|
16
|
-
import { UserService } from '../modules/user/user.service';
|
|
17
|
-
import { loggerInstance } from './logger';
|
|
18
|
-
import TaiHuId, { GAdminTokenName } from './taihu';
|
|
19
|
-
import { getIdentity as getWoaIdentity } from './woaAuth';
|
|
20
|
-
|
|
21
|
-
const logger = loggerInstance.child({
|
|
22
|
-
file: path.basename(__filename),
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
const API_SECURITY = `${DECORATORS_PREFIX}/apiSecurity`;
|
|
26
|
-
export function ApiKeyAuth(name = 'X-API-KEY') {
|
|
27
|
-
return ApiSecurity(name);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export const AllowUnauthorizedRequest = () =>
|
|
31
|
-
SetMetadata('allowUnauthorizedRequest', true);
|
|
32
|
-
|
|
33
|
-
export const AllowApiKeyRequest = () => SetMetadata('allowApiKeyRequest', true);
|
|
34
|
-
|
|
35
|
-
async function getIdentity(headers, cookies): Promise<UserType> {
|
|
36
|
-
// 先验证woa登录态 https://iwiki.woa.com/p/4007728669#nodejs-%E7%A4%BA%E4%BE%8B
|
|
37
|
-
try {
|
|
38
|
-
const { staffid, staffname } = await getWoaIdentity(
|
|
39
|
-
headers,
|
|
40
|
-
process.env.TAIHU_APP_TOKEN || '',
|
|
41
|
-
);
|
|
42
|
-
if (staffid) {
|
|
43
|
-
logger.info(
|
|
44
|
-
`woa_auth_success - 用户ID: ${staffid}, 用户名: ${staffname}`,
|
|
45
|
-
);
|
|
46
|
-
return { userid: staffid, username: staffname };
|
|
47
|
-
}
|
|
48
|
-
} catch (e) {
|
|
49
|
-
logger.warn(`woa_auth_failed - WOA认证失败: ${e.message}`);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// 再验证taihu登录态 https://iwiki.woa.com/p/4008986665
|
|
53
|
-
const token = headers[GAdminTokenName] || cookies[GAdminTokenName];
|
|
54
|
-
const userInfo = await TaiHuId.verify(token);
|
|
55
|
-
|
|
56
|
-
logger.info(
|
|
57
|
-
`taihu_auth_success - Taihu认证成功 - 用户ID: ${userInfo.sub}, Token长度: ${
|
|
58
|
-
token ? token.length : 0
|
|
59
|
-
}`,
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
return { userid: userInfo.sub, username: userInfo.sub };
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@Injectable()
|
|
66
|
-
export default class AuthGuard implements CanActivate {
|
|
67
|
-
constructor(private reflector: Reflector, private userService: UserService) {}
|
|
68
|
-
|
|
69
|
-
private async getApikeyIdentity(req): Promise<UserType> {
|
|
70
|
-
const apiKey = req.headers['x-api-key'] ?? req.query.api_key;
|
|
71
|
-
|
|
72
|
-
if (apiKey) {
|
|
73
|
-
const record = await this.userService.findByApiKey(apiKey);
|
|
74
|
-
if (record && record.isActive && record.isApiKey) {
|
|
75
|
-
logger.info(
|
|
76
|
-
`apikey_auth_success - API Key认证成功 - 用户ID: ${
|
|
77
|
-
record.userid
|
|
78
|
-
}, Key前缀: ${apiKey.substring(0, 8)}...`,
|
|
79
|
-
);
|
|
80
|
-
return {
|
|
81
|
-
userid: record.userid,
|
|
82
|
-
username: record.username || record.userid,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
logger.warn(
|
|
88
|
-
`apikey_auth_failed - API Key认证失败 - 提供的Key: ${
|
|
89
|
-
apiKey ? `${apiKey.substring(0, 8)}...` : 'none'
|
|
90
|
-
}`,
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
throw new UnauthorizedException(`error apikey: ${apiKey}`);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
canActivate(context: ExecutionContext): boolean | Promise<boolean> {
|
|
97
|
-
const request = context.switchToHttp().getRequest();
|
|
98
|
-
const handler = context.getHandler();
|
|
99
|
-
const controller = context.getClass();
|
|
100
|
-
|
|
101
|
-
const allowUnauthorizedRequest = this.reflector.get<boolean>(
|
|
102
|
-
'allowUnauthorizedRequest',
|
|
103
|
-
handler,
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
if (allowUnauthorizedRequest) {
|
|
107
|
-
logger.info(
|
|
108
|
-
`auth_bypassed - 认证被绕过 - 端点: ${request.method} ${request.url}, 控制器: ${controller.name}`,
|
|
109
|
-
);
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const allowApiKeyRequest =
|
|
114
|
-
this.reflector.get<boolean>(API_SECURITY, handler) ||
|
|
115
|
-
this.reflector.get<boolean>('allowApiKeyRequest', handler);
|
|
116
|
-
|
|
117
|
-
logger.info(
|
|
118
|
-
`auth_attempt - 认证尝试 - 端点: ${request.method} ${
|
|
119
|
-
request.url
|
|
120
|
-
}, 控制器: ${controller.name}, 允许API Key: ${allowApiKeyRequest}, IP: ${
|
|
121
|
-
request.ip || request.connection.remoteAddress
|
|
122
|
-
}`,
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
return (
|
|
126
|
-
allowApiKeyRequest
|
|
127
|
-
? this.getApikeyIdentity(request)
|
|
128
|
-
: Promise.reject("don't allow api key request.")
|
|
129
|
-
)
|
|
130
|
-
.catch((error) => {
|
|
131
|
-
logger.warn(
|
|
132
|
-
`apikey_fallback - API Key认证失败,回退到WOA/Taihu认证 - 端点: ${request.method} ${request.url}, 错误: ${error.message}`,
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
return getIdentity(request.headers, request.cookies);
|
|
136
|
-
})
|
|
137
|
-
.then((userInfo) => {
|
|
138
|
-
request.user = userInfo;
|
|
139
|
-
|
|
140
|
-
logger.info(
|
|
141
|
-
`auth_success - 认证成功 - 用户ID: ${userInfo.userid}, 用户名: ${userInfo.username}, 端点: ${request.method} ${request.url}`,
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
return true;
|
|
145
|
-
})
|
|
146
|
-
.catch((error) => {
|
|
147
|
-
logger.error(
|
|
148
|
-
`auth_failed - 认证失败 - 端点: ${request.method} ${request.url}, 错误: ${error.message}`,
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
throw new UnauthorizedException(error);
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
}
|
package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/http-cache.interceptor.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CacheInterceptor } from '@nestjs/cache-manager';
|
|
2
|
-
import { ExecutionContext, Injectable } from '@nestjs/common';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 扩展 CacheInterceptor,将 POST body 纳入 cache key,
|
|
6
|
-
* 避免不同参数的请求命中同一份缓存。
|
|
7
|
-
* cache key 格式:{url}:{JSON.stringify(body)}
|
|
8
|
-
*/
|
|
9
|
-
@Injectable()
|
|
10
|
-
export class HttpCacheInterceptor extends CacheInterceptor {
|
|
11
|
-
trackBy(context: ExecutionContext): string | undefined {
|
|
12
|
-
const request = context.switchToHttp().getRequest();
|
|
13
|
-
const url = request.url as string;
|
|
14
|
-
const body = request.body;
|
|
15
|
-
|
|
16
|
-
const bodyKey =
|
|
17
|
-
body && Object.keys(body).length > 0 ? JSON.stringify(body) : '';
|
|
18
|
-
|
|
19
|
-
return bodyKey ? `${url}:${bodyKey}` : url;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as winston from 'winston';
|
|
2
|
-
|
|
3
|
-
export const LogFormat = winston.format.combine(
|
|
4
|
-
winston.format.splat(),
|
|
5
|
-
winston.format.timestamp({
|
|
6
|
-
format: 'YYYY-MM-DD HH:mm:ss.SSS',
|
|
7
|
-
}),
|
|
8
|
-
winston.format.errors({ stack: true }),
|
|
9
|
-
winston.format.json(),
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
export const loggerInstance = winston.createLogger({
|
|
13
|
-
level: 'info',
|
|
14
|
-
transports: [
|
|
15
|
-
new winston.transports.Console({
|
|
16
|
-
format: LogFormat,
|
|
17
|
-
}),
|
|
18
|
-
],
|
|
19
|
-
});
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { UserType } from '@gadmin2n/nest-common';
|
|
2
|
-
import {
|
|
3
|
-
CanActivate,
|
|
4
|
-
ExecutionContext,
|
|
5
|
-
ForbiddenException,
|
|
6
|
-
Injectable,
|
|
7
|
-
} from '@nestjs/common';
|
|
8
|
-
import { Reflector } from '@nestjs/core';
|
|
9
|
-
type RolesGetter = (
|
|
10
|
-
user: UserType,
|
|
11
|
-
) => Promise<{ business?: (string | number)[]; roles: string[] }>;
|
|
12
|
-
|
|
13
|
-
@Injectable()
|
|
14
|
-
export default class RolesGuard implements CanActivate {
|
|
15
|
-
constructor(
|
|
16
|
-
private readonly getter: RolesGetter,
|
|
17
|
-
private reflector: Reflector,
|
|
18
|
-
) {}
|
|
19
|
-
|
|
20
|
-
canActivate(context: ExecutionContext): boolean | Promise<boolean> {
|
|
21
|
-
const req = context.switchToHttp().getRequest();
|
|
22
|
-
|
|
23
|
-
const allowUnauthorizedRequest = this.reflector.get<boolean>(
|
|
24
|
-
'allowUnauthorizedRequest',
|
|
25
|
-
context.getHandler(),
|
|
26
|
-
);
|
|
27
|
-
if (allowUnauthorizedRequest) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!req.user) {
|
|
32
|
-
throw new ForbiddenException();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return this.getter(req.user)
|
|
36
|
-
.then((configPerms) => {
|
|
37
|
-
if (configPerms.roles.length === 0) {
|
|
38
|
-
throw new ForbiddenException();
|
|
39
|
-
}
|
|
40
|
-
req.user.configPerms = configPerms;
|
|
41
|
-
return true;
|
|
42
|
-
})
|
|
43
|
-
.catch((_) => {
|
|
44
|
-
throw new ForbiddenException();
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Safe logging utility to prevent circular structure errors and limit log size
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const MAX_LOG_SIZE = 10000; // Maximum characters for a single log field
|
|
6
|
-
const MAX_ARRAY_ITEMS = 50; // Maximum array items to log
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Safely stringify an object, handling circular references and limiting size
|
|
10
|
-
* @param obj The object to stringify
|
|
11
|
-
* @param maxDepth Maximum depth to traverse
|
|
12
|
-
* @returns Safe string representation
|
|
13
|
-
*/
|
|
14
|
-
export function safeStringify(obj: any, maxDepth = 3): string {
|
|
15
|
-
const seen = new WeakSet();
|
|
16
|
-
|
|
17
|
-
const stringify = (value: any, depth: number): any => {
|
|
18
|
-
// Handle null and undefined
|
|
19
|
-
if (value === null) return null;
|
|
20
|
-
if (value === undefined) return undefined;
|
|
21
|
-
|
|
22
|
-
// Handle primitives
|
|
23
|
-
if (typeof value !== 'object') {
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Check for circular reference
|
|
28
|
-
if (seen.has(value)) {
|
|
29
|
-
return '[Circular]';
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Check depth limit
|
|
33
|
-
if (depth >= maxDepth) {
|
|
34
|
-
return '[Max Depth Reached]';
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
seen.add(value);
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
// Handle Date
|
|
41
|
-
if (value instanceof Date) {
|
|
42
|
-
return value.toISOString();
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Handle Array
|
|
46
|
-
if (Array.isArray(value)) {
|
|
47
|
-
const items = value
|
|
48
|
-
.slice(0, MAX_ARRAY_ITEMS)
|
|
49
|
-
.map((item) => stringify(item, depth + 1));
|
|
50
|
-
if (value.length > MAX_ARRAY_ITEMS) {
|
|
51
|
-
items.push(`[... ${value.length - MAX_ARRAY_ITEMS} more items]`);
|
|
52
|
-
}
|
|
53
|
-
return items;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Handle plain objects
|
|
57
|
-
const result: any = {};
|
|
58
|
-
const keys = Object.keys(value);
|
|
59
|
-
|
|
60
|
-
for (const key of keys) {
|
|
61
|
-
try {
|
|
62
|
-
result[key] = stringify(value[key], depth + 1);
|
|
63
|
-
} catch (error) {
|
|
64
|
-
result[key] = '[Error stringifying]';
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return result;
|
|
69
|
-
} finally {
|
|
70
|
-
seen.delete(value);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
try {
|
|
75
|
-
const safeObj = stringify(obj, 0);
|
|
76
|
-
const str = JSON.stringify(safeObj);
|
|
77
|
-
|
|
78
|
-
// Limit total size
|
|
79
|
-
if (str.length > MAX_LOG_SIZE) {
|
|
80
|
-
return (
|
|
81
|
-
str.substring(0, MAX_LOG_SIZE) +
|
|
82
|
-
`... [truncated ${str.length - MAX_LOG_SIZE} chars]`
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return str;
|
|
87
|
-
} catch (error) {
|
|
88
|
-
return `[Error: ${error.message}]`;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Create a safe log object that can be passed to logger
|
|
94
|
-
* @param data The data to log
|
|
95
|
-
* @returns Safe log object
|
|
96
|
-
*/
|
|
97
|
-
export function createSafeLogData(
|
|
98
|
-
data: Record<string, any>,
|
|
99
|
-
): Record<string, any> {
|
|
100
|
-
const safeData: Record<string, any> = {
|
|
101
|
-
__ROLE_PAGE_RESOURCE__: true, // Unified field for production log collection
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
for (const [key, value] of Object.entries(data)) {
|
|
105
|
-
try {
|
|
106
|
-
// For simple types, use directly
|
|
107
|
-
if (
|
|
108
|
-
value === null ||
|
|
109
|
-
value === undefined ||
|
|
110
|
-
typeof value === 'string' ||
|
|
111
|
-
typeof value === 'number' ||
|
|
112
|
-
typeof value === 'boolean'
|
|
113
|
-
) {
|
|
114
|
-
safeData[key] = value;
|
|
115
|
-
} else {
|
|
116
|
-
// For complex types, use safe stringify
|
|
117
|
-
const stringified = safeStringify(value);
|
|
118
|
-
try {
|
|
119
|
-
// Try to parse back to object for better log formatting
|
|
120
|
-
safeData[key] = JSON.parse(stringified);
|
|
121
|
-
} catch {
|
|
122
|
-
// If parse fails, use the string
|
|
123
|
-
safeData[key] = stringified;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
} catch (error) {
|
|
127
|
-
safeData[key] = `[Error processing ${key}]`;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return safeData;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Extract only essential fields from database records for logging
|
|
136
|
-
* @param record Database record
|
|
137
|
-
* @param essentialFields Fields to include (defaults to common fields)
|
|
138
|
-
* @returns Simplified record
|
|
139
|
-
*/
|
|
140
|
-
export function extractEssentialFields(
|
|
141
|
-
record: any,
|
|
142
|
-
essentialFields?: string[],
|
|
143
|
-
): any {
|
|
144
|
-
if (!record) return record;
|
|
145
|
-
|
|
146
|
-
const defaultFields = [
|
|
147
|
-
'id',
|
|
148
|
-
'name',
|
|
149
|
-
'code',
|
|
150
|
-
'type',
|
|
151
|
-
'status',
|
|
152
|
-
'createdAt',
|
|
153
|
-
'updatedAt',
|
|
154
|
-
];
|
|
155
|
-
const fields = essentialFields || defaultFields;
|
|
156
|
-
|
|
157
|
-
if (Array.isArray(record)) {
|
|
158
|
-
return record.map((item) => extractEssentialFields(item, essentialFields));
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (typeof record === 'object') {
|
|
162
|
-
const result: any = {};
|
|
163
|
-
for (const field of fields) {
|
|
164
|
-
if (field in record) {
|
|
165
|
-
result[field] = record[field];
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
// Always include id if exists
|
|
169
|
-
if ('id' in record && !result.id) {
|
|
170
|
-
result.id = record.id;
|
|
171
|
-
}
|
|
172
|
-
return result;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return record;
|
|
176
|
-
}
|