midway-fatcms 0.0.2 → 0.0.3

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 (396) hide show
  1. package/.eslintrc.json +14 -14
  2. package/.prettierrc.js +4 -4
  3. package/README.md +406 -406
  4. package/dist/config/config.default.d.ts +3 -3
  5. package/dist/config/config.default.js +177 -177
  6. package/dist/config/utils.d.ts +1 -1
  7. package/dist/config/utils.js +23 -23
  8. package/dist/configuration.d.ts +7 -7
  9. package/dist/configuration.js +113 -113
  10. package/dist/controller/base/BaseApiController.d.ts +49 -49
  11. package/dist/controller/base/BaseApiController.js +198 -198
  12. package/dist/controller/gateway/AnyApiGatewayController.d.ts +13 -13
  13. package/dist/controller/gateway/AnyApiGatewayController.js +55 -55
  14. package/dist/controller/gateway/AsyncTaskController.d.ts +20 -20
  15. package/dist/controller/gateway/AsyncTaskController.js +181 -181
  16. package/dist/controller/gateway/CrudMtdGatewayController.d.ts +21 -21
  17. package/dist/controller/gateway/CrudMtdGatewayController.js +122 -122
  18. package/dist/controller/gateway/CrudStdGatewayController.d.ts +39 -39
  19. package/dist/controller/gateway/CrudStdGatewayController.js +149 -149
  20. package/dist/controller/gateway/DocGatewayController.d.ts +27 -27
  21. package/dist/controller/gateway/DocGatewayController.js +181 -181
  22. package/dist/controller/gateway/FileController.d.ts +32 -32
  23. package/dist/controller/gateway/FileController.js +160 -160
  24. package/dist/controller/gateway/FlowInstanceController.d.ts +16 -16
  25. package/dist/controller/gateway/FlowInstanceController.js +48 -48
  26. package/dist/controller/gateway/ProxyApiGatewayController.d.ts +18 -18
  27. package/dist/controller/gateway/ProxyApiGatewayController.js +78 -78
  28. package/dist/controller/gateway/PublicApiController.d.ts +33 -33
  29. package/dist/controller/gateway/PublicApiController.js +194 -194
  30. package/dist/controller/gateway/StaticController.d.ts +23 -23
  31. package/dist/controller/gateway/StaticController.js +280 -280
  32. package/dist/controller/helpers.controller.d.ts +36 -36
  33. package/dist/controller/helpers.controller.js +187 -187
  34. package/dist/controller/home.controller.d.ts +9 -9
  35. package/dist/controller/home.controller.js +78 -78
  36. package/dist/controller/manage/AnyApiMangeApi.d.ts +10 -10
  37. package/dist/controller/manage/AnyApiMangeApi.js +98 -98
  38. package/dist/controller/manage/AppLogMangeApi.d.ts +10 -10
  39. package/dist/controller/manage/AppLogMangeApi.js +88 -88
  40. package/dist/controller/manage/AppMangeApi.d.ts +12 -12
  41. package/dist/controller/manage/AppMangeApi.js +101 -101
  42. package/dist/controller/manage/AppPageMangeApi.d.ts +10 -10
  43. package/dist/controller/manage/AppPageMangeApi.js +87 -87
  44. package/dist/controller/manage/AppSchemaHistoryApi.d.ts +10 -10
  45. package/dist/controller/manage/AppSchemaHistoryApi.js +83 -83
  46. package/dist/controller/manage/CrudMethodsMangeApi.d.ts +10 -10
  47. package/dist/controller/manage/CrudMethodsMangeApi.js +84 -84
  48. package/dist/controller/manage/CrudStandardDesignApi.d.ts +46 -46
  49. package/dist/controller/manage/CrudStandardDesignApi.js +367 -367
  50. package/dist/controller/manage/DataDictManageApi.d.ts +17 -17
  51. package/dist/controller/manage/DataDictManageApi.js +165 -165
  52. package/dist/controller/manage/DeployManageApi.d.ts +21 -21
  53. package/dist/controller/manage/DeployManageApi.js +203 -203
  54. package/dist/controller/manage/DocLibManageApi.d.ts +10 -10
  55. package/dist/controller/manage/DocLibManageApi.js +104 -104
  56. package/dist/controller/manage/DocManageApi.d.ts +11 -11
  57. package/dist/controller/manage/DocManageApi.js +130 -130
  58. package/dist/controller/manage/FileManageApi.d.ts +13 -13
  59. package/dist/controller/manage/FileManageApi.js +77 -77
  60. package/dist/controller/manage/FlowConfigManageApi.d.ts +12 -12
  61. package/dist/controller/manage/FlowConfigManageApi.js +109 -109
  62. package/dist/controller/manage/LowCodeTplManageApi.d.ts +13 -13
  63. package/dist/controller/manage/LowCodeTplManageApi.js +86 -86
  64. package/dist/controller/manage/MenuManageApi.d.ts +11 -11
  65. package/dist/controller/manage/MenuManageApi.js +104 -104
  66. package/dist/controller/manage/ProxyApiMangeApi.d.ts +10 -10
  67. package/dist/controller/manage/ProxyApiMangeApi.js +87 -87
  68. package/dist/controller/manage/SuperAdminManageApi.d.ts +24 -24
  69. package/dist/controller/manage/SuperAdminManageApi.js +153 -153
  70. package/dist/controller/manage/SysConfigMangeApi.d.ts +12 -12
  71. package/dist/controller/manage/SysConfigMangeApi.js +133 -133
  72. package/dist/controller/manage/SystemInfoManageApi.d.ts +12 -12
  73. package/dist/controller/manage/SystemInfoManageApi.js +82 -82
  74. package/dist/controller/manage/UserAccountManageApi.d.ts +16 -16
  75. package/dist/controller/manage/UserAccountManageApi.js +153 -153
  76. package/dist/controller/manage/WorkbenchMangeApi.d.ts +11 -11
  77. package/dist/controller/manage/WorkbenchMangeApi.js +106 -106
  78. package/dist/controller/myinfo/AuthController.d.ts +37 -37
  79. package/dist/controller/myinfo/AuthController.js +157 -157
  80. package/dist/controller/myinfo/MyInfoController.d.ts +13 -13
  81. package/dist/controller/myinfo/MyInfoController.js +51 -51
  82. package/dist/controller/render/AppRenderController.d.ts +12 -12
  83. package/dist/controller/render/AppRenderController.js +93 -93
  84. package/dist/controller/test.controller.d.ts +8 -8
  85. package/dist/controller/test.controller.js +51 -51
  86. package/dist/filter/default.filter.d.ts +7 -7
  87. package/dist/filter/default.filter.js +23 -23
  88. package/dist/filter/notfound.filter.d.ts +5 -5
  89. package/dist/filter/notfound.filter.js +20 -20
  90. package/dist/index.d.ts +111 -111
  91. package/dist/index.js +129 -129
  92. package/dist/interface.d.ts +30 -30
  93. package/dist/interface.js +3 -3
  94. package/dist/libs/crud-pro/CrudPro.d.ts +37 -37
  95. package/dist/libs/crud-pro/CrudPro.js +146 -146
  96. package/dist/libs/crud-pro/defaultConfigs.d.ts +4 -4
  97. package/dist/libs/crud-pro/defaultConfigs.js +15 -15
  98. package/dist/libs/crud-pro/exceptions.d.ts +106 -106
  99. package/dist/libs/crud-pro/exceptions.js +119 -119
  100. package/dist/libs/crud-pro/interfaces.d.ts +175 -175
  101. package/dist/libs/crud-pro/interfaces.js +12 -12
  102. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +50 -50
  103. package/dist/libs/crud-pro/models/ExecuteContext.js +87 -87
  104. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +38 -38
  105. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +72 -72
  106. package/dist/libs/crud-pro/models/FuncContext.d.ts +18 -18
  107. package/dist/libs/crud-pro/models/FuncContext.js +6 -6
  108. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +65 -65
  109. package/dist/libs/crud-pro/models/RequestCfgModel.js +81 -81
  110. package/dist/libs/crud-pro/models/RequestModel.d.ts +25 -25
  111. package/dist/libs/crud-pro/models/RequestModel.js +113 -113
  112. package/dist/libs/crud-pro/models/ResModel.d.ts +20 -20
  113. package/dist/libs/crud-pro/models/ResModel.js +2 -2
  114. package/dist/libs/crud-pro/models/ServiceHub.d.ts +20 -20
  115. package/dist/libs/crud-pro/models/ServiceHub.js +2 -2
  116. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +23 -23
  117. package/dist/libs/crud-pro/models/SqlCfgModel.js +40 -40
  118. package/dist/libs/crud-pro/models/SqlSegArg.d.ts +6 -6
  119. package/dist/libs/crud-pro/models/SqlSegArg.js +12 -12
  120. package/dist/libs/crud-pro/models/Transaction.d.ts +50 -50
  121. package/dist/libs/crud-pro/models/Transaction.js +184 -179
  122. package/dist/libs/crud-pro/models/TransactionMySQL.d.ts +19 -19
  123. package/dist/libs/crud-pro/models/TransactionMySQL.js +48 -48
  124. package/dist/libs/crud-pro/models/TransactionPostgres.d.ts +19 -19
  125. package/dist/libs/crud-pro/models/TransactionPostgres.js +64 -64
  126. package/dist/libs/crud-pro/models/TransactionSqlServer.d.ts +9 -9
  127. package/dist/libs/crud-pro/models/TransactionSqlServer.js +61 -61
  128. package/dist/libs/crud-pro/models/keys.d.ts +111 -110
  129. package/dist/libs/crud-pro/models/keys.js +156 -154
  130. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +11 -11
  131. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +73 -73
  132. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.d.ts +9 -9
  133. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.js +125 -125
  134. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.d.ts +17 -17
  135. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +224 -224
  136. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.d.ts +9 -9
  137. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.js +51 -51
  138. package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +13 -13
  139. package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +148 -148
  140. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +25 -24
  141. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +385 -355
  142. package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +25 -25
  143. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +165 -165
  144. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +32 -32
  145. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +339 -339
  146. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +24 -24
  147. package/dist/libs/crud-pro/services/CrudProServiceBase.js +88 -88
  148. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +9 -9
  149. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +72 -72
  150. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +32 -32
  151. package/dist/libs/crud-pro/services/CurdProServiceHub.js +64 -64
  152. package/dist/libs/crud-pro/utils/CompareUtils.d.ts +9 -9
  153. package/dist/libs/crud-pro/utils/CompareUtils.js +25 -25
  154. package/dist/libs/crud-pro/utils/CrudMonitor.d.ts +9 -9
  155. package/dist/libs/crud-pro/utils/CrudMonitor.js +12 -12
  156. package/dist/libs/crud-pro/utils/DatabaseName.d.ts +9 -9
  157. package/dist/libs/crud-pro/utils/DatabaseName.js +50 -50
  158. package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +7 -7
  159. package/dist/libs/crud-pro/utils/DateTimeUtils.js +21 -21
  160. package/dist/libs/crud-pro/utils/MemoryRefreshCache.d.ts +19 -19
  161. package/dist/libs/crud-pro/utils/MemoryRefreshCache.js +47 -47
  162. package/dist/libs/crud-pro/utils/MessageParseUtils.d.ts +5 -5
  163. package/dist/libs/crud-pro/utils/MessageParseUtils.js +33 -33
  164. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +40 -40
  165. package/dist/libs/crud-pro/utils/MixinUtils.js +259 -258
  166. package/dist/libs/crud-pro/utils/ModelUtils.d.ts +11 -11
  167. package/dist/libs/crud-pro/utils/ModelUtils.js +54 -54
  168. package/dist/libs/crud-pro/utils/MultiKeyMap.d.ts +11 -11
  169. package/dist/libs/crud-pro/utils/MultiKeyMap.js +63 -63
  170. package/dist/libs/crud-pro/utils/SqlFuncUtils.d.ts +5 -5
  171. package/dist/libs/crud-pro/utils/SqlFuncUtils.js +29 -29
  172. package/dist/libs/crud-pro/utils/TypeUtils.d.ts +40 -40
  173. package/dist/libs/crud-pro/utils/TypeUtils.js +166 -166
  174. package/dist/libs/crud-pro/utils/ValidateUtils.d.ts +3 -3
  175. package/dist/libs/crud-pro/utils/ValidateUtils.js +165 -165
  176. package/dist/libs/crud-pro/utils/pool/MySQLUtils.d.ts +3 -3
  177. package/dist/libs/crud-pro/utils/pool/MySQLUtils.js +19 -19
  178. package/dist/libs/crud-pro/utils/pool/PostgresUtils.d.ts +3 -3
  179. package/dist/libs/crud-pro/utils/pool/PostgresUtils.js +20 -20
  180. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.d.ts +3 -3
  181. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +20 -20
  182. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +4 -4
  183. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +35 -35
  184. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +24 -24
  185. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +2 -2
  186. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.js +14 -14
  187. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +2 -2
  188. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.js +14 -14
  189. package/dist/libs/global-config/global-config.d.ts +71 -71
  190. package/dist/libs/global-config/global-config.js +38 -38
  191. package/dist/libs/utils/AsymmetricCrypto.d.ts +76 -76
  192. package/dist/libs/utils/AsymmetricCrypto.js +261 -261
  193. package/dist/libs/utils/base64.d.ts +9 -9
  194. package/dist/libs/utils/base64.js +42 -42
  195. package/dist/libs/utils/common-dto.d.ts +18 -18
  196. package/dist/libs/utils/common-dto.js +40 -40
  197. package/dist/libs/utils/crypto-utils.d.ts +3 -3
  198. package/dist/libs/utils/crypto-utils.js +55 -55
  199. package/dist/libs/utils/errorToString.d.ts +20 -20
  200. package/dist/libs/utils/errorToString.js +79 -79
  201. package/dist/libs/utils/fatcms-request.d.ts +45 -45
  202. package/dist/libs/utils/fatcms-request.js +161 -161
  203. package/dist/libs/utils/format-url.d.ts +17 -17
  204. package/dist/libs/utils/format-url.js +30 -30
  205. package/dist/libs/utils/functions.d.ts +11 -11
  206. package/dist/libs/utils/functions.js +99 -99
  207. package/dist/libs/utils/ordernum-utils.d.ts +22 -22
  208. package/dist/libs/utils/ordernum-utils.js +35 -35
  209. package/dist/libs/utils/parseConfig.d.ts +8 -8
  210. package/dist/libs/utils/parseConfig.js +47 -47
  211. package/dist/libs/utils/parseCreateSql.d.ts +10 -10
  212. package/dist/libs/utils/parseCreateSql.js +87 -87
  213. package/dist/libs/utils/render-utils.d.ts +40 -40
  214. package/dist/libs/utils/render-utils.js +158 -158
  215. package/dist/middleware/forbidden.middleware.d.ts +74 -74
  216. package/dist/middleware/forbidden.middleware.js +318 -307
  217. package/dist/middleware/global.middleware.d.ts +40 -40
  218. package/dist/middleware/global.middleware.js +310 -310
  219. package/dist/middleware/permission.middleware.d.ts +88 -88
  220. package/dist/middleware/permission.middleware.js +145 -145
  221. package/dist/middleware/rediscache.middleware.d.ts +28 -28
  222. package/dist/middleware/rediscache.middleware.js +114 -114
  223. package/dist/middleware/redislock.middleware.d.ts +29 -29
  224. package/dist/middleware/redislock.middleware.js +106 -106
  225. package/dist/middleware/tx.middleware.d.ts +55 -55
  226. package/dist/middleware/tx.middleware.js +83 -83
  227. package/dist/models/AsyncTaskModel.d.ts +74 -74
  228. package/dist/models/AsyncTaskModel.js +31 -31
  229. package/dist/models/FlowModel.d.ts +227 -227
  230. package/dist/models/FlowModel.js +53 -53
  231. package/dist/models/RedisKeys.d.ts +15 -15
  232. package/dist/models/RedisKeys.js +18 -18
  233. package/dist/models/SystemEntities.d.ts +118 -117
  234. package/dist/models/SystemEntities.js +18 -17
  235. package/dist/models/SystemPerm.d.ts +96 -96
  236. package/dist/models/SystemPerm.js +101 -101
  237. package/dist/models/SystemTables.d.ts +25 -25
  238. package/dist/models/SystemTables.js +28 -28
  239. package/dist/models/WorkbenchInfoTools.d.ts +7 -7
  240. package/dist/models/WorkbenchInfoTools.js +20 -20
  241. package/dist/models/bizmodels.d.ts +150 -150
  242. package/dist/models/bizmodels.js +62 -62
  243. package/dist/models/contextLogger.d.ts +27 -27
  244. package/dist/models/contextLogger.js +119 -119
  245. package/dist/models/devops.d.ts +12 -12
  246. package/dist/models/devops.js +19 -19
  247. package/dist/models/userSession.d.ts +67 -67
  248. package/dist/models/userSession.js +179 -179
  249. package/dist/schedule/anonymousContext.d.ts +15 -15
  250. package/dist/schedule/anonymousContext.js +74 -74
  251. package/dist/schedule/index.d.ts +4 -4
  252. package/dist/schedule/index.js +10 -10
  253. package/dist/schedule/runSchedule.d.ts +12 -12
  254. package/dist/schedule/runSchedule.js +68 -68
  255. package/dist/schedule/scheduleNames.d.ts +15 -15
  256. package/dist/schedule/scheduleNames.js +19 -19
  257. package/dist/service/AuthService.d.ts +56 -56
  258. package/dist/service/AuthService.js +251 -248
  259. package/dist/service/EnumInfoService.d.ts +30 -30
  260. package/dist/service/EnumInfoService.js +97 -97
  261. package/dist/service/FileCenterService.d.ts +64 -64
  262. package/dist/service/FileCenterService.js +422 -422
  263. package/dist/service/SysAppService.d.ts +15 -15
  264. package/dist/service/SysAppService.js +108 -108
  265. package/dist/service/SysConfigService.d.ts +10 -10
  266. package/dist/service/SysConfigService.js +64 -64
  267. package/dist/service/SysDictDataService.d.ts +9 -9
  268. package/dist/service/SysDictDataService.js +72 -72
  269. package/dist/service/SysMenuService.d.ts +51 -51
  270. package/dist/service/SysMenuService.js +58 -58
  271. package/dist/service/UserAccountService.d.ts +23 -23
  272. package/dist/service/UserAccountService.js +107 -107
  273. package/dist/service/UserSessionService.d.ts +43 -43
  274. package/dist/service/UserSessionService.js +163 -163
  275. package/dist/service/VisitStatService.d.ts +14 -14
  276. package/dist/service/VisitStatService.js +161 -161
  277. package/dist/service/WorkbenchService.d.ts +59 -59
  278. package/dist/service/WorkbenchService.js +249 -249
  279. package/dist/service/anyapi/AnyApiSandboxService.d.ts +15 -15
  280. package/dist/service/anyapi/AnyApiSandboxService.js +110 -110
  281. package/dist/service/anyapi/AnyApiService.d.ts +27 -27
  282. package/dist/service/anyapi/AnyApiService.js +181 -181
  283. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -50
  284. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -287
  285. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -7
  286. package/dist/service/asyncTask/AsyncTaskService.js +34 -34
  287. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -10
  288. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -2
  289. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -7
  290. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -216
  291. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -36
  292. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -141
  293. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -46
  294. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -135
  295. package/dist/service/base/ApiBaseService.d.ts +22 -22
  296. package/dist/service/base/ApiBaseService.js +60 -60
  297. package/dist/service/base/ApiRateLimiter.d.ts +10 -10
  298. package/dist/service/base/ApiRateLimiter.js +51 -51
  299. package/dist/service/base/BaseService.d.ts +46 -45
  300. package/dist/service/base/BaseService.js +131 -127
  301. package/dist/service/base/cache/CacheServiceFactory.d.ts +26 -26
  302. package/dist/service/base/cache/CacheServiceFactory.js +122 -122
  303. package/dist/service/base/cache/CtxCache.d.ts +18 -18
  304. package/dist/service/base/cache/CtxCache.js +37 -37
  305. package/dist/service/base/cache/DiskCache.d.ts +19 -19
  306. package/dist/service/base/cache/DiskCache.js +81 -81
  307. package/dist/service/base/cache/MemoryCache.d.ts +12 -12
  308. package/dist/service/base/cache/MemoryCache.js +58 -58
  309. package/dist/service/base/cache/NoneCache.d.ts +10 -10
  310. package/dist/service/base/cache/NoneCache.js +19 -19
  311. package/dist/service/base/cache/RedisCache.d.ts +14 -14
  312. package/dist/service/base/cache/RedisCache.js +31 -31
  313. package/dist/service/crudstd/CrudStdActionService.d.ts +17 -17
  314. package/dist/service/crudstd/CrudStdActionService.js +32 -32
  315. package/dist/service/crudstd/CrudStdConstant.d.ts +58 -58
  316. package/dist/service/crudstd/CrudStdConstant.js +64 -64
  317. package/dist/service/crudstd/CrudStdRelationService.d.ts +11 -11
  318. package/dist/service/crudstd/CrudStdRelationService.js +179 -179
  319. package/dist/service/crudstd/CrudStdService.d.ts +59 -59
  320. package/dist/service/crudstd/CrudStdService.js +348 -348
  321. package/dist/service/curd/CrudProQuick.d.ts +60 -60
  322. package/dist/service/curd/CrudProQuick.js +167 -167
  323. package/dist/service/curd/CurdMixByAccountService.d.ts +14 -14
  324. package/dist/service/curd/CurdMixByAccountService.js +166 -166
  325. package/dist/service/curd/CurdMixByDictService.d.ts +12 -12
  326. package/dist/service/curd/CurdMixByDictService.js +114 -114
  327. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +30 -30
  328. package/dist/service/curd/CurdMixByLinkToCustomService.js +209 -209
  329. package/dist/service/curd/CurdMixBySysConfigService.d.ts +13 -13
  330. package/dist/service/curd/CurdMixBySysConfigService.js +116 -116
  331. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +11 -11
  332. package/dist/service/curd/CurdMixByWorkbenchService.js +80 -80
  333. package/dist/service/curd/CurdMixService.d.ts +28 -28
  334. package/dist/service/curd/CurdMixService.js +100 -100
  335. package/dist/service/curd/CurdMixUtils.d.ts +57 -57
  336. package/dist/service/curd/CurdMixUtils.js +331 -331
  337. package/dist/service/curd/CurdProService.d.ts +32 -32
  338. package/dist/service/curd/CurdProService.js +215 -215
  339. package/dist/service/curd/fixCfgModel.d.ts +3 -3
  340. package/dist/service/curd/fixCfgModel.js +104 -104
  341. package/dist/service/curd/fixSoftDelete.d.ts +6 -6
  342. package/dist/service/curd/fixSoftDelete.js +43 -43
  343. package/dist/service/flow/FlowConfigService.d.ts +41 -41
  344. package/dist/service/flow/FlowConfigService.js +95 -95
  345. package/dist/service/flow/FlowInstanceCrudService.d.ts +35 -35
  346. package/dist/service/flow/FlowInstanceCrudService.js +257 -257
  347. package/dist/service/flow/FlowInstanceService.d.ts +88 -88
  348. package/dist/service/flow/FlowInstanceService.js +451 -451
  349. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +21 -21
  350. package/dist/service/proxyapi/ProxyApiLoadService.js +167 -167
  351. package/dist/service/proxyapi/ProxyApiService.d.ts +61 -61
  352. package/dist/service/proxyapi/ProxyApiService.js +317 -297
  353. package/dist/service/proxyapi/ProxyApiUtils.d.ts +15 -15
  354. package/dist/service/proxyapi/ProxyApiUtils.js +34 -34
  355. package/dist/service/proxyapi/RouteHandler.d.ts +6 -5
  356. package/dist/service/proxyapi/RouteHandler.js +9 -9
  357. package/dist/service/proxyapi/RouteTrie.d.ts +12 -12
  358. package/dist/service/proxyapi/RouteTrie.js +64 -63
  359. package/dist/service/proxyapi/WeightedRandom.d.ts +9 -9
  360. package/dist/service/proxyapi/WeightedRandom.js +31 -31
  361. package/dist/service/proxyapi/WeightedRoundRobin.d.ts +8 -8
  362. package/dist/service/proxyapi/WeightedRoundRobin.js +33 -32
  363. package/index.d.ts +10 -10
  364. package/package.json +87 -87
  365. package/src/libs/crud-pro/models/Transaction.ts +5 -1
  366. package/src/libs/crud-pro/models/keys.ts +6 -2
  367. package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +37 -0
  368. package/src/libs/crud-pro/utils/CrudMonitor.ts +13 -13
  369. package/src/libs/crud-pro/utils/MixinUtils.ts +11 -10
  370. package/src/libs/utils/AsymmetricCrypto.ts +307 -307
  371. package/src/libs/utils/format-url.ts +29 -29
  372. package/src/libs/utils/render-utils.ts +223 -223
  373. package/src/middleware/forbidden.middleware.ts +17 -7
  374. package/src/middleware/global.middleware.ts +1 -1
  375. package/src/models/SystemEntities.ts +1 -0
  376. package/src/models/WorkbenchInfoTools.ts +19 -19
  377. package/src/service/AuthService.ts +3 -0
  378. package/src/service/SysAppService.ts +103 -103
  379. package/src/service/SysDictDataService.ts +63 -63
  380. package/src/service/SysMenuService.ts +87 -87
  381. package/src/service/WorkbenchService.ts +279 -279
  382. package/src/service/base/BaseService.ts +5 -0
  383. package/src/service/base/cache/CacheServiceFactory.ts +135 -135
  384. package/src/service/base/cache/CtxCache.ts +45 -45
  385. package/src/service/base/cache/DiskCache.ts +90 -90
  386. package/src/service/base/cache/MemoryCache.ts +68 -68
  387. package/src/service/base/cache/NoneCache.ts +24 -24
  388. package/src/service/base/cache/RedisCache.ts +41 -41
  389. package/src/service/crudstd/CrudStdService.ts +2 -1
  390. package/src/service/curd/CurdMixByAccountService.ts +177 -177
  391. package/src/service/curd/fixSoftDelete.ts +58 -58
  392. package/src/service/proxyapi/ProxyApiService.ts +22 -1
  393. package/src/service/proxyapi/RouteHandler.ts +4 -2
  394. package/src/service/proxyapi/RouteTrie.ts +1 -1
  395. package/src/service/proxyapi/WeightedRoundRobin.ts +2 -1
  396. package/tsconfig.json +32 -32
