@strapi/admin 5.56.0 → 5.58.0

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 (465) hide show
  1. package/dist/admin/admin/src/components/Filters.js +1 -1
  2. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  3. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  4. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  6. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  8. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -2
  10. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  11. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -2
  12. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/MediaLibraryBanner.js +38 -2
  14. package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -1
  15. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +18 -2
  16. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/RelativeTime.js +9 -0
  18. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  19. package/dist/admin/admin/src/components/RelativeTime.mjs +10 -1
  20. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/TopBanners.js +52 -0
  22. package/dist/admin/admin/src/components/TopBanners.js.map +1 -0
  23. package/dist/admin/admin/src/components/TopBanners.mjs +30 -0
  24. package/dist/admin/admin/src/components/TopBanners.mjs.map +1 -0
  25. package/dist/admin/admin/src/constants.js +14 -0
  26. package/dist/admin/admin/src/constants.js.map +1 -1
  27. package/dist/admin/admin/src/constants.mjs +14 -0
  28. package/dist/admin/admin/src/constants.mjs.map +1 -1
  29. package/dist/admin/admin/src/features/Tracking.js +28 -8
  30. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  31. package/dist/admin/admin/src/features/Tracking.mjs +29 -10
  32. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  33. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
  34. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  35. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
  36. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
  38. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
  39. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
  40. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
  42. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
  44. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
  46. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  47. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
  48. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  49. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +6 -56
  50. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  51. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +6 -56
  52. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  53. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
  54. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
  55. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
  56. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
  57. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
  59. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
  61. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
  62. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
  63. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
  64. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
  65. package/dist/admin/admin/src/services/admin.js +11 -1
  66. package/dist/admin/admin/src/services/admin.js.map +1 -1
  67. package/dist/admin/admin/src/services/admin.mjs +11 -2
  68. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  69. package/dist/admin/admin/src/translations/en.json.js +76 -4
  70. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  71. package/dist/admin/admin/src/translations/en.json.mjs +76 -4
  72. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  73. package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
  74. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
  75. package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
  76. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
  77. package/dist/admin/admin/src/utils/getFetchClient.js +27 -3
  78. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  79. package/dist/admin/admin/src/utils/getFetchClient.mjs +26 -3
  80. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  81. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
  82. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  83. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
  84. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  85. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
  86. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  87. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
  88. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  89. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
  90. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
  91. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
  92. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
  93. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +8 -1
  94. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  95. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +8 -1
  96. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  97. package/dist/admin/index.js +1 -0
  98. package/dist/admin/index.js.map +1 -1
  99. package/dist/admin/index.mjs +1 -1
  100. package/dist/admin/shared/utils/get-project-type.js +49 -0
  101. package/dist/admin/shared/utils/get-project-type.js.map +1 -0
  102. package/dist/admin/shared/utils/get-project-type.mjs +46 -0
  103. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
  104. package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
  105. package/dist/admin/src/components/TopBanners.d.ts +8 -0
  106. package/dist/admin/src/constants.d.ts +10 -0
  107. package/dist/admin/src/features/Tracking.d.ts +12 -1
  108. package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
  109. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
  110. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
  111. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
  112. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
  113. package/dist/admin/src/services/admin.d.ts +2 -2
  114. package/dist/admin/src/types/permissions.d.ts +1 -0
  115. package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
  116. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
  117. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
  118. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
  119. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +7 -0
  120. package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
  121. package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
  122. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
  123. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  124. package/dist/ee/server/src/controllers/admin.d.ts +36 -10
  125. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  126. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  127. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
  128. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  129. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
  130. package/dist/ee/server/src/controllers/index.d.ts +36 -10
  131. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  132. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  133. package/dist/ee/server/src/index.d.ts +40 -11
  134. package/dist/ee/server/src/index.d.ts.map +1 -1
  135. package/dist/ee/server/src/services/index.d.ts +4 -1
  136. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  137. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  138. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  139. package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
  140. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  141. package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
  142. package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
  143. package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
  144. package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
  145. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
  146. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  147. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
  148. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  149. package/dist/server/ee/server/src/controllers/admin.js +79 -7
  150. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  151. package/dist/server/ee/server/src/controllers/admin.mjs +79 -7
  152. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  153. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
  154. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  155. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
  156. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  157. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
  158. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  159. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
  160. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  161. package/dist/server/ee/server/src/controllers/authentication.js +11 -11
  162. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  163. package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
  164. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  165. package/dist/server/ee/server/src/controllers/user.js +7 -8
  166. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  167. package/dist/server/ee/server/src/controllers/user.mjs +8 -9
  168. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  169. package/dist/server/ee/server/src/index.js +2 -0
  170. package/dist/server/ee/server/src/index.js.map +1 -1
  171. package/dist/server/ee/server/src/index.mjs +2 -0
  172. package/dist/server/ee/server/src/index.mjs.map +1 -1
  173. package/dist/server/ee/server/src/services/metrics.js +9 -7
  174. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  175. package/dist/server/ee/server/src/services/metrics.mjs +9 -7
  176. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  177. package/dist/server/ee/server/src/services/persist-tables.js +3 -4
  178. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  179. package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
  180. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  181. package/dist/server/ee/server/src/services/role.js +2 -2
  182. package/dist/server/ee/server/src/services/role.js.map +1 -1
  183. package/dist/server/ee/server/src/services/role.mjs +1 -1
  184. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  185. package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
  186. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  187. package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
  188. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  189. package/dist/server/ee/server/src/services/user.js +1 -2
  190. package/dist/server/ee/server/src/services/user.js.map +1 -1
  191. package/dist/server/ee/server/src/services/user.mjs +2 -3
  192. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  193. package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
  194. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  195. package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
  196. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  197. package/dist/server/server/src/audit-logs/admin-users.js +3 -3
  198. package/dist/server/server/src/audit-logs/admin-users.js.map +1 -1
  199. package/dist/server/server/src/audit-logs/admin-users.mjs +2 -2
  200. package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -1
  201. package/dist/server/server/src/audit-logs/auth.js +72 -0
  202. package/dist/server/server/src/audit-logs/auth.js.map +1 -0
  203. package/dist/server/server/src/audit-logs/auth.mjs +67 -0
  204. package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
  205. package/dist/server/server/src/audit-logs/tokens.js +3 -3
  206. package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
  207. package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
  208. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
  209. package/dist/server/server/src/audit-logs/webhooks.js +2 -2
  210. package/dist/server/server/src/audit-logs/webhooks.js.map +1 -1
  211. package/dist/server/server/src/audit-logs/webhooks.mjs +1 -1
  212. package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -1
  213. package/dist/server/server/src/bootstrap.js +6 -4
  214. package/dist/server/server/src/bootstrap.js.map +1 -1
  215. package/dist/server/server/src/bootstrap.mjs +6 -4
  216. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  217. package/dist/server/server/src/config/admin-actions.js +7 -0
  218. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  219. package/dist/server/server/src/config/admin-actions.mjs +7 -0
  220. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  221. package/dist/server/server/src/controllers/admin-token.js +8 -8
  222. package/dist/server/server/src/controllers/admin-token.js.map +1 -1
  223. package/dist/server/server/src/controllers/admin-token.mjs +4 -4
  224. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
  225. package/dist/server/server/src/controllers/admin.js +9 -5
  226. package/dist/server/server/src/controllers/admin.js.map +1 -1
  227. package/dist/server/server/src/controllers/admin.mjs +8 -4
  228. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  229. package/dist/server/server/src/controllers/api-token.js +8 -8
  230. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  231. package/dist/server/server/src/controllers/api-token.mjs +4 -4
  232. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  233. package/dist/server/server/src/controllers/authentication.js +34 -8
  234. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  235. package/dist/server/server/src/controllers/authentication.mjs +34 -8
  236. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  237. package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
  238. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  239. package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
  240. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  241. package/dist/server/server/src/controllers/transfer/index.js +2 -2
  242. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  243. package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
  244. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  245. package/dist/server/server/src/controllers/transfer/token.js +8 -8
  246. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  247. package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
  248. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  249. package/dist/server/server/src/domain/action/index.js +18 -16
  250. package/dist/server/server/src/domain/action/index.js.map +1 -1
  251. package/dist/server/server/src/domain/action/index.mjs +16 -14
  252. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  253. package/dist/server/server/src/domain/action/provider.mjs +4 -4
  254. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  255. package/dist/server/server/src/domain/condition/index.js +7 -4
  256. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  257. package/dist/server/server/src/domain/condition/index.mjs +7 -4
  258. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  259. package/dist/server/server/src/domain/permission/index.js +24 -15
  260. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  261. package/dist/server/server/src/domain/permission/index.mjs +21 -12
  262. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  263. package/dist/server/server/src/middlewares/rateLimit.js +5 -5
  264. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  265. package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
  266. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  267. package/dist/server/server/src/register.js +10 -0
  268. package/dist/server/server/src/register.js.map +1 -1
  269. package/dist/server/server/src/register.mjs +10 -0
  270. package/dist/server/server/src/register.mjs.map +1 -1
  271. package/dist/server/server/src/routes/admin.js +18 -0
  272. package/dist/server/server/src/routes/admin.js.map +1 -1
  273. package/dist/server/server/src/routes/admin.mjs +18 -0
  274. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  275. package/dist/server/server/src/services/action.js +1 -2
  276. package/dist/server/server/src/services/action.js.map +1 -1
  277. package/dist/server/server/src/services/action.mjs +1 -2
  278. package/dist/server/server/src/services/action.mjs.map +1 -1
  279. package/dist/server/server/src/services/api-token.js +61 -49
  280. package/dist/server/server/src/services/api-token.js.map +1 -1
  281. package/dist/server/server/src/services/api-token.mjs +53 -41
  282. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  283. package/dist/server/server/src/services/auth.js +4 -2
  284. package/dist/server/server/src/services/auth.js.map +1 -1
  285. package/dist/server/server/src/services/auth.mjs +4 -3
  286. package/dist/server/server/src/services/auth.mjs.map +1 -1
  287. package/dist/server/server/src/services/condition.js +2 -2
  288. package/dist/server/server/src/services/condition.js.map +1 -1
  289. package/dist/server/server/src/services/condition.mjs +1 -1
  290. package/dist/server/server/src/services/condition.mjs.map +1 -1
  291. package/dist/server/server/src/services/content-type.js +5 -4
  292. package/dist/server/server/src/services/content-type.js.map +1 -1
  293. package/dist/server/server/src/services/content-type.mjs +8 -7
  294. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  295. package/dist/server/server/src/services/debug-dump.js +173 -0
  296. package/dist/server/server/src/services/debug-dump.js.map +1 -0
  297. package/dist/server/server/src/services/debug-dump.mjs +166 -0
  298. package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
  299. package/dist/server/server/src/services/homepage.js +2 -1
  300. package/dist/server/server/src/services/homepage.js.map +1 -1
  301. package/dist/server/server/src/services/homepage.mjs +2 -1
  302. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  303. package/dist/server/server/src/services/index.js +3 -1
  304. package/dist/server/server/src/services/index.js.map +1 -1
  305. package/dist/server/server/src/services/index.mjs +3 -1
  306. package/dist/server/server/src/services/index.mjs.map +1 -1
  307. package/dist/server/server/src/services/passport/local-strategy.js +2 -2
  308. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  309. package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
  310. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  311. package/dist/server/server/src/services/passport.js +1 -2
  312. package/dist/server/server/src/services/passport.js.map +1 -1
  313. package/dist/server/server/src/services/passport.mjs +1 -2
  314. package/dist/server/server/src/services/passport.mjs.map +1 -1
  315. package/dist/server/server/src/services/permission/engine.js +4 -4
  316. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  317. package/dist/server/server/src/services/permission/engine.mjs +2 -2
  318. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  319. package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
  320. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  321. package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
  322. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  323. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
  324. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  325. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
  326. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  327. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
  328. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  329. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
  330. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  331. package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
  332. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  333. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
  334. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  335. package/dist/server/server/src/services/permission/queries.js +9 -9
  336. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  337. package/dist/server/server/src/services/permission/queries.mjs +9 -9
  338. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  339. package/dist/server/server/src/services/permission/rename-fields.js +118 -0
  340. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
  341. package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
  342. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
  343. package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
  344. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  345. package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
  346. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  347. package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
  348. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  349. package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
  350. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  351. package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
  352. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  353. package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
  354. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  355. package/dist/server/server/src/services/role.js +20 -19
  356. package/dist/server/server/src/services/role.js.map +1 -1
  357. package/dist/server/server/src/services/role.mjs +20 -19
  358. package/dist/server/server/src/services/role.mjs.map +1 -1
  359. package/dist/server/server/src/services/transfer/token.js +20 -16
  360. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  361. package/dist/server/server/src/services/transfer/token.mjs +14 -10
  362. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  363. package/dist/server/server/src/services/user.js +2 -3
  364. package/dist/server/server/src/services/user.js.map +1 -1
  365. package/dist/server/server/src/services/user.mjs +3 -4
  366. package/dist/server/server/src/services/user.mjs.map +1 -1
  367. package/dist/server/server/src/strategies/api-token-utils.js +2 -3
  368. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
  369. package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
  370. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
  371. package/dist/server/server/src/strategies/content-api-token.js +3 -3
  372. package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
  373. package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
  374. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
  375. package/dist/server/server/src/strategies/data-transfer.js +4 -4
  376. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  377. package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
  378. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  379. package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
  380. package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
  381. package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
  382. package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
  383. package/dist/server/server/src/validation/common-validators.js +9 -10
  384. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  385. package/dist/server/server/src/validation/common-validators.mjs +13 -14
  386. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  387. package/dist/server/server/src/validation/user.js +1 -2
  388. package/dist/server/server/src/validation/user.js.map +1 -1
  389. package/dist/server/server/src/validation/user.mjs +1 -2
  390. package/dist/server/server/src/validation/user.mjs.map +1 -1
  391. package/dist/server/shared/utils/get-project-type.js +49 -0
  392. package/dist/server/shared/utils/get-project-type.js.map +1 -0
  393. package/dist/server/shared/utils/get-project-type.mjs +46 -0
  394. package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
  395. package/dist/server/src/audit-logs/auth.d.ts +72 -0
  396. package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
  397. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
  398. package/dist/server/src/bootstrap.d.ts.map +1 -1
  399. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  400. package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
  401. package/dist/server/src/controllers/admin.d.ts +3 -0
  402. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  403. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  404. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  405. package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
  406. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  407. package/dist/server/src/controllers/homepage.d.ts +1 -1
  408. package/dist/server/src/controllers/index.d.ts +4 -1
  409. package/dist/server/src/controllers/index.d.ts.map +1 -1
  410. package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
  411. package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
  412. package/dist/server/src/domain/action/index.d.ts +1 -0
  413. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  414. package/dist/server/src/domain/condition/index.d.ts +2 -2
  415. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  416. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  417. package/dist/server/src/index.d.ts +11 -3
  418. package/dist/server/src/index.d.ts.map +1 -1
  419. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  420. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  421. package/dist/server/src/register.d.ts.map +1 -1
  422. package/dist/server/src/routes/admin.d.ts.map +1 -1
  423. package/dist/server/src/services/action.d.ts.map +1 -1
  424. package/dist/server/src/services/api-token.d.ts.map +1 -1
  425. package/dist/server/src/services/auth.d.ts +6 -0
  426. package/dist/server/src/services/auth.d.ts.map +1 -1
  427. package/dist/server/src/services/condition.d.ts.map +1 -1
  428. package/dist/server/src/services/content-type.d.ts.map +1 -1
  429. package/dist/server/src/services/debug-dump.d.ts +9 -0
  430. package/dist/server/src/services/debug-dump.d.ts.map +1 -0
  431. package/dist/server/src/services/homepage.d.ts +1 -1
  432. package/dist/server/src/services/homepage.d.ts.map +1 -1
  433. package/dist/server/src/services/index.d.ts +7 -2
  434. package/dist/server/src/services/index.d.ts.map +1 -1
  435. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  436. package/dist/server/src/services/passport.d.ts.map +1 -1
  437. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  438. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  439. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  440. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  441. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  442. package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
  443. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
  444. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  445. package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
  446. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  447. package/dist/server/src/services/role.d.ts +1 -1
  448. package/dist/server/src/services/role.d.ts.map +1 -1
  449. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  450. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  451. package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
  452. package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
  453. package/dist/server/src/validation/user.d.ts.map +1 -1
  454. package/dist/shared/contracts/admin.d.ts +106 -0
  455. package/dist/shared/contracts/admin.d.ts.map +1 -1
  456. package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
  457. package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
  458. package/dist/shared/utils/get-project-type.d.ts +37 -0
  459. package/dist/shared/utils/get-project-type.d.ts.map +1 -0
  460. package/package.json +10 -10
  461. package/dist/admin/admin/src/utils/getProjectType.js +0 -22
  462. package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
  463. package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
  464. package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
  465. package/dist/admin/src/utils/getProjectType.d.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"admin-actions.js","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":";;;;MAAaA,OAAAA,GAAU;AACrB,IAAA;QACEC,GAAAA,EAAK,kBAAA;QACLC,WAAAA,EAAa,wBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,yBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,iBAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU;AACZ,KAAA;AACA,IAAA;QACEJ,GAAAA,EAAK,eAAA;QACLC,WAAAA,EAAa,MAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU;AACZ,KAAA;AACA,IAAA;QACEJ,GAAAA,EAAK,iBAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU;AACZ,KAAA;AACA,IAAA;QACEJ,GAAAA,EAAK,iBAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU;AACZ,KAAA;AACA,IAAA;QACEJ,GAAAA,EAAK,cAAA;QACLC,WAAAA,EAAa,iBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,YAAA;QACLC,WAAAA,EAAa,MAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa,OAAA;QACbC,OAAAA,EAAS;AACP,YAAA;gBACEC,QAAAA,EAAU,uCAAA;gBACVC,QAAAA,EAAU;AAAC,oBAAA;AAAc;AAC3B;AACD;AACH,KAAA;AACA,IAAA;QACER,GAAAA,EAAK,cAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,cAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,cAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,YAAA;QACLC,WAAAA,EAAa,MAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa,OAAA;QACbC,OAAAA,EAAS;AACP,YAAA;gBACEC,QAAAA,EAAU,uCAAA;gBACVC,QAAAA,EAAU;AAAC,oBAAA;AAAc;AAC3B;AACD;AACH,KAAA;AACA,IAAA;QACER,GAAAA,EAAK,cAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,cAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,mBAAA;QACLC,WAAAA,EAAa,qCAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,YAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,qBAAA;QACLC,WAAAA,EAAa,uCAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,cAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,qBAAA;QACLC,WAAAA,EAAa,mBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,cAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,mBAAA;QACLC,WAAAA,EAAa,MAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,cAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,qBAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,cAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,yBAAA;QACLC,WAAAA,EAAa,YAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,cAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,qBAAA;QACLC,WAAAA,EAAa,iBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,cAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,mBAAA;QACLC,WAAAA,EAAa,mBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,YAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,iBAAA;QACLC,WAAAA,EAAa,MAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,YAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,mBAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,YAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,uBAAA;QACLC,WAAAA,EAAa,YAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,YAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,mBAAA;QACLC,WAAAA,EAAa,iBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,YAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,yBAAA;QACLC,WAAAA,EAAa,mCAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU;AACZ,KAAA;AACA,IAAA;QACEJ,GAAAA,EAAK,uBAAA;QACLC,WAAAA,EAAa,iCAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU;AACZ,KAAA;AACA,IAAA;QACEJ,GAAAA,EAAK,wBAAA;QACLC,WAAAA,EAAa,0CAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,wBAAA;QACLC,WAAAA,EAAa,mBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,sBAAA;QACLC,WAAAA,EAAa,MAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,wBAAA;QACLC,WAAAA,EAAa,QAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,4BAAA;QACLC,WAAAA,EAAa,YAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf,KAAA;AACA,IAAA;QACEL,GAAAA,EAAK,wBAAA;QACLC,WAAAA,EAAa,iBAAA;QACbC,UAAAA,EAAY,OAAA;QACZC,OAAAA,EAAS,UAAA;QACTC,QAAAA,EAAU,iBAAA;QACVC,WAAAA,EAAa;AACf;;AAGF,mBAAe;AACbN,IAAAA;AACF,CAAA;;;;;"}
