@strapi/admin 4.14.1 → 4.14.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 (378) hide show
  1. package/admin/src/content-manager/hooks/useRelation/useRelation.js +1 -0
  2. package/build/{Admin-authenticatedApp.c0c1c027.chunk.js → Admin-authenticatedApp.a16cdc37.chunk.js} +1 -1
  3. package/build/{content-manager.0d2b4a60.chunk.js → content-manager.e1e49cc9.chunk.js} +1 -1
  4. package/build/index.html +1 -1
  5. package/build/{runtime~main.6c489074.js → runtime~main.377a22d0.js} +1 -1
  6. package/dist/server/admin/server/src/bootstrap.d.ts +2 -0
  7. package/dist/server/admin/server/src/controllers/admin.d.ts +42 -0
  8. package/dist/server/admin/server/src/controllers/api-token.d.ts +10 -0
  9. package/dist/server/admin/server/src/controllers/authenticated-user.d.ts +6 -0
  10. package/dist/server/admin/server/src/controllers/authentication.d.ts +12 -0
  11. package/dist/server/admin/server/src/controllers/permission.d.ts +13 -0
  12. package/dist/server/admin/server/src/controllers/role.d.ts +43 -0
  13. package/dist/server/admin/server/src/controllers/transfer/token.d.ts +9 -0
  14. package/dist/server/admin/server/src/controllers/user.d.ts +13 -0
  15. package/dist/server/admin/server/src/destroy.d.ts +2 -0
  16. package/dist/server/admin/server/src/domain/condition/index.d.ts +56 -0
  17. package/dist/server/admin/server/src/domain/condition/index.js +53 -0
  18. package/dist/server/admin/server/src/domain/condition/index.js.map +1 -0
  19. package/dist/server/admin/server/src/domain/condition/provider.d.ts +30 -0
  20. package/dist/server/admin/server/src/domain/condition/provider.js +37 -0
  21. package/dist/server/admin/server/src/domain/condition/provider.js.map +1 -0
  22. package/dist/server/admin/server/src/index.d.ts +10 -0
  23. package/dist/server/admin/server/src/middlewares/data-transfer.d.ts +2 -0
  24. package/dist/server/admin/server/src/services/action.d.ts +9 -0
  25. package/dist/server/admin/server/src/services/auth.d.ts +42 -0
  26. package/dist/server/admin/server/src/services/condition.d.ts +2 -0
  27. package/dist/server/admin/server/src/services/content-type.d.ts +51 -0
  28. package/dist/server/admin/server/src/services/index.d.ts +61 -0
  29. package/dist/server/admin/server/src/services/metrics.d.ts +7 -0
  30. package/dist/server/admin/server/src/services/permission/engine.d.ts +15 -0
  31. package/dist/server/admin/server/src/services/permission/queries.d.ts +44 -0
  32. package/dist/server/admin/server/src/services/permission.d.ts +67 -0
  33. package/dist/server/admin/server/src/services/role.d.ts +116 -0
  34. package/dist/server/admin/server/src/services/transfer/token.d.ts +103 -0
  35. package/dist/server/admin/server/src/services/transfer/utils.d.ts +19 -0
  36. package/dist/server/admin/server/src/services/user.d.ts +96 -0
  37. package/dist/server/admin/server/src/strategies/admin.d.ts +25 -0
  38. package/dist/server/admin/server/src/strategies/api-token.d.ts +60 -0
  39. package/dist/server/admin/server/src/strategies/data-transfer.d.ts +50 -0
  40. package/dist/server/admin/server/src/validation/common-validators.d.ts +59 -0
  41. package/dist/server/admin/server/src/validation/permission.d.ts +9 -0
  42. package/dist/server/bootstrap.d.ts +2 -0
  43. package/dist/server/bootstrap.js +84 -0
  44. package/dist/server/bootstrap.js.map +1 -0
  45. package/dist/server/config/admin-actions.d.ts +33 -0
  46. package/dist/server/config/admin-actions.js +219 -0
  47. package/dist/server/config/admin-actions.js.map +1 -0
  48. package/dist/server/config/admin-conditions.d.ts +46 -0
  49. package/dist/server/config/admin-conditions.js +29 -0
  50. package/dist/server/config/admin-conditions.js.map +1 -0
  51. package/dist/server/config/email-templates/forgot-password.d.ts +6 -0
  52. package/dist/server/config/email-templates/forgot-password.js +19 -0
  53. package/dist/server/config/email-templates/forgot-password.js.map +1 -0
  54. package/dist/server/config/index.d.ts +17 -0
  55. package/dist/server/config/index.js +14 -0
  56. package/dist/server/config/index.js.map +1 -0
  57. package/dist/server/config/settings.d.ts +7 -0
  58. package/dist/server/config/settings.js +11 -0
  59. package/dist/server/config/settings.js.map +1 -0
  60. package/dist/server/content-types/Permission.d.ts +62 -0
  61. package/dist/server/content-types/Permission.js +64 -0
  62. package/dist/server/content-types/Permission.js.map +1 -0
  63. package/dist/server/content-types/Role.d.ts +57 -0
  64. package/dist/server/content-types/Role.js +59 -0
  65. package/dist/server/content-types/Role.js.map +1 -0
  66. package/dist/server/content-types/User.d.ts +106 -0
  67. package/dist/server/content-types/User.js +109 -0
  68. package/dist/server/content-types/User.js.map +1 -0
  69. package/dist/server/content-types/api-token-permission.d.ts +35 -0
  70. package/dist/server/content-types/api-token-permission.js +37 -0
  71. package/dist/server/content-types/api-token-permission.js.map +1 -0
  72. package/dist/server/content-types/api-token.d.ts +73 -0
  73. package/dist/server/content-types/api-token.js +79 -0
  74. package/dist/server/content-types/api-token.js.map +1 -0
  75. package/dist/server/content-types/index.d.ts +437 -0
  76. package/dist/server/content-types/index.js +22 -0
  77. package/dist/server/content-types/index.js.map +1 -0
  78. package/dist/server/content-types/transfer-token-permission.d.ts +35 -0
  79. package/dist/server/content-types/transfer-token-permission.js +37 -0
  80. package/dist/server/content-types/transfer-token-permission.js.map +1 -0
  81. package/dist/server/content-types/transfer-token.d.ts +65 -0
  82. package/dist/server/content-types/transfer-token.js +67 -0
  83. package/dist/server/content-types/transfer-token.js.map +1 -0
  84. package/dist/server/controllers/admin.d.ts +42 -0
  85. package/dist/server/controllers/admin.js +131 -0
  86. package/dist/server/controllers/admin.js.map +1 -0
  87. package/dist/server/controllers/api-token.d.ts +10 -0
  88. package/dist/server/controllers/api-token.js +106 -0
  89. package/dist/server/controllers/api-token.js.map +1 -0
  90. package/dist/server/controllers/authenticated-user.d.ts +6 -0
  91. package/dist/server/controllers/authenticated-user.js +41 -0
  92. package/dist/server/controllers/authenticated-user.js.map +1 -0
  93. package/dist/server/controllers/authentication.d.ts +12 -0
  94. package/dist/server/controllers/authentication.js +130 -0
  95. package/dist/server/controllers/authentication.js.map +1 -0
  96. package/dist/server/controllers/content-api.d.ts +5 -0
  97. package/dist/server/controllers/content-api.js +13 -0
  98. package/dist/server/controllers/content-api.js.map +1 -0
  99. package/dist/server/controllers/formatters/conditions.d.ts +3 -0
  100. package/dist/server/controllers/formatters/conditions.js +9 -0
  101. package/dist/server/controllers/formatters/conditions.js.map +1 -0
  102. package/dist/server/controllers/formatters/format-actions-by-sections.d.ts +7 -0
  103. package/dist/server/controllers/formatters/format-actions-by-sections.js +36 -0
  104. package/dist/server/controllers/formatters/format-actions-by-sections.js.map +1 -0
  105. package/dist/server/controllers/formatters/index.d.ts +2 -0
  106. package/dist/server/controllers/formatters/index.js +11 -0
  107. package/dist/server/controllers/formatters/index.js.map +1 -0
  108. package/dist/server/controllers/index.d.ts +68 -0
  109. package/dist/server/controllers/index.js +51 -0
  110. package/dist/server/controllers/index.js.map +1 -0
  111. package/dist/server/controllers/permission.d.ts +13 -0
  112. package/dist/server/controllers/permission.js +38 -0
  113. package/dist/server/controllers/permission.js.map +1 -0
  114. package/dist/server/controllers/role.d.ts +43 -0
  115. package/dist/server/controllers/role.js +148 -0
  116. package/dist/server/controllers/role.js.map +1 -0
  117. package/dist/server/controllers/transfer/index.d.ts +4 -0
  118. package/dist/server/controllers/transfer/index.js +14 -0
  119. package/dist/server/controllers/transfer/index.js.map +1 -0
  120. package/dist/server/controllers/transfer/runner.d.ts +6 -0
  121. package/dist/server/controllers/transfer/runner.js +25 -0
  122. package/dist/server/controllers/transfer/runner.js.map +1 -0
  123. package/dist/server/controllers/transfer/token.d.ts +9 -0
  124. package/dist/server/controllers/transfer/token.js +100 -0
  125. package/dist/server/controllers/transfer/token.js.map +1 -0
  126. package/dist/server/controllers/user.d.ts +13 -0
  127. package/dist/server/controllers/user.js +105 -0
  128. package/dist/server/controllers/user.js.map +1 -0
  129. package/dist/server/controllers/webhooks.d.ts +10 -0
  130. package/dist/server/controllers/webhooks.js +100 -0
  131. package/dist/server/controllers/webhooks.js.map +1 -0
  132. package/dist/server/destroy.d.ts +2 -0
  133. package/dist/server/destroy.js +9 -0
  134. package/dist/server/destroy.js.map +1 -0
  135. package/dist/server/domain/action/index.d.ts +33 -0
  136. package/dist/server/domain/action/index.js +98 -0
  137. package/dist/server/domain/action/index.js.map +1 -0
  138. package/dist/server/domain/action/provider.d.ts +38 -0
  139. package/dist/server/domain/action/provider.js +66 -0
  140. package/dist/server/domain/action/provider.js.map +1 -0
  141. package/dist/server/domain/condition/index.d.ts +53 -0
  142. package/dist/server/domain/condition/index.js +56 -0
  143. package/dist/server/domain/condition/index.js.map +1 -0
  144. package/dist/server/domain/condition/provider.d.ts +30 -0
  145. package/dist/server/domain/condition/provider.js +37 -0
  146. package/dist/server/domain/condition/provider.js.map +1 -0
  147. package/dist/server/domain/permission/index.d.ts +77 -0
  148. package/dist/server/domain/permission/index.js +119 -0
  149. package/dist/server/domain/permission/index.js.map +1 -0
  150. package/dist/server/domain/user.d.ts +32 -0
  151. package/dist/server/domain/user.js +28 -0
  152. package/dist/server/domain/user.js.map +1 -0
  153. package/dist/server/index.d.ts +10 -0
  154. package/dist/server/index.js +27 -0
  155. package/dist/server/index.js.map +1 -0
  156. package/dist/server/middlewares/data-transfer.d.ts +2 -0
  157. package/dist/server/middlewares/data-transfer.js +21 -0
  158. package/dist/server/middlewares/data-transfer.js.map +1 -0
  159. package/dist/server/middlewares/index.d.ts +9 -0
  160. package/dist/server/middlewares/index.js +17 -0
  161. package/dist/server/middlewares/index.js.map +1 -0
  162. package/dist/server/middlewares/rateLimit.d.ts +5 -0
  163. package/dist/server/middlewares/rateLimit.js +42 -0
  164. package/dist/server/middlewares/rateLimit.js.map +1 -0
  165. package/dist/server/policies/hasPermissions.d.ts +6 -0
  166. package/dist/server/policies/hasPermissions.js +38 -0
  167. package/dist/server/policies/hasPermissions.js.map +1 -0
  168. package/dist/server/policies/index.d.ts +14 -0
  169. package/dist/server/policies/index.js +10 -0
  170. package/dist/server/policies/index.js.map +1 -0
  171. package/dist/server/policies/isAuthenticatedAdmin.d.ts +2 -0
  172. package/dist/server/policies/isAuthenticatedAdmin.js +6 -0
  173. package/dist/server/policies/isAuthenticatedAdmin.js.map +1 -0
  174. package/dist/server/policies/isTelemetryEnabled.d.ts +10 -0
  175. package/dist/server/policies/isTelemetryEnabled.js +18 -0
  176. package/dist/server/policies/isTelemetryEnabled.js.map +1 -0
  177. package/dist/server/register.d.ts +2 -0
  178. package/dist/server/register.js +18 -0
  179. package/dist/server/register.js.map +1 -0
  180. package/dist/server/routes/admin.d.ts +23 -0
  181. package/dist/server/routes/admin.js +72 -0
  182. package/dist/server/routes/admin.js.map +1 -0
  183. package/dist/server/routes/api-tokens.d.ts +14 -0
  184. package/dist/server/routes/api-tokens.js +71 -0
  185. package/dist/server/routes/api-tokens.js.map +1 -0
  186. package/dist/server/routes/authentication.d.ts +29 -0
  187. package/dist/server/routes/authentication.js +58 -0
  188. package/dist/server/routes/authentication.js.map +1 -0
  189. package/dist/server/routes/content-api.d.ts +9 -0
  190. package/dist/server/routes/content-api.js +21 -0
  191. package/dist/server/routes/content-api.js.map +1 -0
  192. package/dist/server/routes/index.d.ts +66 -0
  193. package/dist/server/routes/index.js +32 -0
  194. package/dist/server/routes/index.js.map +1 -0
  195. package/dist/server/routes/permissions.d.ts +9 -0
  196. package/dist/server/routes/permissions.js +21 -0
  197. package/dist/server/routes/permissions.js.map +1 -0
  198. package/dist/server/routes/roles.d.ts +14 -0
  199. package/dist/server/routes/roles.js +108 -0
  200. package/dist/server/routes/roles.js.map +1 -0
  201. package/dist/server/routes/serve-admin-panel.d.ts +5 -0
  202. package/dist/server/routes/serve-admin-panel.js +65 -0
  203. package/dist/server/routes/serve-admin-panel.js.map +1 -0
  204. package/dist/server/routes/transfer.d.ts +55 -0
  205. package/dist/server/routes/transfer.js +105 -0
  206. package/dist/server/routes/transfer.js.map +1 -0
  207. package/dist/server/routes/users.d.ts +14 -0
  208. package/dist/server/routes/users.js +89 -0
  209. package/dist/server/routes/users.js.map +1 -0
  210. package/dist/server/routes/webhooks.d.ts +14 -0
  211. package/dist/server/routes/webhooks.js +82 -0
  212. package/dist/server/routes/webhooks.js.map +1 -0
  213. package/dist/server/services/action.d.ts +9 -0
  214. package/dist/server/services/action.js +29 -0
  215. package/dist/server/services/action.js.map +1 -0
  216. package/dist/server/services/api-token.d.ts +102 -0
  217. package/dist/server/services/api-token.js +378 -0
  218. package/dist/server/services/api-token.js.map +1 -0
  219. package/dist/server/services/auth.d.ts +42 -0
  220. package/dist/server/services/auth.js +98 -0
  221. package/dist/server/services/auth.js.map +1 -0
  222. package/dist/server/services/condition.d.ts +2 -0
  223. package/dist/server/services/condition.js +11 -0
  224. package/dist/server/services/condition.js.map +1 -0
  225. package/dist/server/services/constants.d.ts +33 -0
  226. package/dist/server/services/constants.js +37 -0
  227. package/dist/server/services/constants.js.map +1 -0
  228. package/dist/server/services/content-type.d.ts +51 -0
  229. package/dist/server/services/content-type.js +158 -0
  230. package/dist/server/services/content-type.js.map +1 -0
  231. package/dist/server/services/index.d.ts +61 -0
  232. package/dist/server/services/index.js +57 -0
  233. package/dist/server/services/index.js.map +1 -0
  234. package/dist/server/services/metrics.d.ts +7 -0
  235. package/dist/server/services/metrics.js +37 -0
  236. package/dist/server/services/metrics.js.map +1 -0
  237. package/dist/server/services/passport/local-strategy.d.ts +3 -0
  238. package/dist/server/services/passport/local-strategy.js +28 -0
  239. package/dist/server/services/passport/local-strategy.js.map +1 -0
  240. package/dist/server/services/passport.d.ts +7 -0
  241. package/dist/server/services/passport.js +40 -0
  242. package/dist/server/services/passport.js.map +1 -0
  243. package/dist/server/services/permission/engine.d.ts +15 -0
  244. package/dist/server/services/permission/engine.js +67 -0
  245. package/dist/server/services/permission/engine.js.map +1 -0
  246. package/dist/server/services/permission/permissions-manager/index.d.ts +16 -0
  247. package/dist/server/services/permission/permissions-manager/index.js +48 -0
  248. package/dist/server/services/permission/permissions-manager/index.js.map +1 -0
  249. package/dist/server/services/permission/permissions-manager/query-builders.d.ts +3 -0
  250. package/dist/server/services/permission/permissions-manager/query-builders.js +66 -0
  251. package/dist/server/services/permission/permissions-manager/query-builders.js.map +1 -0
  252. package/dist/server/services/permission/permissions-manager/sanitize.d.ts +6 -0
  253. package/dist/server/services/permission/permissions-manager/sanitize.js +184 -0
  254. package/dist/server/services/permission/permissions-manager/sanitize.js.map +1 -0
  255. package/dist/server/services/permission/permissions-manager/validate.d.ts +5 -0
  256. package/dist/server/services/permission/permissions-manager/validate.js +134 -0
  257. package/dist/server/services/permission/permissions-manager/validate.js.map +1 -0
  258. package/dist/server/services/permission/queries.d.ts +44 -0
  259. package/dist/server/services/permission/queries.js +159 -0
  260. package/dist/server/services/permission/queries.js.map +1 -0
  261. package/dist/server/services/permission/sections-builder/builder.d.ts +39 -0
  262. package/dist/server/services/permission/sections-builder/builder.js +75 -0
  263. package/dist/server/services/permission/sections-builder/builder.js.map +1 -0
  264. package/dist/server/services/permission/sections-builder/handlers.d.ts +44 -0
  265. package/dist/server/services/permission/sections-builder/handlers.js +124 -0
  266. package/dist/server/services/permission/sections-builder/handlers.js.map +1 -0
  267. package/dist/server/services/permission/sections-builder/index.d.ts +8 -0
  268. package/dist/server/services/permission/sections-builder/index.js +39 -0
  269. package/dist/server/services/permission/sections-builder/index.js.map +1 -0
  270. package/dist/server/services/permission/sections-builder/section.d.ts +38 -0
  271. package/dist/server/services/permission/sections-builder/section.js +56 -0
  272. package/dist/server/services/permission/sections-builder/section.js.map +1 -0
  273. package/dist/server/services/permission/sections-builder/utils.d.ts +12 -0
  274. package/dist/server/services/permission/sections-builder/utils.js +23 -0
  275. package/dist/server/services/permission/sections-builder/utils.js.map +1 -0
  276. package/dist/server/services/permission.d.ts +67 -0
  277. package/dist/server/services/permission.js +33 -0
  278. package/dist/server/services/permission.js.map +1 -0
  279. package/dist/server/services/project-settings.d.ts +5 -0
  280. package/dist/server/services/project-settings.js +139 -0
  281. package/dist/server/services/project-settings.js.map +1 -0
  282. package/dist/server/services/role.d.ts +116 -0
  283. package/dist/server/services/role.js +382 -0
  284. package/dist/server/services/role.js.map +1 -0
  285. package/dist/server/services/token.d.ts +35 -0
  286. package/dist/server/services/token.js +58 -0
  287. package/dist/server/services/token.js.map +1 -0
  288. package/dist/server/services/transfer/index.d.ts +4 -0
  289. package/dist/server/services/transfer/index.js +33 -0
  290. package/dist/server/services/transfer/index.js.map +1 -0
  291. package/dist/server/services/transfer/permission.d.ts +6 -0
  292. package/dist/server/services/transfer/permission.js +20 -0
  293. package/dist/server/services/transfer/permission.js.map +1 -0
  294. package/dist/server/services/transfer/token.d.ts +84 -0
  295. package/dist/server/services/transfer/token.js +273 -0
  296. package/dist/server/services/transfer/token.js.map +1 -0
  297. package/dist/server/services/transfer/utils.d.ts +13 -0
  298. package/dist/server/services/transfer/utils.js +29 -0
  299. package/dist/server/services/transfer/utils.js.map +1 -0
  300. package/dist/server/services/user.d.ts +96 -0
  301. package/dist/server/services/user.js +311 -0
  302. package/dist/server/services/user.js.map +1 -0
  303. package/dist/server/strategies/admin.d.ts +25 -0
  304. package/dist/server/strategies/admin.js +44 -0
  305. package/dist/server/strategies/admin.js.map +1 -0
  306. package/dist/server/strategies/api-token.d.ts +60 -0
  307. package/dist/server/strategies/api-token.js +121 -0
  308. package/dist/server/strategies/api-token.js.map +1 -0
  309. package/dist/server/strategies/data-transfer.d.ts +66 -0
  310. package/dist/server/strategies/data-transfer.js +94 -0
  311. package/dist/server/strategies/data-transfer.js.map +1 -0
  312. package/dist/server/strategies/index.d.ts +17 -0
  313. package/dist/server/strategies/index.js +27 -0
  314. package/dist/server/strategies/index.js.map +1 -0
  315. package/dist/server/types/src/types/utils/object.d.ts +58 -0
  316. package/dist/server/types/src/types/utils/object.js +3 -0
  317. package/dist/server/types/src/types/utils/object.js.map +1 -0
  318. package/dist/server/utils/index.d.ts +1 -0
  319. package/dist/server/utils/index.js +9 -0
  320. package/dist/server/utils/index.js.map +1 -0
  321. package/dist/server/utils/types.d.ts +14 -0
  322. package/dist/server/utils/types.js +3 -0
  323. package/dist/server/utils/types.js.map +1 -0
  324. package/dist/server/validation/action-provider.d.ts +5 -0
  325. package/dist/server/validation/action-provider.js +58 -0
  326. package/dist/server/validation/action-provider.js.map +1 -0
  327. package/dist/server/validation/api-tokens.d.ts +7 -0
  328. package/dist/server/validation/api-tokens.js +36 -0
  329. package/dist/server/validation/api-tokens.js.map +1 -0
  330. package/dist/server/validation/authentication/forgot-password.d.ts +2 -0
  331. package/dist/server/validation/authentication/forgot-password.js +16 -0
  332. package/dist/server/validation/authentication/forgot-password.js.map +1 -0
  333. package/dist/server/validation/authentication/index.d.ts +5 -0
  334. package/dist/server/validation/authentication/index.js +17 -0
  335. package/dist/server/validation/authentication/index.js.map +1 -0
  336. package/dist/server/validation/authentication/register.d.ts +9 -0
  337. package/dist/server/validation/authentication/register.js +49 -0
  338. package/dist/server/validation/authentication/register.js.map +1 -0
  339. package/dist/server/validation/authentication/renew-token.d.ts +2 -0
  340. package/dist/server/validation/authentication/renew-token.js +6 -0
  341. package/dist/server/validation/authentication/renew-token.js.map +1 -0
  342. package/dist/server/validation/authentication/reset-password.d.ts +2 -0
  343. package/dist/server/validation/authentication/reset-password.js +17 -0
  344. package/dist/server/validation/authentication/reset-password.js.map +1 -0
  345. package/dist/server/validation/common-functions/check-fields-are-correctly-nested.d.ts +2 -0
  346. package/dist/server/validation/common-functions/check-fields-are-correctly-nested.js +26 -0
  347. package/dist/server/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -0
  348. package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.d.ts +2 -0
  349. package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.js +18 -0
  350. package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -0
  351. package/dist/server/validation/common-functions/index.d.ts +3 -0
  352. package/dist/server/validation/common-functions/index.js +11 -0
  353. package/dist/server/validation/common-functions/index.js.map +1 -0
  354. package/dist/server/validation/common-validators.d.ts +59 -0
  355. package/dist/server/validation/common-validators.js +162 -0
  356. package/dist/server/validation/common-validators.js.map +1 -0
  357. package/dist/server/validation/permission.d.ts +9 -0
  358. package/dist/server/validation/permission.js +46 -0
  359. package/dist/server/validation/permission.js.map +1 -0
  360. package/dist/server/validation/policies/hasPermissions.d.ts +5 -0
  361. package/dist/server/validation/policies/hasPermissions.js +29 -0
  362. package/dist/server/validation/policies/hasPermissions.js.map +1 -0
  363. package/dist/server/validation/project-settings.d.ts +9 -0
  364. package/dist/server/validation/project-settings.js +44 -0
  365. package/dist/server/validation/project-settings.js.map +1 -0
  366. package/dist/server/validation/role.d.ts +11 -0
  367. package/dist/server/validation/role.js +62 -0
  368. package/dist/server/validation/role.js.map +1 -0
  369. package/dist/server/validation/transfer/index.d.ts +1 -0
  370. package/dist/server/validation/transfer/index.js +9 -0
  371. package/dist/server/validation/transfer/index.js.map +1 -0
  372. package/dist/server/validation/transfer/token.d.ts +7 -0
  373. package/dist/server/validation/transfer/token.js +46 -0
  374. package/dist/server/validation/transfer/token.js.map +1 -0
  375. package/dist/server/validation/user.d.ts +117 -0
  376. package/dist/server/validation/user.js +69 -0
  377. package/dist/server/validation/user.js.map +1 -0
  378. package/package.json +9 -9
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@strapi/utils");
7
+ const _1 = __importDefault(require("."));
8
+ /**
9
+ * @typedef ConditionProviderOverride
10
+ * @property {function(CreateConditionPayload)} register
11
+ * @property {function(attributes CreateConditionPayload[]): Promise<this>} registerMany
12
+ */
13
+ /**
14
+ * Creates a new instance of a condition provider
15
+ * @return {Provider & ConditionProviderOverride}
16
+ */
17
+ const createConditionProvider = () => {
18
+ const provider = (0, utils_1.providerFactory)();
19
+ return {
20
+ ...provider,
21
+ async register(conditionAttributes) {
22
+ if (strapi.isLoaded) {
23
+ throw new Error(`You can't register new conditions outside of the bootstrap function.`);
24
+ }
25
+ const condition = _1.default.create(conditionAttributes);
26
+ return provider.register(condition.id, condition);
27
+ },
28
+ async registerMany(conditionsAttributes) {
29
+ for (const attributes of conditionsAttributes) {
30
+ await this.register(attributes);
31
+ }
32
+ return this;
33
+ },
34
+ };
35
+ };
36
+ exports.default = createConditionProvider;
37
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../server/src/domain/condition/provider.ts"],"names":[],"mappings":";;;;;AAAA,yCAAgD;AAChD,yCAAuB;AAGvB;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,QAAQ,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEnC,OAAO;QACL,GAAG,QAAQ;QAEX,KAAK,CAAC,QAAQ,CAAC,mBAA2C;YACxD,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;aACzF;YAED,MAAM,SAAS,GAAG,UAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAErD,OAAO,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,oBAA8C;YAC/D,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE;gBAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aACjC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,uBAAuB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /// <reference types="lodash" />
2
+ import { Utils } from '@strapi/types';
3
+ export type Permission = {
4
+ id?: string;
5
+ role?: string;
6
+ action: string;
7
+ actionParameters: object;
8
+ properties: object;
9
+ conditions: string[];
10
+ subject: string | null;
11
+ };
12
+ export declare const permissionFields: string[];
13
+ export declare const sanitizedPermissionFields: string[];
14
+ export declare const sanitizePermissionFields: import("lodash/fp").LodashPick2x1;
15
+ /**
16
+ * Returns a new permission with the given condition
17
+ * @param condition - The condition to add
18
+ * @param permission - The permission on which we want to add the condition
19
+ * @return
20
+ */
21
+ export declare const addCondition: import("lodash").CurriedFunction2<string, Permission, Permission>;
22
+ /**
23
+ * Returns a new permission without the given condition
24
+ * @param condition - The condition to remove
25
+ * @param permission - The permission on which we want to remove the condition
26
+ */
27
+ export declare const removeCondition: import("lodash").CurriedFunction2<string, Permission, Permission>;
28
+ /**
29
+ * Gets a property or a part of a property from a permission.
30
+ * @param property - The property to get
31
+ * @param permission - The permission on which we want to access the property
32
+ */
33
+ export declare const getProperty: import("lodash").CurriedFunction2<string, Permission, Permission>;
34
+ /**
35
+ * Set a value for a given property on a new permission object
36
+ * @param property - The name of the property
37
+ * @param value - The value of the property
38
+ * @param permission - The permission on which we want to set the property
39
+ */
40
+ export declare const setProperty: (property: string, value: unknown, permission: Permission) => Permission;
41
+ /**
42
+ * Returns a new permission without the given property name set
43
+ * @param property - The name of the property to delete
44
+ * @param permission - The permission on which we want to remove the property
45
+ * @return {Permission}
46
+ */
47
+ export declare const deleteProperty: (property: string, permission: Permission) => Partial<Permission>;
48
+ /**
49
+ * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields
50
+ * @param attributes
51
+ */
52
+ export declare const create: (attributes: Utils.Object.PartialBy<Permission, 'actionParameters' | 'conditions' | 'properties' | 'subject'>) => Permission;
53
+ /**
54
+ * Using the given condition provider, check and remove invalid condition from the permission's condition array.
55
+ * @param provider - The condition provider used to do the checks
56
+ * @param permission - The condition to sanitize
57
+ */
58
+ export declare const sanitizeConditions: import("lodash").CurriedFunction2<import("@strapi/utils/dist/provider-factory").Provider, Permission, Permission>;
59
+ /**
60
+ * Transform raw attributes into valid permissions using the create domain function.
61
+ * @param payload - Can either be a single object of attributes or an array of those objects.
62
+ */
63
+ export declare const toPermission: (payload: object | object[]) => Permission;
64
+ declare const _default: {
65
+ addCondition: import("lodash").CurriedFunction2<string, Permission, Permission>;
66
+ removeCondition: import("lodash").CurriedFunction2<string, Permission, Permission>;
67
+ create: (attributes: Utils.Object.PartialBy<Permission, "actionParameters" | "subject" | "properties" | "conditions">) => Permission;
68
+ deleteProperty: (property: string, permission: Permission) => Partial<Permission>;
69
+ permissionFields: string[];
70
+ getProperty: import("lodash").CurriedFunction2<string, Permission, Permission>;
71
+ sanitizedPermissionFields: string[];
72
+ sanitizeConditions: import("lodash").CurriedFunction2<import("@strapi/utils/dist/provider-factory").Provider, Permission, Permission>;
73
+ sanitizePermissionFields: import("lodash/fp").LodashPick2x1;
74
+ setProperty: (property: string, value: unknown, permission: Permission) => Permission;
75
+ toPermission: (payload: object | object[]) => Permission;
76
+ };
77
+ export default _default;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPermission = exports.sanitizeConditions = exports.create = exports.deleteProperty = exports.setProperty = exports.getProperty = exports.removeCondition = exports.addCondition = exports.sanitizePermissionFields = exports.sanitizedPermissionFields = exports.permissionFields = void 0;
4
+ const fp_1 = require("lodash/fp");
5
+ exports.permissionFields = [
6
+ 'id',
7
+ 'action',
8
+ 'actionParameters',
9
+ 'subject',
10
+ 'properties',
11
+ 'conditions',
12
+ 'role',
13
+ ];
14
+ exports.sanitizedPermissionFields = [
15
+ 'id',
16
+ 'action',
17
+ 'actionParameters',
18
+ 'subject',
19
+ 'properties',
20
+ 'conditions',
21
+ ];
22
+ exports.sanitizePermissionFields = (0, fp_1.pick)(exports.sanitizedPermissionFields);
23
+ /**
24
+ * Creates a permission with default values
25
+ */
26
+ const getDefaultPermission = () => ({
27
+ actionParameters: {},
28
+ conditions: [],
29
+ properties: {},
30
+ subject: null,
31
+ });
32
+ /**
33
+ * Returns a new permission with the given condition
34
+ * @param condition - The condition to add
35
+ * @param permission - The permission on which we want to add the condition
36
+ * @return
37
+ */
38
+ exports.addCondition = (0, fp_1.curry)((condition, permission) => {
39
+ const { conditions } = permission;
40
+ const newConditions = Array.isArray(conditions)
41
+ ? (0, fp_1.uniq)(conditions.concat(condition))
42
+ : [condition];
43
+ return (0, fp_1.set)('conditions', newConditions, permission);
44
+ });
45
+ /**
46
+ * Returns a new permission without the given condition
47
+ * @param condition - The condition to remove
48
+ * @param permission - The permission on which we want to remove the condition
49
+ */
50
+ exports.removeCondition = (0, fp_1.curry)((condition, permission) => {
51
+ return (0, fp_1.set)('conditions', (0, fp_1.remove)((0, fp_1.eq)(condition), permission.conditions), permission);
52
+ });
53
+ /**
54
+ * Gets a property or a part of a property from a permission.
55
+ * @param property - The property to get
56
+ * @param permission - The permission on which we want to access the property
57
+ */
58
+ exports.getProperty = (0, fp_1.curry)((property, permission) => (0, fp_1.get)(`properties.${property}`, permission));
59
+ /**
60
+ * Set a value for a given property on a new permission object
61
+ * @param property - The name of the property
62
+ * @param value - The value of the property
63
+ * @param permission - The permission on which we want to set the property
64
+ */
65
+ const setProperty = (property, value, permission) => {
66
+ return (0, fp_1.set)(`properties.${property}`, value, permission);
67
+ };
68
+ exports.setProperty = setProperty;
69
+ /**
70
+ * Returns a new permission without the given property name set
71
+ * @param property - The name of the property to delete
72
+ * @param permission - The permission on which we want to remove the property
73
+ * @return {Permission}
74
+ */
75
+ const deleteProperty = (property, permission) => (0, fp_1.omit)(`properties.${property}`, permission);
76
+ exports.deleteProperty = deleteProperty;
77
+ /**
78
+ * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields
79
+ * @param attributes
80
+ */
81
+ const create = (attributes) => {
82
+ return (0, fp_1.pipe)((0, fp_1.pick)(exports.permissionFields), (0, fp_1.merge)(getDefaultPermission()))(attributes);
83
+ };
84
+ exports.create = create;
85
+ /**
86
+ * Using the given condition provider, check and remove invalid condition from the permission's condition array.
87
+ * @param provider - The condition provider used to do the checks
88
+ * @param permission - The condition to sanitize
89
+ */
90
+ exports.sanitizeConditions = (0, fp_1.curry)((provider, permission) => {
91
+ if (!(0, fp_1.isArray)(permission.conditions)) {
92
+ return permission;
93
+ }
94
+ return permission.conditions
95
+ .filter((condition) => !provider.has(condition))
96
+ .reduce((perm, condition) => (0, exports.removeCondition)(condition, perm), permission);
97
+ });
98
+ /**
99
+ * Transform raw attributes into valid permissions using the create domain function.
100
+ * @param payload - Can either be a single object of attributes or an array of those objects.
101
+ */
102
+ const toPermission = (payload) =>
103
+ // @ts-expect-error
104
+ (0, fp_1.isArray)(payload) ? (0, fp_1.map)(exports.create, payload) : (0, exports.create)(payload);
105
+ exports.toPermission = toPermission;
106
+ exports.default = {
107
+ addCondition: exports.addCondition,
108
+ removeCondition: exports.removeCondition,
109
+ create: exports.create,
110
+ deleteProperty: exports.deleteProperty,
111
+ permissionFields: exports.permissionFields,
112
+ getProperty: exports.getProperty,
113
+ sanitizedPermissionFields: exports.sanitizedPermissionFields,
114
+ sanitizeConditions: exports.sanitizeConditions,
115
+ sanitizePermissionFields: exports.sanitizePermissionFields,
116
+ setProperty: exports.setProperty,
117
+ toPermission: exports.toPermission,
118
+ };
119
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/src/domain/permission/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type AdminUser = {
2
+ id: string | number;
3
+ firstname: string;
4
+ lastname: string;
5
+ username: string;
6
+ [key: string]: any;
7
+ };
8
+ export type AdminRole = {
9
+ id: string | number;
10
+ code: string;
11
+ [key: string]: any;
12
+ };
13
+ /**
14
+ * Create a new user model by merging default and specified attributes
15
+ * @param attributes A partial user object
16
+ */
17
+ export declare function createUser(attributes: Partial<AdminUser>): {
18
+ id?: string | number | undefined;
19
+ firstname?: string | undefined;
20
+ lastname?: string | undefined;
21
+ username: string | null;
22
+ roles: never[];
23
+ isActive: boolean;
24
+ };
25
+ export declare const hasSuperAdminRole: (user: AdminUser) => boolean;
26
+ export declare const ADMIN_USER_ALLOWED_FIELDS: string[];
27
+ declare const _default: {
28
+ createUser: typeof createUser;
29
+ hasSuperAdminRole: (user: AdminUser) => boolean;
30
+ ADMIN_USER_ALLOWED_FIELDS: string[];
31
+ };
32
+ export default _default;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ADMIN_USER_ALLOWED_FIELDS = exports.hasSuperAdminRole = exports.createUser = void 0;
4
+ const constants_1 = require("../services/constants");
5
+ /**
6
+ * Create a new user model by merging default and specified attributes
7
+ * @param attributes A partial user object
8
+ */
9
+ function createUser(attributes) {
10
+ return {
11
+ roles: [],
12
+ isActive: false,
13
+ username: null,
14
+ ...attributes,
15
+ };
16
+ }
17
+ exports.createUser = createUser;
18
+ const hasSuperAdminRole = (user) => {
19
+ return user.roles.filter((role) => role.code === constants_1.SUPER_ADMIN_CODE).length > 0;
20
+ };
21
+ exports.hasSuperAdminRole = hasSuperAdminRole;
22
+ exports.ADMIN_USER_ALLOWED_FIELDS = ['id', 'firstname', 'lastname', 'username'];
23
+ exports.default = {
24
+ createUser,
25
+ hasSuperAdminRole: exports.hasSuperAdminRole,
26
+ ADMIN_USER_ALLOWED_FIELDS: exports.ADMIN_USER_ALLOWED_FIELDS,
27
+ };
28
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../server/src/domain/user.ts"],"names":[],"mappings":";;;AAAA,qDAAyD;AAkBzD;;;GAGG;AACH,SAAgB,UAAU,CAAC,UAA8B;IACvD,OAAO;QACL,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,GAAG,UAAU;KACd,CAAC;AACJ,CAAC;AAPD,gCAOC;AAEM,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAE,EAAE;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,4BAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEW,QAAA,yBAAyB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAErF,kBAAe;IACb,UAAU;IACV,iBAAiB,EAAjB,yBAAiB;IACjB,yBAAyB,EAAzB,iCAAyB;CAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { default as bootstrap } from './bootstrap';
2
+ export { default as register } from './register';
3
+ export { default as destroy } from './destroy';
4
+ export { default as config } from './config';
5
+ export { default as policies } from './policies';
6
+ export { default as routes } from './routes';
7
+ export { default as services } from './services';
8
+ export { default as controllers } from './controllers';
9
+ export { default as contentTypes } from './content-types';
10
+ export { default as middlewares } from './middlewares';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.middlewares = exports.contentTypes = exports.controllers = exports.services = exports.routes = exports.policies = exports.config = exports.destroy = exports.register = exports.bootstrap = void 0;
7
+ var bootstrap_1 = require("./bootstrap");
8
+ Object.defineProperty(exports, "bootstrap", { enumerable: true, get: function () { return __importDefault(bootstrap_1).default; } });
9
+ var register_1 = require("./register");
10
+ Object.defineProperty(exports, "register", { enumerable: true, get: function () { return __importDefault(register_1).default; } });
11
+ var destroy_1 = require("./destroy");
12
+ Object.defineProperty(exports, "destroy", { enumerable: true, get: function () { return __importDefault(destroy_1).default; } });
13
+ var config_1 = require("./config");
14
+ Object.defineProperty(exports, "config", { enumerable: true, get: function () { return __importDefault(config_1).default; } });
15
+ var policies_1 = require("./policies");
16
+ Object.defineProperty(exports, "policies", { enumerable: true, get: function () { return __importDefault(policies_1).default; } });
17
+ var routes_1 = require("./routes");
18
+ Object.defineProperty(exports, "routes", { enumerable: true, get: function () { return __importDefault(routes_1).default; } });
19
+ var services_1 = require("./services");
20
+ Object.defineProperty(exports, "services", { enumerable: true, get: function () { return __importDefault(services_1).default; } });
21
+ var controllers_1 = require("./controllers");
22
+ Object.defineProperty(exports, "controllers", { enumerable: true, get: function () { return __importDefault(controllers_1).default; } });
23
+ var content_types_1 = require("./content-types");
24
+ Object.defineProperty(exports, "contentTypes", { enumerable: true, get: function () { return __importDefault(content_types_1).default; } });
25
+ var middlewares_1 = require("./middlewares");
26
+ Object.defineProperty(exports, "middlewares", { enumerable: true, get: function () { return __importDefault(middlewares_1).default; } });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/src/index.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAE3B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,iDAA0D;AAAjD,8HAAA,OAAO,OAAgB;AAChC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe"}
@@ -0,0 +1,2 @@
1
+ declare const _default: () => (ctx: any, next: any) => Promise<any>;
2
+ export default _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../utils");
4
+ exports.default = () => async (ctx, next) => {
5
+ const transferUtils = (0, utils_1.getService)('transfer').utils;
6
+ const { hasValidTokenSalt, isDataTransferEnabled, isDisabledFromEnv } = transferUtils;
7
+ if (isDataTransferEnabled()) {
8
+ return next();
9
+ }
10
+ if (!hasValidTokenSalt()) {
11
+ return ctx.notImplemented('The server configuration for data transfer is invalid. Please contact your server administrator.', {
12
+ code: 'INVALID_TOKEN_SALT',
13
+ });
14
+ }
15
+ if (isDisabledFromEnv()) {
16
+ return ctx.notFound();
17
+ }
18
+ // This should never happen as long as we're handling individual scenarios above
19
+ throw new Error('Unexpected error while trying to access a data transfer route');
20
+ };
21
+ //# sourceMappingURL=data-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-transfer.js","sourceRoot":"","sources":["../../../server/src/middlewares/data-transfer.ts"],"names":[],"mappings":";;AAAA,oCAAsC;AAEtC,kBAAe,GAAG,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;IACjD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC,KAAK,CAAC;IAEnD,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC;IAEtF,IAAI,qBAAqB,EAAE,EAAE;QAC3B,OAAO,IAAI,EAAE,CAAC;KACf;IAED,IAAI,CAAC,iBAAiB,EAAE,EAAE;QACxB,OAAO,GAAG,CAAC,cAAc,CACvB,kGAAkG,EAClG;YACE,IAAI,EAAE,oBAAoB;SAC3B,CACF,CAAC;KACH;IAED,IAAI,iBAAiB,EAAE,EAAE;QACvB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;KACvB;IAED,gFAAgF;IAChF,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACnF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { default as rateLimit } from './rateLimit';
2
+ export { default as dataTransfer } from './data-transfer';
3
+ declare const _default: {
4
+ rateLimit: (config: any, { strapi }: {
5
+ strapi: import("@strapi/types").Strapi;
6
+ }) => (ctx: any, next: any) => Promise<any>;
7
+ 'data-transfer': () => (ctx: any, next: any) => Promise<any>;
8
+ };
9
+ export default _default;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.dataTransfer = exports.rateLimit = void 0;
7
+ const rateLimit_1 = __importDefault(require("./rateLimit"));
8
+ const data_transfer_1 = __importDefault(require("./data-transfer"));
9
+ var rateLimit_2 = require("./rateLimit");
10
+ Object.defineProperty(exports, "rateLimit", { enumerable: true, get: function () { return __importDefault(rateLimit_2).default; } });
11
+ var data_transfer_2 = require("./data-transfer");
12
+ Object.defineProperty(exports, "dataTransfer", { enumerable: true, get: function () { return __importDefault(data_transfer_2).default; } });
13
+ exports.default = {
14
+ rateLimit: rateLimit_1.default,
15
+ 'data-transfer': data_transfer_1.default,
16
+ };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/src/middlewares/index.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AACpC,oEAA2C;AAE3C,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,iDAA0D;AAAjD,8HAAA,OAAO,OAAgB;AAEhC,kBAAe;IACb,SAAS,EAAT,mBAAS;IACT,eAAe,EAAE,uBAAY;CAC9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Strapi } from '@strapi/types';
2
+ declare const _default: (config: any, { strapi }: {
3
+ strapi: Strapi;
4
+ }) => (ctx: any, next: any) => Promise<any>;
5
+ export default _default;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const utils_1 = __importDefault(require("@strapi/utils"));
8
+ const fp_1 = require("lodash/fp");
9
+ const { RateLimitError } = utils_1.default.errors;
10
+ exports.default = (config, { strapi }) => async (ctx, next) => {
11
+ let rateLimitConfig = strapi.config.get('admin.rateLimit');
12
+ if (!rateLimitConfig) {
13
+ rateLimitConfig = {
14
+ enabled: true,
15
+ };
16
+ }
17
+ if (!(0, fp_1.has)('enabled', rateLimitConfig)) {
18
+ rateLimitConfig.enabled = true;
19
+ }
20
+ if (rateLimitConfig.enabled === true) {
21
+ // TODO: TS - Do the dynamic import
22
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
23
+ const rateLimit = require('koa2-ratelimit').RateLimit;
24
+ const userEmail = (0, fp_1.toLower)(ctx.request.body.email) || 'unknownEmail';
25
+ const requestPath = (0, fp_1.isString)(ctx.request.path)
26
+ ? (0, fp_1.toLower)(path_1.default.normalize(ctx.request.path)).replace(/\/$/, '')
27
+ : 'invalidPath';
28
+ const loadConfig = {
29
+ interval: { min: 5 },
30
+ max: 5,
31
+ prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,
32
+ handler() {
33
+ throw new RateLimitError();
34
+ },
35
+ ...rateLimitConfig,
36
+ ...config,
37
+ };
38
+ return rateLimit.middleware(loadConfig)(ctx, next);
39
+ }
40
+ return next();
41
+ };
42
+ //# sourceMappingURL=rateLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../server/src/middlewares/rateLimit.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,0DAAkC;AAClC,kCAAmD;AAGnD,MAAM,EAAE,cAAc,EAAE,GAAG,eAAK,CAAC,MAAM,CAAC;AAExC,kBAAe,CAAC,MAAW,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE,CAC7D,KAAK,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;IAC5B,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAQ,CAAC;IAElE,IAAI,CAAC,eAAe,EAAE;QACpB,eAAe,GAAG;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;KACH;IAED,IAAI,CAAC,IAAA,QAAG,EAAC,SAAS,EAAE,eAAe,CAAC,EAAE;QACpC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;KAChC;IAED,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE;QACpC,mCAAmC;QACnC,8DAA8D;QAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC;QAEtD,MAAM,SAAS,GAAG,IAAA,YAAO,EAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC;QACpE,MAAM,WAAW,GAAG,IAAA,aAAQ,EAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,CAAC,CAAC,IAAA,YAAO,EAAC,cAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9D,CAAC,CAAC,aAAa,CAAC;QAElB,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACpB,GAAG,EAAE,CAAC;YACN,SAAS,EAAE,GAAG,SAAS,IAAI,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;YAC1D,OAAO;gBACL,MAAM,IAAI,cAAc,EAAE,CAAC;YAC7B,CAAC;YACD,GAAG,eAAe;YAClB,GAAG,MAAM;SACV,CAAC;QAEF,OAAO,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACpD;IAED,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ name: string;
3
+ validator: (config: unknown) => void;
4
+ handler: (...args: any[]) => any;
5
+ };
6
+ export default _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lodash_1 = __importDefault(require("lodash"));
7
+ const utils_1 = require("@strapi/utils");
8
+ const hasPermissions_1 = require("../validation/policies/hasPermissions");
9
+ const { createPolicy } = utils_1.policy;
10
+ const inputModifiers = [
11
+ {
12
+ check: lodash_1.default.isString,
13
+ transform: (action) => ({ action }),
14
+ },
15
+ {
16
+ check: lodash_1.default.isArray,
17
+ transform: (arr) => ({ action: arr[0], subject: arr[1] }),
18
+ },
19
+ {
20
+ // Has to be after the isArray check since _.isObject also matches arrays
21
+ check: lodash_1.default.isObject,
22
+ transform: (perm) => perm,
23
+ },
24
+ ];
25
+ exports.default = createPolicy({
26
+ name: 'admin::hasPermissions',
27
+ validator: hasPermissions_1.validateHasPermissionsInput,
28
+ handler(ctx, config) {
29
+ const { actions } = config;
30
+ const { userAbility: ability } = ctx.state;
31
+ const permissions = actions.map((action) =>
32
+ // @ts-expect-error
33
+ inputModifiers.find((modifier) => modifier.check(action)).transform(action));
34
+ const isAuthorized = permissions.every(({ action, subject }) => ability.can(action, subject));
35
+ return isAuthorized;
36
+ },
37
+ });
38
+ //# sourceMappingURL=hasPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasPermissions.js","sourceRoot":"","sources":["../../../server/src/policies/hasPermissions.ts"],"names":[],"mappings":";;;;;AAAA,oDAAuB;AACvB,yCAAuC;AACvC,0EAAoF;AAEpF,MAAM,EAAE,YAAY,EAAE,GAAG,cAAM,CAAC;AAEhC,MAAM,cAAc,GAAG;IACrB;QACE,KAAK,EAAE,gBAAC,CAAC,QAAQ;QACjB,SAAS,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KACzC;IACD;QACE,KAAK,EAAE,gBAAC,CAAC,OAAO;QAChB,SAAS,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D;IACD;QACE,yEAAyE;QACzE,KAAK,EAAE,gBAAC,CAAC,QAAQ;QACjB,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI;KAC/B;CACF,CAAC;AAEF,kBAAe,YAAY,CAAC;IAC1B,IAAI,EAAE,uBAAuB;IAC7B,SAAS,EAAE,4CAA2B;IACtC,OAAO,CAAC,GAAG,EAAE,MAAM;QACjB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAE3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;QAC9C,mBAAmB;QACnB,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAC5E,CAAC;QAEF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAO,EAAE,EAAE,CAClE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7B,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ isAuthenticatedAdmin: (policyCtx: any) => boolean;
3
+ hasPermissions: {
4
+ name: string;
5
+ validator: (config: unknown) => void;
6
+ handler: (...args: any[]) => any;
7
+ };
8
+ isTelemetryEnabled: {
9
+ name: string;
10
+ validator: (config: unknown) => void;
11
+ handler: (...args: any[]) => any;
12
+ };
13
+ };
14
+ export default _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const isAuthenticatedAdmin_1 = __importDefault(require("./isAuthenticatedAdmin"));
7
+ const hasPermissions_1 = __importDefault(require("./hasPermissions"));
8
+ const isTelemetryEnabled_1 = __importDefault(require("./isTelemetryEnabled"));
9
+ exports.default = { isAuthenticatedAdmin: isAuthenticatedAdmin_1.default, hasPermissions: hasPermissions_1.default, isTelemetryEnabled: isTelemetryEnabled_1.default };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/src/policies/index.ts"],"names":[],"mappings":";;;;;AAAA,kFAA0D;AAC1D,sEAA8C;AAC9C,8EAAsD;AAEtD,kBAAe,EAAE,oBAAoB,EAApB,8BAAoB,EAAE,cAAc,EAAd,wBAAc,EAAE,kBAAkB,EAAlB,4BAAkB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (policyCtx: any) => boolean;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = (policyCtx) => {
4
+ return Boolean(policyCtx.state.isAuthenticated);
5
+ };
6
+ //# sourceMappingURL=isAuthenticatedAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAuthenticatedAdmin.js","sourceRoot":"","sources":["../../../server/src/policies/isAuthenticatedAdmin.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,SAAc,EAAE,EAAE;IAChC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAClD,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This policy is used for routes dealing with telemetry and analytics content.
3
+ * It will fails when the telemetry has been disabled on the server.
4
+ */
5
+ declare const _default: {
6
+ name: string;
7
+ validator: (config: unknown) => void;
8
+ handler: (...args: any[]) => any;
9
+ };
10
+ export default _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@strapi/utils");
4
+ // TODO: TS - Try to make { policy: { createPolicy } } from '@strapi/utils'; work
5
+ const { createPolicy } = utils_1.policy;
6
+ /**
7
+ * This policy is used for routes dealing with telemetry and analytics content.
8
+ * It will fails when the telemetry has been disabled on the server.
9
+ */
10
+ exports.default = createPolicy({
11
+ name: 'admin::isTelemetryEnabled',
12
+ handler(_ctx, _config, { strapi }) {
13
+ if (strapi.telemetry.isDisabled) {
14
+ return false;
15
+ }
16
+ },
17
+ });
18
+ //# sourceMappingURL=isTelemetryEnabled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isTelemetryEnabled.js","sourceRoot":"","sources":["../../../server/src/policies/isTelemetryEnabled.ts"],"names":[],"mappings":";;AAAA,yCAAuC;AAEvC,iFAAiF;AACjF,MAAM,EAAE,YAAY,EAAE,GAAG,cAAM,CAAC;AAEhC;;;GAGG;AACH,kBAAe,YAAY,CAAC;IAC1B,IAAI,EAAE,2BAA2B;IACjC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE;QAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: ({ strapi }: any) => void;
2
+ export default _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const serve_admin_panel_1 = __importDefault(require("./routes/serve-admin-panel"));
7
+ const admin_1 = __importDefault(require("./strategies/admin"));
8
+ const api_token_1 = __importDefault(require("./strategies/api-token"));
9
+ exports.default = ({ strapi }) => {
10
+ const passportMiddleware = strapi.admin.services.passport.init();
11
+ strapi.server.api('admin').use(passportMiddleware);
12
+ strapi.container.get('auth').register('admin', admin_1.default);
13
+ strapi.container.get('auth').register('content-api', api_token_1.default);
14
+ if (strapi.config.serveAdminPanel) {
15
+ (0, serve_admin_panel_1.default)({ strapi });
16
+ }
17
+ };
18
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../server/src/register.ts"],"names":[],"mappings":";;;;;AAAA,mFAAiE;AACjE,+DAAmD;AACnD,uEAA0D;AAE1D,kBAAe,CAAC,EAAE,MAAM,EAAO,EAAE,EAAE;IACjC,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEjE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAiB,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAoB,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;QACjC,IAAA,2BAAuB,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACrC;AACH,CAAC,CAAC"}