@@ -1,223 +1,223 @@
1
- import * as _ from 'lodash';
2
- import * as moment from 'moment';
3
- import { Context } from '@midwayjs/koa';
4
- import { parseJsonObject } from './functions';
5
- import { getExtLocalLoaderPort } from './fatcms-request';
6
- import { TypeUtils } from '../crud-pro/utils/TypeUtils';
7
- import { ISessionInfo } from '@/models/userSession';
8
-
9
- // const demo = {"schema":[
10
- // {"title":"资源配置","name":"fileList","type":"array","properties":{"fileUrl":{"label":"文件URL","component":"Input","xProps":{"hasClear":true},"width":500}}}],
11
- // "data":{"fileList":[{"settingKey":"n1iqmu8qnc_1","fileUrl":"aa"},{"settingKey":"n1iqmu8rml_2","fileUrl":"aa"}]
12
- // }}
13
-
14
- interface IFileElement {
15
- fileUrl: string;
16
- fileType?: string;
17
- isModule?: boolean;
18
- }
19
-
20
- interface IRenderUtilsProps {
21
- ctx: Context;
22
- package_assets: any;
23
- workbenchInfo: any;
24
- userInfo?: ISessionInfo;
25
- appInfo?: any;
26
- fatcmscsrftoken: string;
27
- urlcsrftoken: string;
28
- }
29
-
30
- function parseCookie(cookieStr: string): any {
31
- const cookies = {};
32
-
33
- if (!cookieStr) {
34
- return cookies;
35
- }
36
-
37
- // 分割每个 cookie 项
38
- const cookieItems = cookieStr.split(';');
39
-
40
- for (const item of cookieItems) {
41
- // 去除空白字符
42
- const trimmedItem = item.trim();
43
- if (!trimmedItem) {
44
- continue;
45
- }
46
-
47
- // 找到第一个等号的位置
48
- const eqIndex = trimmedItem.indexOf('=');
49
- if (eqIndex === -1) {
50
- continue;
51
- }
52
-
53
- // 提取 key 和 value
54
- const key = trimmedItem.substring(0, eqIndex).trim();
55
- const value = trimmedItem.substring(eqIndex + 1).trim();
56
-
57
- // 处理可能的引号
58
- if (value.startsWith('"') && value.endsWith('"')) {
59
- cookies[key] = value.slice(1, -1);
60
- } else {
61
- cookies[key] = value;
62
- }
63
- }
64
-
65
- return cookies;
66
- }
67
-
68
-
69
- function isMobileUserAgent(userAgent = '') {
70
- // 空值处理
71
- if (!userAgent) return false;
72
-
73
- // 转为小写统一匹配
74
- const ua = userAgent.toLowerCase();
75
-
76
- // 【核心】移动端关键词(覆盖主流系统)
77
- const mobileKeywords = /android|iphone|ipod|ios|mobile|blackberry|iemobile|opera mini|windows phone|harmonyos/i;
78
- // 【排除项】平板/PC关键词(避免误判)
79
- const excludeKeywords = /ipad|tablet|playbook|kindle|pc|windows nt|macintosh|linux x86_64/i;
80
-
81
- // 判断规则:包含移动端关键词 + 不包含排除项关键词
82
- const isMatchMobile = mobileKeywords.test(ua);
83
- const isExclude = excludeKeywords.test(ua);
84
-
85
- return isMatchMobile && !isExclude;
86
- }
87
-
88
- class RenderUtils {
89
- public readonly ctx: Context;
90
- public readonly fileList: IFileElement[];
91
- public readonly workbenchInfo: any;
92
- public readonly userInfo: ISessionInfo;
93
- public readonly appInfo: any;
94
- public readonly cookieInfo: any;
95
- public readonly fatcmscsrftoken: string;
96
- public readonly urlcsrftoken: string;
97
- public readonly isMobileUserAgent: boolean;
98
- public readonly isMobileByQuery: boolean;
99
-
100
- constructor(props: IRenderUtilsProps) {
101
- this.ctx = props.ctx;
102
- const query = props.ctx?.query || {};
103
- const headers = props.ctx?.headers || {};
104
- this.workbenchInfo = props.workbenchInfo || {};
105
- this.userInfo = props.userInfo || ({} as ISessionInfo);
106
- this.appInfo = props.appInfo || {};
107
- this.fatcmscsrftoken = props.fatcmscsrftoken;
108
- this.urlcsrftoken = props.urlcsrftoken;
109
- this.cookieInfo = parseCookie(headers?.cookie);
110
- this.isMobileUserAgent = isMobileUserAgent(headers['user-agent'] || '');
111
- this.isMobileByQuery = `${query['__is_mobile_request__']}` === 'true'
112
-
113
- const packageAssets = parseJsonObject(props.package_assets) || {};
114
- const fileList = _.get(packageAssets, 'data.fileList');
115
-
116
-
117
- if (Array.isArray(fileList)) {
118
- this.fileList = fileList.filter(f => {
119
- return f && f.fileUrl && typeof f.fileUrl === 'string' && f.fileUrl.length > 5; // 至少五个字符。
120
- });
121
- } else {
122
- this.fileList = [];
123
- const time = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
124
- console.info(
125
- time +
126
- ' 解析fileList为空==>' +
127
- JSON.stringify({
128
- workbench_code: this.workbenchInfo?.workbench_code,
129
- app_code: this.appInfo?.app_code,
130
- })
131
- );
132
- }
133
- }
134
-
135
- renderCsrfToken() {
136
- return `<script>window.__fatcmscsrftoken = "${this.fatcmscsrftoken}";</script>`;
137
- }
138
-
139
- renderUrlCsrfToken() {
140
- return `<script>window.__fatcmsUrlCsrfToken = "${this.urlcsrftoken}";</script>`;
141
- }
142
-
143
- renderUserInfo() {
144
- const userInfoClone = { ...this.userInfo };
145
- delete userInfoClone.privateKey;
146
- return `<script>window.__user_info = ${JSON.stringify(userInfoClone)} </script>`;
147
- }
148
-
149
- renderWorkbenchInfo() {
150
- const infoPick = _.pick(this.workbenchInfo, ['id', 'workbench_code', 'workbench_name', 'workbench_domain', 'workbench_desc', 'config_type', 'config_content']);
151
- return `<script>window.__workbench_info = ${JSON.stringify(infoPick)}</script>`;
152
- }
153
-
154
- renderAppInfo() {
155
- const infoPick = _.pick(this.appInfo, ['id', 'app_code', 'app_name', 'app_type', 'app_desc', 'config_type', 'config_content']);
156
- return `<script>window.__app_info = ${JSON.stringify(infoPick)}</script>`;
157
- }
158
-
159
-
160
-
161
-
162
-
163
- renderCookieInfo(keys: string) {
164
- try {
165
- const cookies = this.cookieInfo;
166
- const cookieObj = {};
167
- if (typeof keys === 'string') {
168
- const keyArr = keys.split(',');
169
- for (let i = 0; i < keyArr.length; i++) {
170
- const keyName = keyArr[i];
171
- cookieObj[keyName] = cookies[keyName];
172
- }
173
- }
174
- return `<script>window.__cookie_info = ${JSON.stringify(cookieObj)}</script>`;
175
- } catch (e) {
176
- return `<script>window.__cookie_info_error = ${e}; </script>`;
177
- }
178
- }
179
-
180
-
181
-
182
-
183
- renderJsAssets() {
184
- const fileList = this.fileList.filter(s => {
185
- return s.fileType === 'js' || s.fileUrl.endsWith('.js');
186
- });
187
- const arr = fileList.map(f => {
188
- if (f.isModule) {
189
- return `<script type="module" crossorigin src="${f.fileUrl}" ></script>`;
190
- }
191
- return `<script src="${f.fileUrl}" ></script>`;
192
- });
193
- return arr.join('\n');
194
- }
195
-
196
- renderCssAssets() {
197
- const fileList = this.fileList.filter(s => {
198
- return s.fileType === 'css' || s.fileUrl.endsWith('.css');
199
- });
200
- const fileUrlList = fileList.map(f => {
201
- return f.fileUrl;
202
- });
203
-
204
- const arr = fileUrlList.map(url => {
205
- return `<link href="${url}" rel="stylesheet" />`;
206
- });
207
- return arr.join('\n');
208
- }
209
-
210
- renderExtLocalLoaderPortByDevHeader() {
211
- const loaderPort = getExtLocalLoaderPort(this.ctx);
212
- if (loaderPort && TypeUtils.isNumeric(loaderPort)) {
213
- return `<script>window.__local_loader_port_from_dev_header = ${loaderPort}</script>`;
214
- }
215
- return '';
216
- }
217
- }
218
-
219
- function createRenderUtils(props: IRenderUtilsProps) {
220
- return new RenderUtils(props);
221
- }
222
-
223
- export { createRenderUtils };
1
+ import * as _ from 'lodash';
2
+ import * as moment from 'moment';
3
+ import { Context } from '@midwayjs/koa';
4
+ import { parseJsonObject } from './functions';
5
+ import { getExtLocalLoaderPort } from './fatcms-request';
6
+ import { TypeUtils } from '../crud-pro/utils/TypeUtils';
7
+ import { ISessionInfo } from '@/models/userSession';
8
+
9
+ // const demo = {"schema":[
10
+ // {"title":"资源配置","name":"fileList","type":"array","properties":{"fileUrl":{"label":"文件URL","component":"Input","xProps":{"hasClear":true},"width":500}}}],
11
+ // "data":{"fileList":[{"settingKey":"n1iqmu8qnc_1","fileUrl":"aa"},{"settingKey":"n1iqmu8rml_2","fileUrl":"aa"}]
12
+ // }}
13
+
14
+ interface IFileElement {
15
+ fileUrl: string;
16
+ fileType?: string;
17
+ isModule?: boolean;
18
+ }
19
+
20
+ interface IRenderUtilsProps {
21
+ ctx: Context;
22
+ package_assets: any;
23
+ workbenchInfo: any;
24
+ userInfo?: ISessionInfo;
25
+ appInfo?: any;
26
+ fatcmscsrftoken: string;
27
+ urlcsrftoken: string;
28
+ }
29
+
30
+ function parseCookie(cookieStr: string): any {
31
+ const cookies = {};
32
+
33
+ if (!cookieStr) {
34
+ return cookies;
35
+ }
36
+
37
+ // 分割每个 cookie 项
38
+ const cookieItems = cookieStr.split(';');
39
+
40
+ for (const item of cookieItems) {
41
+ // 去除空白字符
42
+ const trimmedItem = item.trim();
43
+ if (!trimmedItem) {
44
+ continue;
45
+ }
46
+
47
+ // 找到第一个等号的位置
48
+ const eqIndex = trimmedItem.indexOf('=');
49
+ if (eqIndex === -1) {
50
+ continue;
51
+ }
52
+
53
+ // 提取 key 和 value
54
+ const key = trimmedItem.substring(0, eqIndex).trim();
55
+ const value = trimmedItem.substring(eqIndex + 1).trim();
56
+
57
+ // 处理可能的引号
58
+ if (value.startsWith('"') && value.endsWith('"')) {
59
+ cookies[key] = value.slice(1, -1);
60
+ } else {
61
+ cookies[key] = value;
62
+ }
63
+ }
64
+
65
+ return cookies;
66
+ }
67
+
68
+
69
+ function isMobileUserAgent(userAgent = '') {
70
+ // 空值处理
71
+ if (!userAgent) return false;
72
+
73
+ // 转为小写统一匹配
74
+ const ua = userAgent.toLowerCase();
75
+
76
+ // 【核心】移动端关键词(覆盖主流系统)
77
+ const mobileKeywords = /android|iphone|ipod|ios|mobile|blackberry|iemobile|opera mini|windows phone|harmonyos/i;
78
+ // 【排除项】平板/PC关键词(避免误判)
79
+ const excludeKeywords = /ipad|tablet|playbook|kindle|pc|windows nt|macintosh|linux x86_64/i;
80
+
81
+ // 判断规则:包含移动端关键词 + 不包含排除项关键词
82
+ const isMatchMobile = mobileKeywords.test(ua);
83
+ const isExclude = excludeKeywords.test(ua);
84
+
85
+ return isMatchMobile && !isExclude;
86
+ }
87
+
88
+ class RenderUtils {
89
+ public readonly ctx: Context;
90
+ public readonly fileList: IFileElement[];
91
+ public readonly workbenchInfo: any;
92
+ public readonly userInfo: ISessionInfo;
93
+ public readonly appInfo: any;
94
+ public readonly cookieInfo: any;
95
+ public readonly fatcmscsrftoken: string;
96
+ public readonly urlcsrftoken: string;
97
+ public readonly isMobileUserAgent: boolean;
98
+ public readonly isMobileByQuery: boolean;
99
+
100
+ constructor(props: IRenderUtilsProps) {
101
+ this.ctx = props.ctx;
102
+ const query = props.ctx?.query || {};
103
+ const headers = props.ctx?.headers || {};
104
+ this.workbenchInfo = props.workbenchInfo || {};
105
+ this.userInfo = props.userInfo || ({} as ISessionInfo);
106
+ this.appInfo = props.appInfo || {};
107
+ this.fatcmscsrftoken = props.fatcmscsrftoken;
108
+ this.urlcsrftoken = props.urlcsrftoken;
109
+ this.cookieInfo = parseCookie(headers?.cookie);
110
+ this.isMobileUserAgent = isMobileUserAgent(headers['user-agent'] || '');
111
+ this.isMobileByQuery = `${query['__is_mobile_request__']}` === 'true'
112
+
113
+ const packageAssets = parseJsonObject(props.package_assets) || {};
114
+ const fileList = _.get(packageAssets, 'data.fileList');
115
+
116
+
117
+ if (Array.isArray(fileList)) {
118
+ this.fileList = fileList.filter(f => {
119
+ return f && f.fileUrl && typeof f.fileUrl === 'string' && f.fileUrl.length > 5; // 至少五个字符。
120
+ });
121
+ } else {
122
+ this.fileList = [];
123
+ const time = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
124
+ console.info(
125
+ time +
126
+ ' 解析fileList为空==>' +
127
+ JSON.stringify({
128
+ workbench_code: this.workbenchInfo?.workbench_code,
129
+ app_code: this.appInfo?.app_code,
130
+ })
131
+ );
132
+ }
133
+ }
134
+
135
+ renderCsrfToken() {
136
+ return `<script>window.__fatcmscsrftoken = "${this.fatcmscsrftoken}";</script>`;
137
+ }
138
+
139
+ renderUrlCsrfToken() {
140
+ return `<script>window.__fatcmsUrlCsrfToken = "${this.urlcsrftoken}";</script>`;
141
+ }
142
+
143
+ renderUserInfo() {
144
+ const userInfoClone = { ...this.userInfo };
145
+ delete userInfoClone.privateKey;
146
+ return `<script>window.__user_info = ${JSON.stringify(userInfoClone)} </script>`;
147
+ }
148
+
149
+ renderWorkbenchInfo() {
150
+ const infoPick = _.pick(this.workbenchInfo, ['id', 'workbench_code', 'workbench_name', 'workbench_domain', 'workbench_desc', 'config_type', 'config_content']);
151
+ return `<script>window.__workbench_info = ${JSON.stringify(infoPick)}</script>`;
152
+ }
153
+
154
+ renderAppInfo() {
155
+ const infoPick = _.pick(this.appInfo, ['id', 'app_code', 'app_name', 'app_type', 'app_desc', 'config_type', 'config_content']);
156
+ return `<script>window.__app_info = ${JSON.stringify(infoPick)}</script>`;
157
+ }
158
+
159
+
160
+
161
+
162
+
163
+ renderCookieInfo(keys: string) {
164
+ try {
165
+ const cookies = this.cookieInfo;
166
+ const cookieObj = {};
167
+ if (typeof keys === 'string') {
168
+ const keyArr = keys.split(',');
169
+ for (let i = 0; i < keyArr.length; i++) {
170
+ const keyName = keyArr[i];
171
+ cookieObj[keyName] = cookies[keyName];
172
+ }
173
+ }
174
+ return `<script>window.__cookie_info = ${JSON.stringify(cookieObj)}</script>`;
175
+ } catch (e) {
176
+ return `<script>window.__cookie_info_error = ${e}; </script>`;
177
+ }
178
+ }
179
+
180
+
181
+
182
+
183
+ renderJsAssets() {
184
+ const fileList = this.fileList.filter(s => {
185
+ return s.fileType === 'js' || s.fileUrl.endsWith('.js');
186
+ });
187
+ const arr = fileList.map(f => {
188
+ if (f.isModule) {
189
+ return `<script type="module" crossorigin src="${f.fileUrl}" ></script>`;
190
+ }
191
+ return `<script src="${f.fileUrl}" ></script>`;
192
+ });
193
+ return arr.join('\n');
194
+ }
195
+
196
+ renderCssAssets() {
197
+ const fileList = this.fileList.filter(s => {
198
+ return s.fileType === 'css' || s.fileUrl.endsWith('.css');
199
+ });
200
+ const fileUrlList = fileList.map(f => {
201
+ return f.fileUrl;
202
+ });
203
+
204
+ const arr = fileUrlList.map(url => {
205
+ return `<link href="${url}" rel="stylesheet" />`;
206
+ });
207
+ return arr.join('\n');
208
+ }
209
+
210
+ renderExtLocalLoaderPortByDevHeader() {
211
+ const loaderPort = getExtLocalLoaderPort(this.ctx);
212
+ if (loaderPort && TypeUtils.isNumeric(loaderPort)) {
213
+ return `<script>window.__local_loader_port_from_dev_header = ${loaderPort}</script>`;
214
+ }
215
+ return '';
216
+ }
217
+ }
218
+
219
+ function createRenderUtils(props: IRenderUtilsProps) {
220
+ return new RenderUtils(props);
221
+ }
222
+
223
+ export { createRenderUtils };
@@ -8,7 +8,11 @@ const BLACK_EQUAL_LIST = [
8
8
  '/config.json',
9
9
  '/backend/.env',
10
10
  '/.env',
11
+ '/.env.dev',
12
+ '/.env.prod',
11
13
  '/.env.local',
14
+ '/.env.staging',
15
+ '/.env.example',
12
16
  '/.env.production',
13
17
  '/.env.development',
14
18
  '/application.yml',
@@ -18,6 +22,7 @@ const BLACK_EQUAL_LIST = [
18
22
  '/config.yml',
19
23
  '/db.ini',
20
24
  '/database.yml',
25
+ '/api/.env',
21
26
  // 安全相关文件
22
27
  '/.well-known/security.txt',
23
28
  '/security.txt',
@@ -163,7 +168,7 @@ const SUSPICIOUS_USER_AGENTS = [
163
168
 
164
169
  /**
165
170
  * 安全防护中间件 - 黑名单路径拦截
166
- *
171
+ *
167
172
  * 核心职责:
168
173
  * 1. 防御恶意爬虫:拦截常见的配置文件探测请求(.env、config.json等)
169
174
  * 2. 防御漏洞扫描:阻止安全扫描工具对敏感目录的探测(.git、.aws等)
@@ -171,13 +176,13 @@ const SUSPICIOUS_USER_AGENTS = [
171
176
  * 4. 防御路径遍历:检测并阻止 ../ 等路径遍历攻击尝试
172
177
  * 5. 识别攻击工具:检测User-Agent中的sqlmap、nikto等渗透测试工具
173
178
  * 6. 性能优化:提前拦截无效请求,避免进入业务逻辑层消耗资源
174
- *
179
+ *
175
180
  * 应用场景:
176
181
  * - 公网暴露的Web应用:防止自动化工具批量扫描敏感路径
177
182
  * - 云原生部署环境:保护云服务配置文件不被探测(.aws、.env等)
178
183
  * - 多技术栈迁移:新系统可能残留旧技术栈痕迹,统一拦截避免误暴露
179
184
  * - 安全合规要求:主动防御已知的常见攻击路径,降低安全风险
180
- *
185
+ *
181
186
  * 拦截策略:
182
187
  * - User-Agent检测:识别常见扫描工具(sqlmap, nikto, nmap, metasploit等)
183
188
  * - 路径遍历检测:阻止 ../, ..\, %2e%2e%2f 等编码后的遍历尝试
@@ -185,13 +190,13 @@ const SUSPICIOUS_USER_AGENTS = [
185
190
  * - 前缀匹配:.git/、.svn/、.aws/等版本控制和云服务目录
186
191
  * - 模糊匹配:wp-admin、wp-content等WordPress相关路径
187
192
  * - 后缀匹配:.php/.jsp/.asp等脚本文件、.bak/.sql等敏感文件
188
- *
193
+ *
189
194
  * 防御能力增强:
190
195
  * - 支持30+种敏感配置文件拦截
191
196
  * - 支持50+种敏感目录前缀拦截
192
197
  * - 支持40+种危险文件后缀拦截
193
198
  * - 支持10+种常见攻击工具识别
194
- *
199
+ *
195
200
  * 注意事项:
196
201
  * 此中间件拦截的路径在实际项目中并不存在,仅为安全防护层。
197
202
  * 被拦截的请求会立即返回404,不会进入后续业务逻辑。
@@ -288,8 +293,13 @@ export class ForbiddenMiddleware implements IMiddleware<Context, NextFunction> {
288
293
  * 检查是否包含路径遍历政击特征
289
294
  */
290
295
  private hasPathTraversal(path: string): boolean {
291
- const decodedPath = decodeURIComponent(path);
292
- return SUSPICIOUS_QUERY_PATTERNS.some(pattern => decodedPath.includes(pattern));
296
+ try {
297
+ const decodedPath = decodeURIComponent(path);
298
+ return SUSPICIOUS_QUERY_PATTERNS.some(pattern => decodedPath.includes(pattern));
299
+ } catch (e) {
300
+ // URL解码失败(如包含非法编码字符),直接判定为可疑请求
301
+ return true;
302
+ }
293
303
  }
294
304
 
295
305
  /**
@@ -77,7 +77,7 @@ function handleNullRes(res: any): ICommonResult {
77
77
  * @param res
78
78
  */
79
79
  function handleArrayRes(res: any): ICommonResult {
80
- if (Array.isArray(res) && res.length) {
80
+ if (Array.isArray(res)) {
81
81
  return { success: true, data: res };
82
82
  }
83
83
  return res;
@@ -79,6 +79,7 @@ export enum ProxyUserContextEnum {
79
79
  NO_PASS = 0,
80
80
  BASIC_INFO = 1,
81
81
  SESSION_INFO = 2,
82
+ BASIC_INFO_BIZ_EXT = 3,
82
83
  }
83
84
 
84
85
  export interface IProxyApiEntity extends IApiBaseEntity {
@@ -1,19 +1,19 @@
1
- import { parseJsonObject } from "@/libs/utils/functions";
2
- import { IWorkbenchConfig, IWorkbenchEntity} from "./SystemEntities";
3
-
4
-
5
-
6
- export class WorkbenchInfoTools {
7
- private parsedConfigContent: IWorkbenchConfig = null;
8
- constructor(private readonly workbenchInfo: IWorkbenchEntity) {
9
- }
10
-
11
- public getWorkbenchConfig(): IWorkbenchConfig {
12
- if (this.parsedConfigContent) {
13
- return this.parsedConfigContent;
14
- }
15
- const configObj: IWorkbenchConfig = parseJsonObject(this.workbenchInfo?.config_content);
16
- this.parsedConfigContent = configObj || {};
17
- return this.parsedConfigContent;
18
- }
19
- }
1
+ import { parseJsonObject } from "@/libs/utils/functions";
2
+ import { IWorkbenchConfig, IWorkbenchEntity} from "./SystemEntities";
3
+
4
+
5
+
6
+ export class WorkbenchInfoTools {
7
+ private parsedConfigContent: IWorkbenchConfig = null;
8
+ constructor(private readonly workbenchInfo: IWorkbenchEntity) {
9
+ }
10
+
11
+ public getWorkbenchConfig(): IWorkbenchConfig {
12
+ if (this.parsedConfigContent) {
13
+ return this.parsedConfigContent;
14
+ }
15
+ const configObj: IWorkbenchConfig = parseJsonObject(this.workbenchInfo?.config_content);
16
+ this.parsedConfigContent = configObj || {};
17
+ return this.parsedConfigContent;
18
+ }
19
+ }
@@ -178,6 +178,9 @@ export class AuthService extends BaseService {
178
178
  if (!isEnableSuperAdmin(this.ctx)) {
179
179
  return null;
180
180
  }
181
+ if(!Array.isArray(superAdminList)) {
182
+ return null;
183
+ }
181
184
  return superAdminList.find((s)=>{
182
185
  return s.login_name === loginName;
183
186
  })