@strapi/admin 4.14.2 → 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.08f32723.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.cec66cd9.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,51 @@
1
+ /**
2
+ * Creates an array of paths to the fields and nested fields, without path nodes
3
+ * @param {string} model model used to get the nested fields
4
+ * @param {Object} options
5
+ * @param {string} options.prefix prefix to add to the path
6
+ * @param {number} options.nestingLevel level of nesting to achieve
7
+ * @param {object} options.components components where components attributes can be found
8
+ * @param {object} options.requiredOnly only returns required nestedFields
9
+ * @param {object} options.existingFields fields that are already selected, meaning that some sub-fields may be required
10
+ * @returns {array<string>}
11
+ * @param model
12
+ */
13
+ declare const getNestedFields: (model: any, { prefix, nestingLevel, components, requiredOnly, existingFields }: {
14
+ prefix?: string | undefined;
15
+ nestingLevel?: number | undefined;
16
+ components?: {} | undefined;
17
+ requiredOnly?: boolean | undefined;
18
+ existingFields?: never[] | undefined;
19
+ }) => any;
20
+ /**
21
+ * Creates an array of paths to the fields and nested fields, with path nodes
22
+ * @param {string} model model used to get the nested fields
23
+ * @param {Object} options
24
+ * @param {string} options.prefix prefix to add to the path
25
+ * @param {number} options.nestingLevel level of nesting to achieve
26
+ * @param {object} options.components components where components attributes can be found
27
+ * @returns {array<string>}
28
+ */
29
+ declare const getNestedFieldsWithIntermediate: (model: any, { prefix, nestingLevel, components }: {
30
+ prefix?: string | undefined;
31
+ nestingLevel?: number | undefined;
32
+ components?: {} | undefined;
33
+ }) => any;
34
+ /**
35
+ * Creates an array of permissions with the "properties.fields" attribute filled
36
+ * @param {array} actions array of actions
37
+ * @param {object} options
38
+ * @param {number} options.nestingLevel level of nesting
39
+ * @param {array} options.restrictedSubjects subjectsId to ignore
40
+ * @returns {Permission[]}
41
+ */
42
+ declare const getPermissionsWithNestedFields: (actions: any[], { nestingLevel, restrictedSubjects }?: any) => any;
43
+ /**
44
+ * Cleans permissions' fields (add required ones, remove the non-existing ones)
45
+ * @param {Permission[]} permissions array of existing permissions in db
46
+ * @param {object} options
47
+ * @param {number} options.nestingLevel level of nesting
48
+ * @returns {Permission[]}
49
+ */
50
+ declare const cleanPermissionFields: (permissions: any, { nestingLevel }?: any) => any;
51
+ export { getNestedFields, getPermissionsWithNestedFields, cleanPermissionFields, getNestedFieldsWithIntermediate, };
@@ -0,0 +1,158 @@
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.getNestedFieldsWithIntermediate = exports.cleanPermissionFields = exports.getPermissionsWithNestedFields = exports.getNestedFields = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const fp_1 = require("lodash/fp");
9
+ const utils_1 = require("@strapi/utils");
10
+ const utils_2 = require("../utils");
11
+ const action_1 = __importDefault(require("../domain/action"));
12
+ const permission_1 = __importDefault(require("../domain/permission"));
13
+ /**
14
+ * Creates an array of paths to the fields and nested fields, without path nodes
15
+ * @param {string} model model used to get the nested fields
16
+ * @param {Object} options
17
+ * @param {string} options.prefix prefix to add to the path
18
+ * @param {number} options.nestingLevel level of nesting to achieve
19
+ * @param {object} options.components components where components attributes can be found
20
+ * @param {object} options.requiredOnly only returns required nestedFields
21
+ * @param {object} options.existingFields fields that are already selected, meaning that some sub-fields may be required
22
+ * @returns {array<string>}
23
+ * @param model
24
+ */
25
+ const getNestedFields = (model, { prefix = '', nestingLevel = 15, components = {}, requiredOnly = false, existingFields = [] }) => {
26
+ if (nestingLevel === 0) {
27
+ return prefix ? [prefix] : [];
28
+ }
29
+ const nonAuthorizableFields = utils_1.contentTypes.getNonVisibleAttributes(model);
30
+ return lodash_1.default.reduce(model.attributes, (fields, attr, key) => {
31
+ if (nonAuthorizableFields.includes(key))
32
+ return fields;
33
+ const fieldPath = prefix ? `${prefix}.${key}` : key;
34
+ const shouldBeIncluded = !requiredOnly || attr.required === true;
35
+ const insideExistingFields = existingFields && existingFields.some((0, fp_1.startsWith)(fieldPath));
36
+ if (attr.type === 'component') {
37
+ if (shouldBeIncluded || insideExistingFields) {
38
+ // @ts-expect-error
39
+ const compoFields = getNestedFields(components[attr.component], {
40
+ nestingLevel: nestingLevel - 1,
41
+ prefix: fieldPath,
42
+ components,
43
+ requiredOnly,
44
+ existingFields,
45
+ });
46
+ if (compoFields.length === 0 && shouldBeIncluded) {
47
+ return fields.concat(fieldPath);
48
+ }
49
+ return fields.concat(compoFields);
50
+ }
51
+ return fields;
52
+ }
53
+ if (shouldBeIncluded) {
54
+ return fields.concat(fieldPath);
55
+ }
56
+ return fields;
57
+ }, []);
58
+ };
59
+ exports.getNestedFields = getNestedFields;
60
+ /**
61
+ * Creates an array of paths to the fields and nested fields, with path nodes
62
+ * @param {string} model model used to get the nested fields
63
+ * @param {Object} options
64
+ * @param {string} options.prefix prefix to add to the path
65
+ * @param {number} options.nestingLevel level of nesting to achieve
66
+ * @param {object} options.components components where components attributes can be found
67
+ * @returns {array<string>}
68
+ */
69
+ const getNestedFieldsWithIntermediate = (model, { prefix = '', nestingLevel = 15, components = {} }) => {
70
+ if (nestingLevel === 0) {
71
+ return [];
72
+ }
73
+ const nonAuthorizableFields = utils_1.contentTypes.getNonVisibleAttributes(model);
74
+ return lodash_1.default.reduce(model.attributes, (fields, attr, key) => {
75
+ if (nonAuthorizableFields.includes(key))
76
+ return fields;
77
+ const fieldPath = prefix ? `${prefix}.${key}` : key;
78
+ fields.push(fieldPath);
79
+ if (attr.type === 'component') {
80
+ // @ts-expect-error
81
+ const compoFields = getNestedFieldsWithIntermediate(components[attr.component], {
82
+ nestingLevel: nestingLevel - 1,
83
+ prefix: fieldPath,
84
+ components,
85
+ });
86
+ fields.push(...compoFields);
87
+ }
88
+ return fields;
89
+ }, []);
90
+ };
91
+ exports.getNestedFieldsWithIntermediate = getNestedFieldsWithIntermediate;
92
+ /**
93
+ * Creates an array of permissions with the "properties.fields" attribute filled
94
+ * @param {array} actions array of actions
95
+ * @param {object} options
96
+ * @param {number} options.nestingLevel level of nesting
97
+ * @param {array} options.restrictedSubjects subjectsId to ignore
98
+ * @returns {Permission[]}
99
+ */
100
+ const getPermissionsWithNestedFields = (actions, { nestingLevel, restrictedSubjects = [] } = {}) => {
101
+ return actions.reduce((permissions, action) => {
102
+ const validSubjects = action.subjects.filter((subject) => !restrictedSubjects.includes(subject));
103
+ // Create a Permission for each subject (content-type uid) within the action
104
+ for (const subject of validSubjects) {
105
+ const fields = action_1.default.appliesToProperty('fields', action)
106
+ ? getNestedFields(strapi.contentTypes[subject], {
107
+ components: strapi.components,
108
+ nestingLevel,
109
+ })
110
+ : undefined;
111
+ const permission = permission_1.default.create({
112
+ action: action.actionId,
113
+ subject,
114
+ properties: { fields },
115
+ });
116
+ permissions.push(permission);
117
+ }
118
+ return permissions;
119
+ }, []);
120
+ };
121
+ exports.getPermissionsWithNestedFields = getPermissionsWithNestedFields;
122
+ /**
123
+ * Cleans permissions' fields (add required ones, remove the non-existing ones)
124
+ * @param {Permission[]} permissions array of existing permissions in db
125
+ * @param {object} options
126
+ * @param {number} options.nestingLevel level of nesting
127
+ * @returns {Permission[]}
128
+ */
129
+ const cleanPermissionFields = (permissions, { nestingLevel } = {}) => {
130
+ const { actionProvider } = (0, utils_2.getService)('permission');
131
+ return permissions.map((permission) => {
132
+ const { action: actionId, subject, properties: { fields }, } = permission;
133
+ const action = actionProvider.get(actionId);
134
+ // todo see if it's possible to check property on action + subject (async)
135
+ if (!action_1.default.appliesToProperty('fields', action)) {
136
+ return permission_1.default.deleteProperty('fields', permission);
137
+ }
138
+ if (!subject || !strapi.contentTypes[subject]) {
139
+ return permission;
140
+ }
141
+ const possibleFields = getNestedFieldsWithIntermediate(strapi.contentTypes[subject], {
142
+ components: strapi.components,
143
+ nestingLevel,
144
+ });
145
+ const requiredFields = getNestedFields(strapi.contentTypes[subject], {
146
+ components: strapi.components,
147
+ requiredOnly: true,
148
+ nestingLevel,
149
+ existingFields: fields,
150
+ });
151
+ // @ts-expect-error
152
+ const badNestedFields = (0, fp_1.uniq)([...(0, fp_1.intersection)(fields, possibleFields), ...requiredFields]);
153
+ const newFields = badNestedFields.filter((field) => !badNestedFields.some((0, fp_1.startsWith)(`${field}.`)));
154
+ return permission_1.default.setProperty('fields', newFields, permission);
155
+ }, []);
156
+ };
157
+ exports.cleanPermissionFields = cleanPermissionFields;
158
+ //# sourceMappingURL=content-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.js","sourceRoot":"","sources":["../../../server/src/services/content-type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import * as user from './user';
2
+ import * as token from './token';
3
+ import * as role from './role';
4
+ import * as permission from './permission';
5
+ import * as passport from './passport';
6
+ import * as metrics from './metrics';
7
+ import * as contentType from './content-type';
8
+ import * as condition from './condition';
9
+ import * as auth from './auth';
10
+ import * as action from './action';
11
+ import * as apiToken from './api-token';
12
+ import * as transfer from './transfer';
13
+ import * as projectSettings from './project-settings';
14
+ declare const _default: {
15
+ user: typeof user;
16
+ token: typeof token;
17
+ role: typeof role;
18
+ permission: typeof permission;
19
+ passport: typeof passport;
20
+ metrics: typeof metrics;
21
+ 'content-type': typeof contentType;
22
+ constants: {
23
+ CONTENT_TYPE_SECTION: string;
24
+ SUPER_ADMIN_CODE: string;
25
+ EDITOR_CODE: string;
26
+ AUTHOR_CODE: string;
27
+ READ_ACTION: string;
28
+ CREATE_ACTION: string;
29
+ UPDATE_ACTION: string;
30
+ DELETE_ACTION: string;
31
+ PUBLISH_ACTION: string;
32
+ API_TOKEN_TYPE: {
33
+ READ_ONLY: string;
34
+ FULL_ACCESS: string;
35
+ CUSTOM: string;
36
+ };
37
+ API_TOKEN_LIFESPANS: {
38
+ UNLIMITED: null;
39
+ DAYS_7: number;
40
+ DAYS_30: number;
41
+ DAYS_90: number;
42
+ };
43
+ TRANSFER_TOKEN_TYPE: {
44
+ PUSH: string;
45
+ PULL: string;
46
+ };
47
+ TRANSFER_TOKEN_LIFESPANS: {
48
+ UNLIMITED: null;
49
+ DAYS_7: number;
50
+ DAYS_30: number;
51
+ DAYS_90: number;
52
+ };
53
+ };
54
+ condition: typeof condition;
55
+ auth: typeof auth;
56
+ action: typeof action;
57
+ 'api-token': typeof apiToken;
58
+ transfer: typeof transfer;
59
+ 'project-settings': typeof projectSettings;
60
+ };
61
+ export default _default;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const user = __importStar(require("./user"));
27
+ const token = __importStar(require("./token"));
28
+ const role = __importStar(require("./role"));
29
+ const permission = __importStar(require("./permission"));
30
+ const passport = __importStar(require("./passport"));
31
+ const metrics = __importStar(require("./metrics"));
32
+ const contentType = __importStar(require("./content-type"));
33
+ const constants = __importStar(require("./constants"));
34
+ const condition = __importStar(require("./condition"));
35
+ const auth = __importStar(require("./auth"));
36
+ const action = __importStar(require("./action"));
37
+ const apiToken = __importStar(require("./api-token"));
38
+ const transfer = __importStar(require("./transfer"));
39
+ const projectSettings = __importStar(require("./project-settings"));
40
+ // TODO: TS - Export services one by one as this export is cjs
41
+ exports.default = {
42
+ user,
43
+ token,
44
+ role,
45
+ permission,
46
+ passport,
47
+ metrics,
48
+ 'content-type': contentType,
49
+ constants,
50
+ condition,
51
+ auth,
52
+ action,
53
+ 'api-token': apiToken,
54
+ transfer,
55
+ 'project-settings': projectSettings,
56
+ };
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AACjC,6CAA+B;AAC/B,yDAA2C;AAC3C,qDAAuC;AACvC,mDAAqC;AACrC,4DAA8C;AAC9C,uDAAyC;AACzC,uDAAyC;AACzC,6CAA+B;AAC/B,iDAAmC;AACnC,sDAAwC;AACxC,qDAAuC;AACvC,oEAAsD;AAEtD,8DAA8D;AAC9D,kBAAe;IACb,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,OAAO;IACP,cAAc,EAAE,WAAW;IAC3B,SAAS;IACT,SAAS;IACT,IAAI;IACJ,MAAM;IACN,WAAW,EAAE,QAAQ;IACrB,QAAQ;IACR,kBAAkB,EAAE,eAAe;CACpC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Strapi } from '@strapi/types';
2
+ declare const sendDidInviteUser: () => Promise<void>;
3
+ declare const sendDidUpdateRolePermissions: () => Promise<void>;
4
+ declare const sendDidChangeInterfaceLanguage: () => Promise<void>;
5
+ declare const sendUpdateProjectInformation: () => Promise<void>;
6
+ declare const startCron: (strapi: Strapi) => void;
7
+ export { sendDidInviteUser, sendDidUpdateRolePermissions, sendDidChangeInterfaceLanguage, sendUpdateProjectInformation, startCron, };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startCron = exports.sendUpdateProjectInformation = exports.sendDidChangeInterfaceLanguage = exports.sendDidUpdateRolePermissions = exports.sendDidInviteUser = void 0;
4
+ const utils_1 = require("../utils");
5
+ const sendDidInviteUser = async () => {
6
+ const numberOfUsers = await (0, utils_1.getService)('user').count();
7
+ const numberOfRoles = await (0, utils_1.getService)('role').count();
8
+ strapi.telemetry.send('didInviteUser', {
9
+ groupProperties: { numberOfRoles, numberOfUsers },
10
+ });
11
+ };
12
+ exports.sendDidInviteUser = sendDidInviteUser;
13
+ const sendDidUpdateRolePermissions = async () => {
14
+ strapi.telemetry.send('didUpdateRolePermissions');
15
+ };
16
+ exports.sendDidUpdateRolePermissions = sendDidUpdateRolePermissions;
17
+ const sendDidChangeInterfaceLanguage = async () => {
18
+ const languagesInUse = await (0, utils_1.getService)('user').getLanguagesInUse();
19
+ // This event is anonymous
20
+ strapi.telemetry.send('didChangeInterfaceLanguage', { userProperties: { languagesInUse } });
21
+ };
22
+ exports.sendDidChangeInterfaceLanguage = sendDidChangeInterfaceLanguage;
23
+ const sendUpdateProjectInformation = async () => {
24
+ const numberOfActiveAdminUsers = await (0, utils_1.getService)('user').count({ isActive: true });
25
+ const numberOfAdminUsers = await (0, utils_1.getService)('user').count();
26
+ strapi.telemetry.send('didUpdateProjectInformation', {
27
+ groupProperties: { numberOfActiveAdminUsers, numberOfAdminUsers },
28
+ });
29
+ };
30
+ exports.sendUpdateProjectInformation = sendUpdateProjectInformation;
31
+ const startCron = (strapi) => {
32
+ strapi.cron.add({
33
+ '0 0 0 * * *': () => sendUpdateProjectInformation(),
34
+ });
35
+ };
36
+ exports.startCron = startCron;
37
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../server/src/services/metrics.ts"],"names":[],"mappings":";;;AACA,oCAAsC;AAEtC,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;IACnC,MAAM,aAAa,GAAG,MAAM,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE;QACrC,eAAe,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE;KAClD,CAAC,CAAC;AACL,CAAC,CAAC;AA4BA,8CAAiB;AA1BnB,MAAM,4BAA4B,GAAG,KAAK,IAAI,EAAE;IAC9C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACpD,CAAC,CAAC;AAyBA,oEAA4B;AAvB9B,MAAM,8BAA8B,GAAG,KAAK,IAAI,EAAE;IAChD,MAAM,cAAc,GAAG,MAAM,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACpE,0BAA0B;IAC1B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AAC9F,CAAC,CAAC;AAoBA,wEAA8B;AAlBhC,MAAM,4BAA4B,GAAG,KAAK,IAAI,EAAE;IAC9C,MAAM,wBAAwB,GAAG,MAAM,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,MAAM,kBAAkB,GAAG,MAAM,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,6BAA6B,EAAE;QACnD,eAAe,EAAE,EAAE,wBAAwB,EAAE,kBAAkB,EAAE;KAClE,CAAC,CAAC;AACL,CAAC,CAAC;AAYA,oEAA4B;AAV9B,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE;IACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACd,aAAa,EAAE,GAAG,EAAE,CAAC,4BAA4B,EAAE;KACpD,CAAC,CAAC;AACL,CAAC,CAAC;AAOA,8BAAS"}
@@ -0,0 +1,3 @@
1
+ import type { Strapi } from '@strapi/types';
2
+ declare const createLocalStrategy: (strapi: Strapi, middleware?: any) => any;
3
+ export default createLocalStrategy;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fp_1 = require("lodash/fp");
4
+ // @ts-expect-error
5
+ const passport_local_1 = require("passport-local");
6
+ const createLocalStrategy = (strapi, middleware) => {
7
+ return new passport_local_1.Strategy({
8
+ usernameField: 'email',
9
+ passwordField: 'password',
10
+ session: false,
11
+ }, (email, password, done) => {
12
+ return (
13
+ // @ts-expect-error
14
+ strapi.admin.services.auth
15
+ .checkCredentials({ email: (0, fp_1.toLower)(email), password })
16
+ // @ts-expect-error
17
+ .then(async ([error, user, message]) => {
18
+ if (middleware) {
19
+ return middleware([error, user, message], done);
20
+ }
21
+ return done(error, user, message);
22
+ })
23
+ // @ts-expect-error
24
+ .catch((error) => done(error)));
25
+ });
26
+ };
27
+ exports.default = createLocalStrategy;
28
+ //# sourceMappingURL=local-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-strategy.js","sourceRoot":"","sources":["../../../../server/src/services/passport/local-strategy.ts"],"names":[],"mappings":";;AAAA,kCAAoC;AACpC,mBAAmB;AACnB,mDAA2D;AAG3D,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,UAAgB,EAAE,EAAE;IAC/D,OAAO,IAAI,yBAAa,CACtB;QACE,aAAa,EAAE,OAAO;QACtB,aAAa,EAAE,UAAU;QACzB,OAAO,EAAE,KAAK;KACf,EACD,CAAC,KAAU,EAAE,QAAa,EAAE,IAAS,EAAE,EAAE;QACvC,OAAO;QACL,mBAAmB;QACnB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;aACvB,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAA,YAAO,EAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;YACtD,mBAAmB;aAClB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACrC,IAAI,UAAU,EAAE;gBACd,OAAO,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;aACjD;YAED,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC;YACF,mBAAmB;aAClB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACjC,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const authEventsMapper: {
2
+ onConnectionSuccess: string;
3
+ onConnectionError: string;
4
+ };
5
+ declare const getPassportStrategies: () => any[];
6
+ declare const init: () => any;
7
+ export { init, getPassportStrategies, authEventsMapper };
@@ -0,0 +1,40 @@
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.authEventsMapper = exports.getPassportStrategies = exports.init = void 0;
7
+ // @ts-expect-error
8
+ const koa_passport_1 = __importDefault(require("koa-passport"));
9
+ const fp_1 = require("lodash/fp");
10
+ const local_strategy_1 = __importDefault(require("./passport/local-strategy"));
11
+ const authEventsMapper = {
12
+ onConnectionSuccess: 'admin.auth.success',
13
+ onConnectionError: 'admin.auth.error',
14
+ };
15
+ exports.authEventsMapper = authEventsMapper;
16
+ const valueIsFunctionType = ([, value]) => (0, fp_1.isFunction)(value);
17
+ const keyIsValidEventName = ([key]) => {
18
+ return Object.keys(strapi.admin.services.passport.authEventsMapper).includes(key);
19
+ };
20
+ const getPassportStrategies = () => [(0, local_strategy_1.default)(strapi)];
21
+ exports.getPassportStrategies = getPassportStrategies;
22
+ const registerAuthEvents = () => {
23
+ const { events = {} } = strapi.config.get('admin.auth', {});
24
+ const { authEventsMapper } = strapi.admin.services.passport;
25
+ const eventList = Object.entries(events)
26
+ .filter(keyIsValidEventName)
27
+ .filter(valueIsFunctionType);
28
+ for (const [eventName, handler] of eventList) {
29
+ strapi.eventHub.on(authEventsMapper[eventName], handler);
30
+ }
31
+ };
32
+ const init = () => {
33
+ strapi.admin.services.passport
34
+ .getPassportStrategies()
35
+ .forEach((strategy) => koa_passport_1.default.use(strategy));
36
+ registerAuthEvents();
37
+ return koa_passport_1.default.initialize();
38
+ };
39
+ exports.init = init;
40
+ //# sourceMappingURL=passport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passport.js","sourceRoot":"","sources":["../../../server/src/services/passport.ts"],"names":[],"mappings":";;;;;;AAAA,mBAAmB;AACnB,gEAAoC;AACpC,kCAAuC;AAEvC,+EAA4D;AAE5D,MAAM,gBAAgB,GAAG;IACvB,mBAAmB,EAAE,oBAAoB;IACzC,iBAAiB,EAAE,kBAAkB;CACtC,CAAC;AAgCoC,4CAAgB;AA9BtD,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAM,EAAE,EAAE,CAAC,IAAA,eAAU,EAAC,KAAK,CAAC,CAAC;AAClE,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAM,EAAE,EAAE;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAA,wBAAmB,EAAC,MAAM,CAAC,CAAC,CAAC;AAyBnD,sDAAqB;AAvBpC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAQ,CAAC;IACnE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAE5D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACrC,MAAM,CAAC,mBAAmB,CAAC;SAC3B,MAAM,CAAC,mBAAmB,CAAQ,CAAC;IAEtC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,SAAS,EAAE;QAC5C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;KAC1D;AACH,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,GAAG,EAAE;IAChB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;SAC3B,qBAAqB,EAAE;SACvB,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,sBAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtD,kBAAkB,EAAE,CAAC;IAErB,OAAO,sBAAQ,CAAC,UAAU,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEO,oBAAI"}
@@ -0,0 +1,15 @@
1
+ /// <reference types="lodash" />
2
+ declare const _default: (params: any) => {
3
+ readonly hooks: import("@strapi/permissions/dist/engine/hooks").PermissionEngineHooks;
4
+ /**
5
+ * Generate an ability based on the given user (using associated roles & permissions)
6
+ * @param user
7
+ * @returns {Promise<Ability>}
8
+ */
9
+ generateUserAbility(user: any): Promise<import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>>;
10
+ /**
11
+ * Check many permissions based on an ability
12
+ */
13
+ checkMany: import("lodash").CurriedFunction2<any, any, any>;
14
+ };
15
+ export default _default;
@@ -0,0 +1,67 @@
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 fp_1 = require("lodash/fp");
7
+ const permissions_1 = __importDefault(require("@strapi/permissions"));
8
+ const index_1 = __importDefault(require("../../domain/permission/index"));
9
+ const utils_1 = require("../../utils");
10
+ exports.default = (params) => {
11
+ const { providers } = params;
12
+ const engine = permissions_1.default.engine
13
+ .new({ providers })
14
+ /**
15
+ * Validate the permission's action exists in the action registry
16
+ */
17
+ .on('before-format::validate.permission', ({ permission }) => {
18
+ const action = providers.action.get(permission.action);
19
+ // If the action isn't registered into the action provider, then ignore the permission
20
+ if (!action) {
21
+ strapi.log.debug(`Unknown action "${permission.action}" supplied when registering a new permission in engine`);
22
+ return false;
23
+ }
24
+ })
25
+ /**
26
+ * Remove invalid properties from the permission based on the action (applyToProperties)
27
+ */
28
+ .on('format.permission', (permission) => {
29
+ const action = providers.action.get(permission.action);
30
+ const properties = permission.properties || {};
31
+ // Only keep the properties allowed by the action (action.applyToProperties)
32
+ const propertiesName = Object.keys(properties);
33
+ const invalidProperties = (0, fp_1.difference)(propertiesName, action.applyToProperties || propertiesName);
34
+ const permissionWithSanitizedProperties = invalidProperties.reduce((property) => index_1.default.deleteProperty(property, permission), permission);
35
+ return permissionWithSanitizedProperties;
36
+ })
37
+ /**
38
+ * Ignore the permission if the fields property is an empty array (access to no field)
39
+ */
40
+ .on('after-format::validate.permission', ({ permission }) => {
41
+ const { fields } = permission.properties;
42
+ if ((0, fp_1.isArray)(fields) && (0, fp_1.isEmpty)(fields)) {
43
+ return false;
44
+ }
45
+ });
46
+ return {
47
+ get hooks() {
48
+ return engine.hooks;
49
+ },
50
+ /**
51
+ * Generate an ability based on the given user (using associated roles & permissions)
52
+ * @param user
53
+ * @returns {Promise<Ability>}
54
+ */
55
+ async generateUserAbility(user) {
56
+ const permissions = (await (0, utils_1.getService)('permission').findUserPermissions(user));
57
+ return engine.generateAbility(permissions, user);
58
+ },
59
+ /**
60
+ * Check many permissions based on an ability
61
+ */
62
+ checkMany: (0, fp_1.curry)((ability, permissions) => {
63
+ return permissions.map(({ action, subject, field }) => ability.can(action, subject, field));
64
+ }),
65
+ };
66
+ };
67
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../server/src/services/permission/engine.ts"],"names":[],"mappings":";;;;;AAAA,kCAAgE;AAChE,sEAA8C;AAE9C,0EAA6D;AAC7D,uCAAyC;AAEzC,kBAAe,CAAC,MAAW,EAAE,EAAE;IAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7B,MAAM,MAAM,GAAG,qBAAW,CAAC,MAAM;SAC9B,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;QACnB;;WAEG;SACF,EAAE,CAAC,oCAAoC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEvD,sFAAsF;QACtF,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,CAAC,GAAG,CAAC,KAAK,CACd,mBAAmB,UAAU,CAAC,MAAM,wDAAwD,CAC7F,CAAC;YACF,OAAO,KAAK,CAAC;SACd;IACH,CAAC,CAAC;QAEF;;WAEG;SACF,EAAE,CAAC,mBAAmB,EAAE,CAAC,UAAU,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;QAE/C,4EAA4E;QAC5E,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,iBAAiB,GAAG,IAAA,eAAU,EAClC,cAAc,EACd,MAAM,CAAC,iBAAiB,IAAI,cAAc,CAC3C,CAAC;QAEF,MAAM,iCAAiC,GAAG,iBAAiB,CAAC,MAAM,CAChE,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAgB,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,EACnE,UAAU,CACX,CAAC;QAEF,OAAO,iCAAiC,CAAC;IAC3C,CAAC,CAAC;QAEF;;WAEG;SACF,EAAE,CAAC,mCAAmC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC;QAEzC,IAAI,IAAA,YAAO,EAAC,MAAM,CAAC,IAAI,IAAA,YAAO,EAAC,MAAM,CAAC,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI,KAAK;YACP,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,mBAAmB,CAAC,IAAS;YACjC,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAQ,CAAC;YAEtF,OAAO,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QAED;;WAEG;QACH,SAAS,EAAE,IAAA,UAAK,EAAC,CAAC,OAAY,EAAE,WAAgB,EAAE,EAAE;YAClD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAO,EAAE,EAAE,CACzD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: ({ ability, action, model }: any) => {
2
+ validateQuery: (data: any, options?: {}) => any;
3
+ validateInput: (data: any, options?: {}) => any;
4
+ sanitizeOutput: (data: any, options?: any) => any;
5
+ sanitizeInput: (data: any, options?: any) => any;
6
+ sanitizeQuery: (data: any, options?: any) => any;
7
+ ability: any;
8
+ action: any;
9
+ model: any;
10
+ isAllowed: any;
11
+ toSubject(target: any, subjectType?: any): any;
12
+ pickPermittedFieldsOf(data: any, options?: {}): any;
13
+ getQuery(queryAction?: any): any;
14
+ addPermissionsQueryTo(query: any, action: any): any;
15
+ };
16
+ export default _default;
@@ -0,0 +1,48 @@
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
+ /* eslint-disable @typescript-eslint/default-param-last */
7
+ const _ = require("lodash");
8
+ const fp_1 = require("lodash/fp");
9
+ const ability_1 = require("@casl/ability");
10
+ const sanitize_1 = __importDefault(require("./sanitize"));
11
+ const validate_1 = __importDefault(require("./validate"));
12
+ const query_builders_1 = require("./query-builders");
13
+ exports.default = ({ ability, action, model }) => ({
14
+ ability,
15
+ action,
16
+ model,
17
+ get isAllowed() {
18
+ return this.ability.can(action, model);
19
+ },
20
+ toSubject(target, subjectType = model) {
21
+ return (0, ability_1.subject)(subjectType, target);
22
+ },
23
+ pickPermittedFieldsOf(data, options = {}) {
24
+ return this.sanitizeInput(data, options);
25
+ },
26
+ getQuery(queryAction = action) {
27
+ if (_.isUndefined(queryAction)) {
28
+ throw new Error('Action must be defined to build a permission query');
29
+ }
30
+ return (0, query_builders_1.buildStrapiQuery)((0, query_builders_1.buildCaslQuery)(ability, queryAction, model));
31
+ },
32
+ addPermissionsQueryTo(query = {}, action) {
33
+ const newQuery = (0, fp_1.cloneDeep)(query);
34
+ const permissionQuery = this.getQuery(action) ?? undefined;
35
+ if ((0, fp_1.isPlainObject)(query.filters)) {
36
+ newQuery.filters = permissionQuery
37
+ ? { $and: [query.filters, permissionQuery] }
38
+ : query.filters;
39
+ }
40
+ else {
41
+ newQuery.filters = permissionQuery;
42
+ }
43
+ return newQuery;
44
+ },
45
+ ...(0, sanitize_1.default)({ action, ability, model }),
46
+ ...(0, validate_1.default)({ action, ability, model }),
47
+ });
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../server/src/services/permission/permissions-manager/index.ts"],"names":[],"mappings":";;;;;AAAA,0DAA0D;AAC1D,4BAA6B;AAC7B,kCAAqD;AACrD,2CAAqD;AACrD,0DAA+C;AAC/C,0DAA+C;AAE/C,qDAAoE;AAEpE,kBAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAO,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO;IACP,MAAM;IACN,KAAK;IAEL,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,MAAW,EAAE,WAAW,GAAG,KAAK;QACxC,OAAO,IAAA,iBAAS,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,qBAAqB,CAAC,IAAS,EAAE,OAAO,GAAG,EAAE;QAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,WAAW,GAAG,MAAM;QAC3B,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;SACvE;QAED,OAAO,IAAA,iCAAgB,EAAC,IAAA,+BAAc,EAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,qBAAqB,CAAC,QAAQ,EAAS,EAAE,MAAW;QAClD,MAAM,QAAQ,GAAG,IAAA,cAAS,EAAC,KAAK,CAAC,CAAC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;QAE3D,IAAI,IAAA,kBAAa,EAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAChC,QAAQ,CAAC,OAAO,GAAG,eAAe;gBAChC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE;gBAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;SACnB;aAAM;YACL,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAC;SACpC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,GAAG,IAAA,kBAAqB,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpD,GAAG,IAAA,kBAAqB,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;CACrD,CAAC,CAAC"}