1
+ {"version":3,"file":"admin-actions.js","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'debug-dump.read',\n displayName: 'Generate a support debug dump',\n pluginName: 'admin',\n section: 'settings',\n category: 'debug and support',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
@@ -225,6 +225,13 @@ const actions = [
225
225
  section: 'settings',
226
226
  category: 'project'
227
227
  },
228
+ {
229
+ uid: 'debug-dump.read',
230
+ displayName: 'Generate a support debug dump',
231
+ pluginName: 'admin',
232
+ section: 'settings',
233
+ category: 'debug and support'
234
+ },
228
235
  {
229
236
  uid: 'transfer.tokens.access',
230
237
  displayName: 'Access the transfer tokens settings page',
@@ -1 +1 @@
1
- {"version":3,"file":"admin-actions.mjs","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
1
+ {"version":3,"file":"admin-actions.mjs","sources":["../../../../../server/src/config/admin-actions.ts"],"sourcesContent":["export const actions = [\n {\n uid: 'marketplace.read',\n displayName: 'Access the marketplace',\n pluginName: 'admin',\n section: 'settings',\n category: 'plugins and marketplace',\n subCategory: 'marketplace',\n },\n {\n uid: 'webhooks.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'webhooks.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'webhooks',\n },\n {\n uid: 'users.create',\n displayName: 'Create (invite)',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::user'],\n },\n ],\n },\n {\n uid: 'users.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'users.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'users',\n },\n {\n uid: 'roles.create',\n displayName: 'Create',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['admin::role'],\n },\n ],\n },\n {\n uid: 'roles.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'roles.delete',\n displayName: 'Delete',\n pluginName: 'admin',\n section: 'settings',\n category: 'users and roles',\n subCategory: 'roles',\n },\n {\n uid: 'api-tokens.access',\n displayName: 'Access the API tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'api Tokens',\n },\n {\n uid: 'admin-tokens.access',\n displayName: 'Access the Admin tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'admin tokens',\n },\n {\n uid: 'admin-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'admin-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'admin tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'api-tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'api tokens',\n subCategory: 'general',\n },\n {\n uid: 'project-settings.update',\n displayName: 'Update the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'project-settings.read',\n displayName: 'Read the project level settings',\n pluginName: 'admin',\n section: 'settings',\n category: 'project',\n },\n {\n uid: 'debug-dump.read',\n displayName: 'Generate a support debug dump',\n pluginName: 'admin',\n section: 'settings',\n category: 'debug and support',\n },\n {\n uid: 'transfer.tokens.access',\n displayName: 'Access the transfer tokens settings page',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'transfer tokens',\n },\n {\n uid: 'transfer.tokens.create',\n displayName: 'Create (generate)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.regenerate',\n displayName: 'Regenerate',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n {\n uid: 'transfer.tokens.delete',\n displayName: 'Delete (revoke)',\n pluginName: 'admin',\n section: 'settings',\n category: 'transfer tokens',\n subCategory: 'general',\n },\n];\n\nexport default {\n actions,\n};\n"],"names":["actions","uid","displayName","pluginName","section","category","subCategory","aliases","actionId","subjects"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var utils = require('@strapi/utils');
4
- var fp = require('lodash/fp');
4
+ var _ = require('lodash');
5
5
  var index = require('../utils/index.js');
6
6
  var constants = require('../services/constants.js');
7
7
  var adminTokens = require('../validation/admin-tokens.js');
@@ -35,8 +35,8 @@ var adminToken = {
35
35
  }
36
36
  const attributes = {
37
37
  kind: 'admin',
38
- name: fp.trim(body.name),
39
- description: fp.trim(body.description),
38
+ name: _.trim(body.name),
39
+ description: _.trim(body.description),
40
40
  adminPermissions: body.adminPermissions,
41
41
  lifespan: body.lifespan,
42
42
  adminUserOwner: ctx.state.user.id
@@ -136,18 +136,18 @@ var adminToken = {
136
136
  const { id } = ctx.params;
137
137
  const apiTokenService = index.getService('api-token-admin');
138
138
  const mutableBody = body;
139
- if (fp.has('name', mutableBody)) {
140
- mutableBody.name = fp.trim(body.name ?? '');
139
+ if (_.has(mutableBody, 'name')) {
140
+ mutableBody.name = _.trim(body.name ?? '');
141
141
  }
142
- if (fp.has('description', mutableBody) || mutableBody.description === null) {
143
- mutableBody.description = fp.trim(body.description ?? '');
142
+ if (_.has(mutableBody, 'description') || mutableBody.description === null) {
143
+ mutableBody.description = _.trim(body.description ?? '');
144
144
  }
145
145
  await adminTokens.validateAdminTokenUpdateInput(body);
146
146
  const existingToken = await apiTokenService.getById(id);
147
147
  if (!existingToken) {
148
148
  return ctx.notFound('API Token not found');
149
149
  }
150
- if (fp.has('name', body)) {
150
+ if (_.has(body, 'name')) {
151
151
  const nameAlreadyTaken = await apiTokenService.getByName(body.name);
152
152
  if (nameAlreadyTaken !== null && !utils.strings.isEqual(nameAlreadyTaken.id, id)) {
153
153
  throw new ApplicationError('Name already taken');
@@ -1 +1 @@
1
- {"version":3,"file":"admin-token.js","sources":["../../../../../server/src/controllers/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport { strings, errors } from '@strapi/utils';\nimport { trim, has } from 'lodash/fp';\nimport { getService } from '../utils';\nimport constants from '../services/constants';\nimport {\n validateAdminTokenCreationInput,\n validateAdminTokenUpdateInput,\n} from '../validation/admin-tokens';\nimport {\n Create,\n List,\n Revoke,\n Get,\n Update,\n GetOwnerPermissions,\n AdminApiToken,\n} from '../../../shared/contracts/admin-token';\nimport type { ContentApiApiToken } from '../../../shared/contracts/api-token';\nimport type { AdminUser } from '../../../shared/contracts/shared';\n\nconst { ApplicationError } = errors;\n\n// ---------------------------------------------------------------------------\n// Access-control helpers\n// ---------------------------------------------------------------------------\n\nconst isSuperAdmin = (user: AdminUser): boolean =>\n user.roles.some((r) => r.code === constants.SUPER_ADMIN_CODE) === true;\n\nconst getOwnerId = (token: AdminApiToken): string => {\n const owner = token.adminUserOwner;\n return String(typeof owner === 'object' ? owner.id : owner);\n};\n\n/** Returns true when user is the recorded owner of an admin token. */\nconst isTokenOwner = (user: AdminUser, token: AdminApiToken): boolean =>\n getOwnerId(token) === String(user.id);\n\n/** Owner OR super-admin can manage an admin token (read metadata, update…). */\nconst canAccessAdminToken = (user: AdminUser, token: AdminApiToken): boolean =>\n isTokenOwner(user, token) || isSuperAdmin(user);\n\n// ---------------------------------------------------------------------------\n// Controller\n// ---------------------------------------------------------------------------\n\nexport default {\n // -------------------------------------------------------------------------\n // Create\n // -------------------------------------------------------------------------\n async create(ctx: Context) {\n const { body } = ctx.request as Create.Request;\n const apiTokenService = getService('api-token-admin');\n\n if ((body as ContentApiApiToken).type !== undefined) {\n return ctx.badRequest('Type is not allowed for admin tokens');\n }\n if ((body as ContentApiApiToken).permissions !== undefined) {\n return ctx.badRequest('Permissions are not allowed for admin tokens');\n }\n\n const attributes = {\n kind: 'admin' as const,\n name: trim(body.name),\n description: trim(body.description),\n adminPermissions: body.adminPermissions,\n lifespan: body.lifespan,\n adminUserOwner: ctx.state.user.id,\n };\n\n await validateAdminTokenCreationInput(attributes);\n\n const alreadyExists = await apiTokenService.exists({ name: attributes.name });\n if (alreadyExists) {\n throw new ApplicationError('Name already taken');\n }\n\n const apiToken = await apiTokenService.create(attributes, ctx.state.user);\n ctx.created({ data: apiToken });\n },\n\n // -------------------------------------------------------------------------\n // Regenerate — owner-only, super-admin does NOT bypass\n // -------------------------------------------------------------------------\n async regenerate(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (!isTokenOwner(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const accessToken = await apiTokenService.regenerate(id);\n ctx.created({ data: accessToken });\n },\n\n // -------------------------------------------------------------------------\n // List — always filtered to kind: 'admin'\n // -------------------------------------------------------------------------\n async list(ctx: Context) {\n const apiTokenService = getService('api-token-admin');\n const apiTokens = await apiTokenService.list(ctx.state.user);\n\n ctx.send({ data: apiTokens } satisfies List.Response);\n },\n\n // -------------------------------------------------------------------------\n // Revoke\n // -------------------------------------------------------------------------\n async revoke(ctx: Context) {\n const { id } = ctx.params as Revoke.Params;\n const apiTokenService = getService('api-token-admin');\n\n const existingToken = await apiTokenService.getById(id);\n if (existingToken === null) {\n return ctx.notFound('API Token not found');\n }\n\n if (canAccessAdminToken(ctx.state.user, existingToken) === false) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.revoke(id);\n ctx.deleted({ data: apiToken } satisfies Revoke.Response);\n },\n\n // -------------------------------------------------------------------------\n // Get — key exposed only to owner\n // -------------------------------------------------------------------------\n async get(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (canAccessAdminToken(ctx.state.user, token) === false) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (isTokenOwner(ctx.state.user, token)) {\n const withKey = await apiTokenService.getById(id, { includeDecryptedKey: true });\n ctx.send({ data: withKey ?? token } satisfies Get.Response);\n return;\n }\n\n ctx.send({ data: token } satisfies Get.Response);\n },\n\n // -------------------------------------------------------------------------\n // Update — owner or super-admin only\n // -------------------------------------------------------------------------\n async update(ctx: Context) {\n const { body } = ctx.request as Update.Request;\n const { id } = ctx.params as Update.Params;\n const apiTokenService = getService('api-token-admin');\n\n const mutableBody = body as Record<string, unknown>;\n if (has('name', mutableBody)) {\n mutableBody.name = trim(body.name ?? '');\n }\n if (has('description', mutableBody) || mutableBody.description === null) {\n mutableBody.description = trim(body.description ?? '');\n }\n\n await validateAdminTokenUpdateInput(body);\n\n const existingToken = await apiTokenService.getById(id);\n if (!existingToken) {\n return ctx.notFound('API Token not found');\n }\n\n if (has('name', body)) {\n const nameAlreadyTaken = await apiTokenService.getByName(body.name!);\n if (nameAlreadyTaken !== null && !strings.isEqual(nameAlreadyTaken.id, id)) {\n throw new ApplicationError('Name already taken');\n }\n }\n\n if (!canAccessAdminToken(ctx.state.user, existingToken)) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.update(id, body);\n ctx.send({ data: apiToken } satisfies Update.Response);\n },\n\n // -------------------------------------------------------------------------\n // Owner permissions — effective permissions of the token owner\n // -------------------------------------------------------------------------\n async getOwnerPermissions(ctx: Context) {\n const { id } = ctx.params as GetOwnerPermissions.Request['params'];\n const apiTokenService = getService('api-token-admin');\n const permissionService = getService('permission');\n const userService = getService('user');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n return ctx.notFound('apiToken.notFound');\n }\n\n if (!canAccessAdminToken(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const ownerId = getOwnerId(token);\n const ownerUser = await userService.findOne(ownerId);\n if (!ownerUser) {\n return ctx.notFound('owner.notFound');\n }\n\n const ownerPermissions = await permissionService.findUserPermissions(ownerUser);\n const sanitizedPermissions = ownerPermissions.map(permissionService.sanitizePermission);\n\n // @ts-expect-error - transform response type to sanitized permission\n ctx.body = { data: sanitizedPermissions } satisfies GetOwnerPermissions.Response;\n },\n};\n"],"names":["ApplicationError","errors","isSuperAdmin","user","roles","some","r","code","constants","SUPER_ADMIN_CODE","getOwnerId","token","owner","adminUserOwner","String","id","isTokenOwner","canAccessAdminToken","create","ctx","body","request","apiTokenService","getService","type","undefined","badRequest","permissions","attributes","kind","name","trim","description","adminPermissions","lifespan","state","validateAdminTokenCreationInput","alreadyExists","exists","apiToken","created","data","regenerate","params","getById","notFound","forbidden","accessToken","list","apiTokens","send","revoke","existingToken","deleted","get","withKey","includeDecryptedKey","update","mutableBody","has","validateAdminTokenUpdateInput","nameAlreadyTaken","getByName","strings","isEqual","getOwnerPermissions","permissionService","userService","ownerId","ownerUser","findOne","ownerPermissions","findUserPermissions","sanitizedPermissions","map","sanitizePermission"],"mappings":"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"}
1
+ {"version":3,"file":"admin-token.js","sources":["../../../../../server/src/controllers/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport { strings, errors } from '@strapi/utils';\nimport { trim, has } from 'lodash';\n\nimport { getService } from '../utils';\nimport constants from '../services/constants';\nimport {\n validateAdminTokenCreationInput,\n validateAdminTokenUpdateInput,\n} from '../validation/admin-tokens';\nimport {\n Create,\n List,\n Revoke,\n Get,\n Update,\n GetOwnerPermissions,\n AdminApiToken,\n} from '../../../shared/contracts/admin-token';\nimport type { ContentApiApiToken } from '../../../shared/contracts/api-token';\nimport type { AdminUser } from '../../../shared/contracts/shared';\n\nconst { ApplicationError } = errors;\n\n// ---------------------------------------------------------------------------\n// Access-control helpers\n// ---------------------------------------------------------------------------\n\nconst isSuperAdmin = (user: AdminUser): boolean =>\n user.roles.some((r) => r.code === constants.SUPER_ADMIN_CODE) === true;\n\nconst getOwnerId = (token: AdminApiToken): string => {\n const owner = token.adminUserOwner;\n return String(typeof owner === 'object' ? owner.id : owner);\n};\n\n/** Returns true when user is the recorded owner of an admin token. */\nconst isTokenOwner = (user: AdminUser, token: AdminApiToken): boolean =>\n getOwnerId(token) === String(user.id);\n\n/** Owner OR super-admin can manage an admin token (read metadata, update…). */\nconst canAccessAdminToken = (user: AdminUser, token: AdminApiToken): boolean =>\n isTokenOwner(user, token) || isSuperAdmin(user);\n\n// ---------------------------------------------------------------------------\n// Controller\n// ---------------------------------------------------------------------------\n\nexport default {\n // -------------------------------------------------------------------------\n // Create\n // -------------------------------------------------------------------------\n async create(ctx: Context) {\n const { body } = ctx.request as Create.Request;\n const apiTokenService = getService('api-token-admin');\n\n if ((body as ContentApiApiToken).type !== undefined) {\n return ctx.badRequest('Type is not allowed for admin tokens');\n }\n if ((body as ContentApiApiToken).permissions !== undefined) {\n return ctx.badRequest('Permissions are not allowed for admin tokens');\n }\n\n const attributes = {\n kind: 'admin' as const,\n name: trim(body.name),\n description: trim(body.description),\n adminPermissions: body.adminPermissions,\n lifespan: body.lifespan,\n adminUserOwner: ctx.state.user.id,\n };\n\n await validateAdminTokenCreationInput(attributes);\n\n const alreadyExists = await apiTokenService.exists({ name: attributes.name });\n if (alreadyExists) {\n throw new ApplicationError('Name already taken');\n }\n\n const apiToken = await apiTokenService.create(attributes, ctx.state.user);\n ctx.created({ data: apiToken });\n },\n\n // -------------------------------------------------------------------------\n // Regenerate — owner-only, super-admin does NOT bypass\n // -------------------------------------------------------------------------\n async regenerate(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (!isTokenOwner(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const accessToken = await apiTokenService.regenerate(id);\n ctx.created({ data: accessToken });\n },\n\n // -------------------------------------------------------------------------\n // List — always filtered to kind: 'admin'\n // -------------------------------------------------------------------------\n async list(ctx: Context) {\n const apiTokenService = getService('api-token-admin');\n const apiTokens = await apiTokenService.list(ctx.state.user);\n\n ctx.send({ data: apiTokens } satisfies List.Response);\n },\n\n // -------------------------------------------------------------------------\n // Revoke\n // -------------------------------------------------------------------------\n async revoke(ctx: Context) {\n const { id } = ctx.params as Revoke.Params;\n const apiTokenService = getService('api-token-admin');\n\n const existingToken = await apiTokenService.getById(id);\n if (existingToken === null) {\n return ctx.notFound('API Token not found');\n }\n\n if (canAccessAdminToken(ctx.state.user, existingToken) === false) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.revoke(id);\n ctx.deleted({ data: apiToken } satisfies Revoke.Response);\n },\n\n // -------------------------------------------------------------------------\n // Get — key exposed only to owner\n // -------------------------------------------------------------------------\n async get(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (canAccessAdminToken(ctx.state.user, token) === false) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (isTokenOwner(ctx.state.user, token)) {\n const withKey = await apiTokenService.getById(id, { includeDecryptedKey: true });\n ctx.send({ data: withKey ?? token } satisfies Get.Response);\n return;\n }\n\n ctx.send({ data: token } satisfies Get.Response);\n },\n\n // -------------------------------------------------------------------------\n // Update — owner or super-admin only\n // -------------------------------------------------------------------------\n async update(ctx: Context) {\n const { body } = ctx.request as Update.Request;\n const { id } = ctx.params as Update.Params;\n const apiTokenService = getService('api-token-admin');\n\n const mutableBody = body as Record<string, unknown>;\n if (has(mutableBody, 'name')) {\n mutableBody.name = trim(body.name ?? '');\n }\n if (has(mutableBody, 'description') || mutableBody.description === null) {\n mutableBody.description = trim(body.description ?? '');\n }\n\n await validateAdminTokenUpdateInput(body);\n\n const existingToken = await apiTokenService.getById(id);\n if (!existingToken) {\n return ctx.notFound('API Token not found');\n }\n\n if (has(body, 'name')) {\n const nameAlreadyTaken = await apiTokenService.getByName(body.name!);\n if (nameAlreadyTaken !== null && !strings.isEqual(nameAlreadyTaken.id, id)) {\n throw new ApplicationError('Name already taken');\n }\n }\n\n if (!canAccessAdminToken(ctx.state.user, existingToken)) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.update(id, body);\n ctx.send({ data: apiToken } satisfies Update.Response);\n },\n\n // -------------------------------------------------------------------------\n // Owner permissions — effective permissions of the token owner\n // -------------------------------------------------------------------------\n async getOwnerPermissions(ctx: Context) {\n const { id } = ctx.params as GetOwnerPermissions.Request['params'];\n const apiTokenService = getService('api-token-admin');\n const permissionService = getService('permission');\n const userService = getService('user');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n return ctx.notFound('apiToken.notFound');\n }\n\n if (!canAccessAdminToken(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const ownerId = getOwnerId(token);\n const ownerUser = await userService.findOne(ownerId);\n if (!ownerUser) {\n return ctx.notFound('owner.notFound');\n }\n\n const ownerPermissions = await permissionService.findUserPermissions(ownerUser);\n const sanitizedPermissions = ownerPermissions.map(permissionService.sanitizePermission);\n\n // @ts-expect-error - transform response type to sanitized permission\n ctx.body = { data: sanitizedPermissions } satisfies GetOwnerPermissions.Response;\n },\n};\n"],"names":["ApplicationError","errors","isSuperAdmin","user","roles","some","r","code","constants","SUPER_ADMIN_CODE","getOwnerId","token","owner","adminUserOwner","String","id","isTokenOwner","canAccessAdminToken","create","ctx","body","request","apiTokenService","getService","type","undefined","badRequest","permissions","attributes","kind","name","trim","description","adminPermissions","lifespan","state","validateAdminTokenCreationInput","alreadyExists","exists","apiToken","created","data","regenerate","params","getById","notFound","forbidden","accessToken","list","apiTokens","send","revoke","existingToken","deleted","get","withKey","includeDecryptedKey","update","mutableBody","has","validateAdminTokenUpdateInput","nameAlreadyTaken","getByName","strings","isEqual","getOwnerPermissions","permissionService","userService","ownerId","ownerUser","findOne","ownerPermissions","findUserPermissions","sanitizedPermissions","map","sanitizePermission"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { errors, strings } from '@strapi/utils';
2
- import { has, trim } from 'lodash/fp';
2
+ import { has, trim } from 'lodash';
3
3
  import { getService } from '../utils/index.mjs';
4
4
  import constants from '../services/constants.mjs';
5
5
  import { validateAdminTokenUpdateInput, validateAdminTokenCreationInput } from '../validation/admin-tokens.mjs';
@@ -134,10 +134,10 @@ var adminToken = {
134
134
  const { id } = ctx.params;
135
135
  const apiTokenService = getService('api-token-admin');
136
136
  const mutableBody = body;
137
- if (has('name', mutableBody)) {
137
+ if (has(mutableBody, 'name')) {
138
138
  mutableBody.name = trim(body.name ?? '');
139
139
  }
140
- if (has('description', mutableBody) || mutableBody.description === null) {
140
+ if (has(mutableBody, 'description') || mutableBody.description === null) {
141
141
  mutableBody.description = trim(body.description ?? '');
142
142
  }
143
143
  await validateAdminTokenUpdateInput(body);
@@ -145,7 +145,7 @@ var adminToken = {
145
145
  if (!existingToken) {
146
146
  return ctx.notFound('API Token not found');
147
147
  }
148
- if (has('name', body)) {
148
+ if (has(body, 'name')) {
149
149
  const nameAlreadyTaken = await apiTokenService.getByName(body.name);
150
150
  if (nameAlreadyTaken !== null && !strings.isEqual(nameAlreadyTaken.id, id)) {
151
151
  throw new ApplicationError('Name already taken');
@@ -1 +1 @@
1
- {"version":3,"file":"admin-token.mjs","sources":["../../../../../server/src/controllers/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport { strings, errors } from '@strapi/utils';\nimport { trim, has } from 'lodash/fp';\nimport { getService } from '../utils';\nimport constants from '../services/constants';\nimport {\n validateAdminTokenCreationInput,\n validateAdminTokenUpdateInput,\n} from '../validation/admin-tokens';\nimport {\n Create,\n List,\n Revoke,\n Get,\n Update,\n GetOwnerPermissions,\n AdminApiToken,\n} from '../../../shared/contracts/admin-token';\nimport type { ContentApiApiToken } from '../../../shared/contracts/api-token';\nimport type { AdminUser } from '../../../shared/contracts/shared';\n\nconst { ApplicationError } = errors;\n\n// ---------------------------------------------------------------------------\n// Access-control helpers\n// ---------------------------------------------------------------------------\n\nconst isSuperAdmin = (user: AdminUser): boolean =>\n user.roles.some((r) => r.code === constants.SUPER_ADMIN_CODE) === true;\n\nconst getOwnerId = (token: AdminApiToken): string => {\n const owner = token.adminUserOwner;\n return String(typeof owner === 'object' ? owner.id : owner);\n};\n\n/** Returns true when user is the recorded owner of an admin token. */\nconst isTokenOwner = (user: AdminUser, token: AdminApiToken): boolean =>\n getOwnerId(token) === String(user.id);\n\n/** Owner OR super-admin can manage an admin token (read metadata, update…). */\nconst canAccessAdminToken = (user: AdminUser, token: AdminApiToken): boolean =>\n isTokenOwner(user, token) || isSuperAdmin(user);\n\n// ---------------------------------------------------------------------------\n// Controller\n// ---------------------------------------------------------------------------\n\nexport default {\n // -------------------------------------------------------------------------\n // Create\n // -------------------------------------------------------------------------\n async create(ctx: Context) {\n const { body } = ctx.request as Create.Request;\n const apiTokenService = getService('api-token-admin');\n\n if ((body as ContentApiApiToken).type !== undefined) {\n return ctx.badRequest('Type is not allowed for admin tokens');\n }\n if ((body as ContentApiApiToken).permissions !== undefined) {\n return ctx.badRequest('Permissions are not allowed for admin tokens');\n }\n\n const attributes = {\n kind: 'admin' as const,\n name: trim(body.name),\n description: trim(body.description),\n adminPermissions: body.adminPermissions,\n lifespan: body.lifespan,\n adminUserOwner: ctx.state.user.id,\n };\n\n await validateAdminTokenCreationInput(attributes);\n\n const alreadyExists = await apiTokenService.exists({ name: attributes.name });\n if (alreadyExists) {\n throw new ApplicationError('Name already taken');\n }\n\n const apiToken = await apiTokenService.create(attributes, ctx.state.user);\n ctx.created({ data: apiToken });\n },\n\n // -------------------------------------------------------------------------\n // Regenerate — owner-only, super-admin does NOT bypass\n // -------------------------------------------------------------------------\n async regenerate(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (!isTokenOwner(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const accessToken = await apiTokenService.regenerate(id);\n ctx.created({ data: accessToken });\n },\n\n // -------------------------------------------------------------------------\n // List — always filtered to kind: 'admin'\n // -------------------------------------------------------------------------\n async list(ctx: Context) {\n const apiTokenService = getService('api-token-admin');\n const apiTokens = await apiTokenService.list(ctx.state.user);\n\n ctx.send({ data: apiTokens } satisfies List.Response);\n },\n\n // -------------------------------------------------------------------------\n // Revoke\n // -------------------------------------------------------------------------\n async revoke(ctx: Context) {\n const { id } = ctx.params as Revoke.Params;\n const apiTokenService = getService('api-token-admin');\n\n const existingToken = await apiTokenService.getById(id);\n if (existingToken === null) {\n return ctx.notFound('API Token not found');\n }\n\n if (canAccessAdminToken(ctx.state.user, existingToken) === false) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.revoke(id);\n ctx.deleted({ data: apiToken } satisfies Revoke.Response);\n },\n\n // -------------------------------------------------------------------------\n // Get — key exposed only to owner\n // -------------------------------------------------------------------------\n async get(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (canAccessAdminToken(ctx.state.user, token) === false) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (isTokenOwner(ctx.state.user, token)) {\n const withKey = await apiTokenService.getById(id, { includeDecryptedKey: true });\n ctx.send({ data: withKey ?? token } satisfies Get.Response);\n return;\n }\n\n ctx.send({ data: token } satisfies Get.Response);\n },\n\n // -------------------------------------------------------------------------\n // Update — owner or super-admin only\n // -------------------------------------------------------------------------\n async update(ctx: Context) {\n const { body } = ctx.request as Update.Request;\n const { id } = ctx.params as Update.Params;\n const apiTokenService = getService('api-token-admin');\n\n const mutableBody = body as Record<string, unknown>;\n if (has('name', mutableBody)) {\n mutableBody.name = trim(body.name ?? '');\n }\n if (has('description', mutableBody) || mutableBody.description === null) {\n mutableBody.description = trim(body.description ?? '');\n }\n\n await validateAdminTokenUpdateInput(body);\n\n const existingToken = await apiTokenService.getById(id);\n if (!existingToken) {\n return ctx.notFound('API Token not found');\n }\n\n if (has('name', body)) {\n const nameAlreadyTaken = await apiTokenService.getByName(body.name!);\n if (nameAlreadyTaken !== null && !strings.isEqual(nameAlreadyTaken.id, id)) {\n throw new ApplicationError('Name already taken');\n }\n }\n\n if (!canAccessAdminToken(ctx.state.user, existingToken)) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.update(id, body);\n ctx.send({ data: apiToken } satisfies Update.Response);\n },\n\n // -------------------------------------------------------------------------\n // Owner permissions — effective permissions of the token owner\n // -------------------------------------------------------------------------\n async getOwnerPermissions(ctx: Context) {\n const { id } = ctx.params as GetOwnerPermissions.Request['params'];\n const apiTokenService = getService('api-token-admin');\n const permissionService = getService('permission');\n const userService = getService('user');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n return ctx.notFound('apiToken.notFound');\n }\n\n if (!canAccessAdminToken(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const ownerId = getOwnerId(token);\n const ownerUser = await userService.findOne(ownerId);\n if (!ownerUser) {\n return ctx.notFound('owner.notFound');\n }\n\n const ownerPermissions = await permissionService.findUserPermissions(ownerUser);\n const sanitizedPermissions = ownerPermissions.map(permissionService.sanitizePermission);\n\n // @ts-expect-error - transform response type to sanitized permission\n ctx.body = { data: sanitizedPermissions } satisfies GetOwnerPermissions.Response;\n },\n};\n"],"names":["ApplicationError","errors","isSuperAdmin","user","roles","some","r","code","constants","SUPER_ADMIN_CODE","getOwnerId","token","owner","adminUserOwner","String","id","isTokenOwner","canAccessAdminToken","create","ctx","body","request","apiTokenService","getService","type","undefined","badRequest","permissions","attributes","kind","name","trim","description","adminPermissions","lifespan","state","validateAdminTokenCreationInput","alreadyExists","exists","apiToken","created","data","regenerate","params","getById","notFound","forbidden","accessToken","list","apiTokens","send","revoke","existingToken","deleted","get","withKey","includeDecryptedKey","update","mutableBody","has","validateAdminTokenUpdateInput","nameAlreadyTaken","getByName","strings","isEqual","getOwnerPermissions","permissionService","userService","ownerId","ownerUser","findOne","ownerPermissions","findUserPermissions","sanitizedPermissions","map","sanitizePermission"],"mappings":"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"}
1
+ {"version":3,"file":"admin-token.mjs","sources":["../../../../../server/src/controllers/admin-token.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport { strings, errors } from '@strapi/utils';\nimport { trim, has } from 'lodash';\n\nimport { getService } from '../utils';\nimport constants from '../services/constants';\nimport {\n validateAdminTokenCreationInput,\n validateAdminTokenUpdateInput,\n} from '../validation/admin-tokens';\nimport {\n Create,\n List,\n Revoke,\n Get,\n Update,\n GetOwnerPermissions,\n AdminApiToken,\n} from '../../../shared/contracts/admin-token';\nimport type { ContentApiApiToken } from '../../../shared/contracts/api-token';\nimport type { AdminUser } from '../../../shared/contracts/shared';\n\nconst { ApplicationError } = errors;\n\n// ---------------------------------------------------------------------------\n// Access-control helpers\n// ---------------------------------------------------------------------------\n\nconst isSuperAdmin = (user: AdminUser): boolean =>\n user.roles.some((r) => r.code === constants.SUPER_ADMIN_CODE) === true;\n\nconst getOwnerId = (token: AdminApiToken): string => {\n const owner = token.adminUserOwner;\n return String(typeof owner === 'object' ? owner.id : owner);\n};\n\n/** Returns true when user is the recorded owner of an admin token. */\nconst isTokenOwner = (user: AdminUser, token: AdminApiToken): boolean =>\n getOwnerId(token) === String(user.id);\n\n/** Owner OR super-admin can manage an admin token (read metadata, update…). */\nconst canAccessAdminToken = (user: AdminUser, token: AdminApiToken): boolean =>\n isTokenOwner(user, token) || isSuperAdmin(user);\n\n// ---------------------------------------------------------------------------\n// Controller\n// ---------------------------------------------------------------------------\n\nexport default {\n // -------------------------------------------------------------------------\n // Create\n // -------------------------------------------------------------------------\n async create(ctx: Context) {\n const { body } = ctx.request as Create.Request;\n const apiTokenService = getService('api-token-admin');\n\n if ((body as ContentApiApiToken).type !== undefined) {\n return ctx.badRequest('Type is not allowed for admin tokens');\n }\n if ((body as ContentApiApiToken).permissions !== undefined) {\n return ctx.badRequest('Permissions are not allowed for admin tokens');\n }\n\n const attributes = {\n kind: 'admin' as const,\n name: trim(body.name),\n description: trim(body.description),\n adminPermissions: body.adminPermissions,\n lifespan: body.lifespan,\n adminUserOwner: ctx.state.user.id,\n };\n\n await validateAdminTokenCreationInput(attributes);\n\n const alreadyExists = await apiTokenService.exists({ name: attributes.name });\n if (alreadyExists) {\n throw new ApplicationError('Name already taken');\n }\n\n const apiToken = await apiTokenService.create(attributes, ctx.state.user);\n ctx.created({ data: apiToken });\n },\n\n // -------------------------------------------------------------------------\n // Regenerate — owner-only, super-admin does NOT bypass\n // -------------------------------------------------------------------------\n async regenerate(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (!isTokenOwner(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const accessToken = await apiTokenService.regenerate(id);\n ctx.created({ data: accessToken });\n },\n\n // -------------------------------------------------------------------------\n // List — always filtered to kind: 'admin'\n // -------------------------------------------------------------------------\n async list(ctx: Context) {\n const apiTokenService = getService('api-token-admin');\n const apiTokens = await apiTokenService.list(ctx.state.user);\n\n ctx.send({ data: apiTokens } satisfies List.Response);\n },\n\n // -------------------------------------------------------------------------\n // Revoke\n // -------------------------------------------------------------------------\n async revoke(ctx: Context) {\n const { id } = ctx.params as Revoke.Params;\n const apiTokenService = getService('api-token-admin');\n\n const existingToken = await apiTokenService.getById(id);\n if (existingToken === null) {\n return ctx.notFound('API Token not found');\n }\n\n if (canAccessAdminToken(ctx.state.user, existingToken) === false) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.revoke(id);\n ctx.deleted({ data: apiToken } satisfies Revoke.Response);\n },\n\n // -------------------------------------------------------------------------\n // Get — key exposed only to owner\n // -------------------------------------------------------------------------\n async get(ctx: Context) {\n const { id } = ctx.params;\n const apiTokenService = getService('api-token-admin');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (canAccessAdminToken(ctx.state.user, token) === false) {\n ctx.notFound('API Token not found');\n return;\n }\n\n if (isTokenOwner(ctx.state.user, token)) {\n const withKey = await apiTokenService.getById(id, { includeDecryptedKey: true });\n ctx.send({ data: withKey ?? token } satisfies Get.Response);\n return;\n }\n\n ctx.send({ data: token } satisfies Get.Response);\n },\n\n // -------------------------------------------------------------------------\n // Update — owner or super-admin only\n // -------------------------------------------------------------------------\n async update(ctx: Context) {\n const { body } = ctx.request as Update.Request;\n const { id } = ctx.params as Update.Params;\n const apiTokenService = getService('api-token-admin');\n\n const mutableBody = body as Record<string, unknown>;\n if (has(mutableBody, 'name')) {\n mutableBody.name = trim(body.name ?? '');\n }\n if (has(mutableBody, 'description') || mutableBody.description === null) {\n mutableBody.description = trim(body.description ?? '');\n }\n\n await validateAdminTokenUpdateInput(body);\n\n const existingToken = await apiTokenService.getById(id);\n if (!existingToken) {\n return ctx.notFound('API Token not found');\n }\n\n if (has(body, 'name')) {\n const nameAlreadyTaken = await apiTokenService.getByName(body.name!);\n if (nameAlreadyTaken !== null && !strings.isEqual(nameAlreadyTaken.id, id)) {\n throw new ApplicationError('Name already taken');\n }\n }\n\n if (!canAccessAdminToken(ctx.state.user, existingToken)) {\n return ctx.forbidden();\n }\n\n const apiToken = await apiTokenService.update(id, body);\n ctx.send({ data: apiToken } satisfies Update.Response);\n },\n\n // -------------------------------------------------------------------------\n // Owner permissions — effective permissions of the token owner\n // -------------------------------------------------------------------------\n async getOwnerPermissions(ctx: Context) {\n const { id } = ctx.params as GetOwnerPermissions.Request['params'];\n const apiTokenService = getService('api-token-admin');\n const permissionService = getService('permission');\n const userService = getService('user');\n\n const token = await apiTokenService.getById(id);\n if (!token) {\n return ctx.notFound('apiToken.notFound');\n }\n\n if (!canAccessAdminToken(ctx.state.user, token)) {\n return ctx.forbidden();\n }\n\n const ownerId = getOwnerId(token);\n const ownerUser = await userService.findOne(ownerId);\n if (!ownerUser) {\n return ctx.notFound('owner.notFound');\n }\n\n const ownerPermissions = await permissionService.findUserPermissions(ownerUser);\n const sanitizedPermissions = ownerPermissions.map(permissionService.sanitizePermission);\n\n // @ts-expect-error - transform response type to sanitized permission\n ctx.body = { data: sanitizedPermissions } satisfies GetOwnerPermissions.Response;\n },\n};\n"],"names":["ApplicationError","errors","isSuperAdmin","user","roles","some","r","code","constants","SUPER_ADMIN_CODE","getOwnerId","token","owner","adminUserOwner","String","id","isTokenOwner","canAccessAdminToken","create","ctx","body","request","apiTokenService","getService","type","undefined","badRequest","permissions","attributes","kind","name","trim","description","adminPermissions","lifespan","state","validateAdminTokenCreationInput","alreadyExists","exists","apiToken","created","data","regenerate","params","getById","notFound","forbidden","accessToken","list","apiTokens","send","revoke","existingToken","deleted","get","withKey","includeDecryptedKey","update","mutableBody","has","validateAdminTokenUpdateInput","nameAlreadyTaken","getByName","strings","isEqual","getOwnerPermissions","permissionService","userService","ownerId","ownerUser","findOne","ownerPermissions","findUserPermissions","sanitizedPermissions","map","sanitizePermission"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var path = require('path');
4
- var fp = require('lodash/fp');
5
3
  var _ = require('lodash');
4
+ var path = require('path');
6
5
  var fse = require('fs-extra');
7
6
  var utils = require('@strapi/utils');
8
7
  var projectSettings = require('../validation/project-settings.js');
@@ -10,8 +9,8 @@ var index = require('../utils/index.js');
10
9
 
11
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
11
 
13
- var path__default = /*#__PURE__*/_interopDefault(path);
14
12
  var ___default = /*#__PURE__*/_interopDefault(_);
13
+ var path__default = /*#__PURE__*/_interopDefault(path);
15
14
 
16
15
  let lazyTsUtils;
17
16
  const isUsingTypeScript = (...args)=>{
@@ -88,8 +87,7 @@ const isUsingTypeScript = (...args)=>{
88
87
  const numberOfAllContentTypes = ___default.default.size(strapi.contentTypes);
89
88
  const numberOfComponents = ___default.default.size(strapi.components);
90
89
  const getNumberOfDynamicZones = ()=>{
91
- return fp.pipe(fp.map('attributes'), fp.flatMap(fp.values), // @ts-expect-error lodash types
92
- fp.sumBy(fp.propEq('type', 'dynamiczone')))(strapi.contentTypes);
90
+ return Object.values(strapi.contentTypes).flatMap((contentType)=>Object.values(contentType.attributes)).filter((attribute)=>attribute.type === 'dynamiczone').length;
93
91
  };
94
92
  const getNumberOfFolders = async ()=>{
95
93
  try {
@@ -133,6 +131,12 @@ const isUsingTypeScript = (...args)=>{
133
131
  }
134
132
  };
135
133
  },
134
+ async debugDump () {
135
+ const data = await index.getService('debug-dump').generate();
136
+ return {
137
+ data
138
+ };
139
+ },
136
140
  async plugins (ctx) {
137
141
  const enabledPlugins = strapi.config.get('enabledPlugins');
138
142
  // List of core plugins that are always enabled,
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { map, values, sumBy, pipe, flatMap, propEq } from 'lodash/fp';\nimport _ from 'lodash';\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n GetProjectType,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return pipe(\n map('attributes'),\n flatMap(values),\n // @ts-expect-error lodash types\n sumBy(propEq('type', 'dynamiczone'))\n )(strapi.contentTypes as any);\n };\n\n const getNumberOfFolders = async (): Promise<number> => {\n try {\n const contentStructure = strapi.get('content-structure') as\n | { countGroups?: () => Promise<number> }\n | undefined;\n\n return (await contentStructure?.countGroups?.()) ?? 0;\n } catch {\n return 0;\n }\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfContentTypeFolders: await getNumberOfFolders(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","isTrial","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","pipe","map","flatMap","values","sumBy","propEq","getNumberOfFolders","contentStructure","countGroups","numberOfDynamicZones","numberOfContentTypeFolders","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","plugins","enabledPlugins","CORE_PLUGINS","Object","entries","filter","key","includes","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sources":["../../../../../server/src/controllers/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\n\nimport path from 'path';\n\nimport { exists } from 'fs-extra';\nimport { env } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\nimport {\n validateUpdateProjectSettings,\n validateUpdateProjectSettingsFiles,\n validateUpdateProjectSettingsImagesDimensions,\n} from '../validation/project-settings';\nimport { getService } from '../utils';\n\nimport type {\n Init,\n GetProjectSettings,\n GetProjectType,\n Information,\n Plugins,\n TelemetryProperties,\n UpdateProjectSettings,\n GetGuidedTourMeta,\n DebugDump,\n} from '../../../shared/contracts/admin';\n\n// Lazy: only resolved on first GET /admin/project-type request\ntype TsUtilsModule = typeof import('@strapi/typescript-utils');\nlet lazyTsUtils: TsUtilsModule | undefined;\nconst isUsingTypeScript: TsUtilsModule['isUsingTypeScript'] = (\n ...args: Parameters<TsUtilsModule['isUsingTypeScript']>\n) => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return (lazyTsUtils as TsUtilsModule).isUsingTypeScript(...args);\n};\n\n/**\n * A set of functions called \"actions\" for `Admin`\n */\nexport default {\n // TODO very temporary to check the switch ee/ce\n // When removing this we need to update the /admin/src/index.js file\n // whe,re we set the strapi.window.isEE value\n\n // NOTE: admin/ee/server overrides this controller, and adds the EE features\n // This returns an empty feature list for CE\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n },\n\n async init() {\n let uuid = strapi.config.get('uuid', false);\n const hasAdmin = await getService('user').exists();\n const { menuLogo, authLogo } = await getService('project-settings').getProjectSettings();\n // set to null if telemetryDisabled flag not avaialble in package.json\n const telemetryDisabled: boolean | null = strapi.config.get(\n 'packageJsonStrapi.telemetryDisabled',\n null\n );\n\n if (telemetryDisabled !== null && telemetryDisabled === true) {\n uuid = false;\n }\n\n return {\n data: {\n uuid,\n hasAdmin,\n menuLogo: menuLogo ? menuLogo.url : null,\n authLogo: authLogo ? authLogo.url : null,\n },\n } satisfies Init.Response;\n },\n\n async getProjectSettings() {\n return getService(\n 'project-settings'\n ).getProjectSettings() satisfies Promise<GetProjectSettings.Response>;\n },\n\n async updateProjectSettings(ctx: Context) {\n const {\n request: { files, body },\n } = ctx as { request: UpdateProjectSettings.Request };\n\n const projectSettingsService = getService('project-settings');\n\n await validateUpdateProjectSettings(body);\n await validateUpdateProjectSettingsFiles(files);\n\n const formatedFiles = await projectSettingsService.parseFilesData(files);\n await validateUpdateProjectSettingsImagesDimensions(formatedFiles);\n\n return projectSettingsService.updateProjectSettings({\n ...body,\n ...formatedFiles,\n }) satisfies Promise<UpdateProjectSettings.Response>;\n },\n\n async telemetryProperties(ctx: Context) {\n // If the telemetry is disabled, ignore the request and return early\n if (strapi.telemetry.isDisabled) {\n ctx.status = 204;\n return;\n }\n\n const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);\n const useTypescriptOnAdmin = await isUsingTypeScript(\n path.join(strapi.dirs.app.root, 'src', 'admin')\n );\n const isHostedOnStrapiCloud = env('STRAPI_HOSTING', null) === 'strapi.cloud';\n\n const numberOfAllContentTypes = _.size(strapi.contentTypes);\n const numberOfComponents = _.size(strapi.components);\n\n const getNumberOfDynamicZones = () => {\n return Object.values(strapi.contentTypes)\n .flatMap((contentType: Struct.ContentTypeSchema) => Object.values(contentType.attributes))\n .filter((attribute) => attribute.type === 'dynamiczone').length;\n };\n\n const getNumberOfFolders = async (): Promise<number> => {\n try {\n const contentStructure = strapi.get('content-structure') as\n | { countGroups?: () => Promise<number> }\n | undefined;\n\n return (await contentStructure?.countGroups?.()) ?? 0;\n } catch {\n return 0;\n }\n };\n\n return {\n data: {\n useTypescriptOnServer,\n useTypescriptOnAdmin,\n isHostedOnStrapiCloud,\n numberOfAllContentTypes, // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents,\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfContentTypeFolders: await getNumberOfFolders(),\n },\n } satisfies TelemetryProperties.Response;\n },\n\n async information() {\n const currentEnvironment: string = strapi.config.get('environment');\n const autoReload = strapi.config.get('autoReload', false);\n const strapiVersion = strapi.config.get('info.strapi', null);\n const dependencies = strapi.config.get('info.dependencies', {});\n const projectId = strapi.config.get('uuid', null);\n const nodeVersion = process.version;\n const communityEdition = !strapi.EE;\n const useYarn: boolean = await exists(path.join(process.cwd(), 'yarn.lock'));\n\n return {\n data: {\n currentEnvironment,\n autoReload,\n strapiVersion,\n dependencies,\n projectId,\n nodeVersion,\n communityEdition,\n useYarn,\n },\n } satisfies Information.Response;\n },\n\n async debugDump() {\n const data = await getService('debug-dump').generate();\n\n return { data } satisfies DebugDump.Response;\n },\n\n async plugins(ctx: Context) {\n const enabledPlugins = strapi.config.get('enabledPlugins') as any;\n\n // List of core plugins that are always enabled,\n // and so it's not necessary to display them in the plugins list\n const CORE_PLUGINS = [\n 'content-manager',\n 'content-type-builder',\n 'email',\n 'upload',\n 'i18n',\n 'content-releases',\n 'review-workflows',\n ];\n\n const plugins = Object.entries(enabledPlugins)\n .filter(([key]: any) => !CORE_PLUGINS.includes(key))\n .map(([key, plugin]: any) => ({\n name: plugin.info.name || key,\n displayName: plugin.info.displayName || plugin.info.name || key,\n description: plugin.info.description || '',\n packageName: plugin.info.packageName,\n }));\n\n ctx.send({ plugins } satisfies Plugins.Response);\n },\n\n async licenseTrialTimeLeft() {\n const data = await strapi.ee.getTrialEndDate({\n strapi,\n });\n\n return data;\n },\n\n async getGuidedTourMeta(ctx: Context) {\n const isFirstSuperAdminUser = await getService('user').isFirstSuperAdminUser(ctx.state.user.id);\n\n return {\n data: {\n isFirstSuperAdminUser,\n schemas: strapi.contentTypes,\n },\n } satisfies GetGuidedTourMeta.Response;\n },\n};\n"],"names":["lazyTsUtils","isUsingTypeScript","args","require","getProjectType","flags","strapi","config","get","data","isEE","isTrial","features","ai","enabled","init","uuid","hasAdmin","getService","exists","menuLogo","authLogo","getProjectSettings","telemetryDisabled","url","updateProjectSettings","ctx","request","files","body","projectSettingsService","validateUpdateProjectSettings","validateUpdateProjectSettingsFiles","formatedFiles","parseFilesData","validateUpdateProjectSettingsImagesDimensions","telemetryProperties","telemetry","isDisabled","status","useTypescriptOnServer","dirs","app","root","useTypescriptOnAdmin","path","join","isHostedOnStrapiCloud","env","numberOfAllContentTypes","_","size","contentTypes","numberOfComponents","components","getNumberOfDynamicZones","Object","values","flatMap","contentType","attributes","filter","attribute","type","length","getNumberOfFolders","contentStructure","countGroups","numberOfDynamicZones","numberOfContentTypeFolders","information","currentEnvironment","autoReload","strapiVersion","dependencies","projectId","nodeVersion","process","version","communityEdition","EE","useYarn","cwd","debugDump","generate","plugins","enabledPlugins","CORE_PLUGINS","entries","key","includes","map","plugin","name","info","displayName","description","packageName","send","licenseTrialTimeLeft","ee","getTrialEndDate","getGuidedTourMeta","isFirstSuperAdminUser","state","user","id","schemas"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import path from 'path';
2
- import { pipe, map, flatMap, values, sumBy, propEq } from 'lodash/fp';
3
1
  import ___default from 'lodash';
2
+ import path from 'path';
4
3
  import { exists } from 'fs-extra';
5
4
  import { env } from '@strapi/utils';
6
5
  import { validateUpdateProjectSettings, validateUpdateProjectSettingsFiles, validateUpdateProjectSettingsImagesDimensions } from '../validation/project-settings.mjs';
@@ -81,8 +80,7 @@ const isUsingTypeScript = (...args)=>{
81
80
  const numberOfAllContentTypes = ___default.size(strapi.contentTypes);
82
81
  const numberOfComponents = ___default.size(strapi.components);
83
82
  const getNumberOfDynamicZones = ()=>{
84
- return pipe(map('attributes'), flatMap(values), // @ts-expect-error lodash types
85
- sumBy(propEq('type', 'dynamiczone')))(strapi.contentTypes);
83
+ return Object.values(strapi.contentTypes).flatMap((contentType)=>Object.values(contentType.attributes)).filter((attribute)=>attribute.type === 'dynamiczone').length;
86
84
  };
87
85
  const getNumberOfFolders = async ()=>{
88
86
  try {
@@ -126,6 +124,12 @@ const isUsingTypeScript = (...args)=>{
126
124
  }
127
125
  };
128
126
  },
127
+ async debugDump () {
128
+ const data = await getService('debug-dump').generate();
129
+ return {
130
+ data
131
+ };
132
+ },
129
133
  async plugins (ctx) {
130
134
  const enabledPlugins = strapi.config.get('enabledPlugins');
131
135
  // List of core plugins that are always enabled,