@strapi/plugin-users-permissions 0.0.0-experimental.62ebf57bb35846666febb5ee2078fe02fe990f57 → 0.0.0-experimental.6340da17068c3bed7fb006e7bcc554c71129e282

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 (783) hide show
  1. package/.eslintrc.cjs +29 -0
  2. package/admin/src/components/BoundRoute/index.jsx +3 -3
  3. package/admin/src/components/FormModal/Input/index.jsx +33 -32
  4. package/admin/src/components/FormModal/index.jsx +58 -69
  5. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.jsx +4 -3
  6. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +20 -22
  7. package/admin/src/components/Permissions/index.jsx +27 -35
  8. package/admin/src/components/Permissions/reducer.js +1 -1
  9. package/admin/src/components/Policies/index.jsx +9 -6
  10. package/admin/src/components/UsersPermissions/index.jsx +16 -7
  11. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  12. package/admin/src/index.js +17 -34
  13. package/admin/src/pages/AdvancedSettings/index.jsx +85 -129
  14. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  15. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  16. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +121 -140
  17. package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +21 -18
  18. package/admin/src/pages/EmailTemplates/index.jsx +36 -62
  19. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  20. package/admin/src/pages/Providers/index.jsx +97 -114
  21. package/admin/src/pages/Providers/utils/forms.js +23 -11
  22. package/admin/src/pages/Roles/constants.js +3 -3
  23. package/admin/src/pages/Roles/hooks/usePlugins.js +4 -4
  24. package/admin/src/pages/Roles/index.jsx +10 -19
  25. package/admin/src/pages/Roles/pages/CreatePage.jsx +74 -61
  26. package/admin/src/pages/Roles/pages/EditPage.jsx +70 -69
  27. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +28 -32
  28. package/admin/src/pages/Roles/pages/ListPage/index.jsx +152 -129
  29. package/admin/src/pluginId.js +2 -2
  30. package/admin/src/translations/cs.json +42 -5
  31. package/admin/src/translations/de.json +27 -2
  32. package/admin/src/translations/en.json +2 -1
  33. package/admin/src/translations/ja.json +46 -7
  34. package/admin/src/translations/nl.json +40 -1
  35. package/admin/src/translations/pl.json +2 -1
  36. package/admin/src/translations/sk.json +41 -4
  37. package/admin/src/translations/uk.json +41 -4
  38. package/admin/src/utils/formatPluginName.js +1 -1
  39. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  40. package/dist/admin/components/BoundRoute/getMethodColor.js +49 -0
  41. package/dist/admin/components/BoundRoute/getMethodColor.js.map +1 -0
  42. package/dist/admin/components/BoundRoute/getMethodColor.mjs +47 -0
  43. package/dist/admin/components/BoundRoute/getMethodColor.mjs.map +1 -0
  44. package/dist/admin/components/BoundRoute/index.js +104 -0
  45. package/dist/admin/components/BoundRoute/index.js.map +1 -0
  46. package/dist/admin/components/BoundRoute/index.mjs +96 -0
  47. package/dist/admin/components/BoundRoute/index.mjs.map +1 -0
  48. package/dist/admin/components/FormModal/Input/index.js +127 -0
  49. package/dist/admin/components/FormModal/Input/index.js.map +1 -0
  50. package/dist/admin/components/FormModal/Input/index.mjs +121 -0
  51. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -0
  52. package/dist/admin/components/FormModal/index.js +114 -0
  53. package/dist/admin/components/FormModal/index.js.map +1 -0
  54. package/dist/admin/components/FormModal/index.mjs +108 -0
  55. package/dist/admin/components/FormModal/index.mjs.map +1 -0
  56. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js +33 -0
  57. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js.map +1 -0
  58. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs +31 -0
  59. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs.map +1 -0
  60. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +163 -0
  61. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -0
  62. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +156 -0
  63. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -0
  64. package/dist/admin/components/Permissions/PermissionRow/index.js +55 -0
  65. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -0
  66. package/dist/admin/components/Permissions/PermissionRow/index.mjs +48 -0
  67. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -0
  68. package/dist/admin/components/Permissions/index.js +52 -0
  69. package/dist/admin/components/Permissions/index.js.map +1 -0
  70. package/dist/admin/components/Permissions/index.mjs +50 -0
  71. package/dist/admin/components/Permissions/index.mjs.map +1 -0
  72. package/dist/admin/components/Permissions/init.js +15 -0
  73. package/dist/admin/components/Permissions/init.js.map +1 -0
  74. package/dist/admin/components/Permissions/init.mjs +13 -0
  75. package/dist/admin/components/Permissions/init.mjs.map +1 -0
  76. package/dist/admin/components/Permissions/reducer.js +34 -0
  77. package/dist/admin/components/Permissions/reducer.js.map +1 -0
  78. package/dist/admin/components/Permissions/reducer.mjs +31 -0
  79. package/dist/admin/components/Permissions/reducer.mjs.map +1 -0
  80. package/dist/admin/components/Policies/index.js +74 -0
  81. package/dist/admin/components/Policies/index.js.map +1 -0
  82. package/dist/admin/components/Policies/index.mjs +66 -0
  83. package/dist/admin/components/Policies/index.mjs.map +1 -0
  84. package/dist/admin/components/UsersPermissions/index.js +120 -0
  85. package/dist/admin/components/UsersPermissions/index.js.map +1 -0
  86. package/dist/admin/components/UsersPermissions/index.mjs +114 -0
  87. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -0
  88. package/dist/admin/components/UsersPermissions/init.js +13 -0
  89. package/dist/admin/components/UsersPermissions/init.js.map +1 -0
  90. package/dist/admin/components/UsersPermissions/init.mjs +11 -0
  91. package/dist/admin/components/UsersPermissions/init.mjs.map +1 -0
  92. package/dist/admin/components/UsersPermissions/reducer.js +79 -0
  93. package/dist/admin/components/UsersPermissions/reducer.js.map +1 -0
  94. package/dist/admin/components/UsersPermissions/reducer.mjs +68 -0
  95. package/dist/admin/components/UsersPermissions/reducer.mjs.map +1 -0
  96. package/dist/admin/constants.js +81 -0
  97. package/dist/admin/constants.js.map +1 -0
  98. package/dist/admin/constants.mjs +79 -0
  99. package/dist/admin/constants.mjs.map +1 -0
  100. package/dist/admin/contexts/UsersPermissionsContext/index.js +27 -0
  101. package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -0
  102. package/dist/admin/contexts/UsersPermissionsContext/index.mjs +19 -0
  103. package/dist/admin/contexts/UsersPermissionsContext/index.mjs.map +1 -0
  104. package/dist/admin/index.js +124 -4
  105. package/dist/admin/index.js.map +1 -1
  106. package/dist/admin/index.mjs +119 -4
  107. package/dist/admin/index.mjs.map +1 -1
  108. package/dist/admin/package.json.js +9 -0
  109. package/dist/admin/package.json.js.map +1 -0
  110. package/dist/admin/package.json.mjs +6 -0
  111. package/dist/admin/package.json.mjs.map +1 -0
  112. package/dist/admin/pages/AdvancedSettings/index.js +195 -0
  113. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -0
  114. package/dist/admin/pages/AdvancedSettings/index.mjs +192 -0
  115. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -0
  116. package/dist/admin/pages/AdvancedSettings/utils/layout.js +83 -0
  117. package/dist/admin/pages/AdvancedSettings/utils/layout.js.map +1 -0
  118. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs +81 -0
  119. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs.map +1 -0
  120. package/dist/admin/pages/AdvancedSettings/utils/schema.js +41 -0
  121. package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -0
  122. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs +19 -0
  123. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs.map +1 -0
  124. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +176 -0
  125. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -0
  126. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +170 -0
  127. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -0
  128. package/dist/admin/pages/EmailTemplates/components/EmailTable.js +149 -0
  129. package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -0
  130. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs +143 -0
  131. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs.map +1 -0
  132. package/dist/admin/pages/EmailTemplates/index.js +158 -0
  133. package/dist/admin/pages/EmailTemplates/index.js.map +1 -0
  134. package/dist/admin/pages/EmailTemplates/index.mjs +135 -0
  135. package/dist/admin/pages/EmailTemplates/index.mjs.map +1 -0
  136. package/dist/admin/pages/EmailTemplates/utils/schema.js +51 -0
  137. package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -0
  138. package/dist/admin/pages/EmailTemplates/utils/schema.mjs +29 -0
  139. package/dist/admin/pages/EmailTemplates/utils/schema.mjs.map +1 -0
  140. package/dist/admin/pages/Providers/index.js +278 -0
  141. package/dist/admin/pages/Providers/index.js.map +1 -0
  142. package/dist/admin/pages/Providers/index.mjs +250 -0
  143. package/dist/admin/pages/Providers/index.mjs.map +1 -0
  144. package/dist/admin/pages/Providers/utils/forms.js +282 -0
  145. package/dist/admin/pages/Providers/utils/forms.js.map +1 -0
  146. package/dist/admin/pages/Providers/utils/forms.mjs +260 -0
  147. package/dist/admin/pages/Providers/utils/forms.mjs.map +1 -0
  148. package/dist/admin/pages/Roles/constants.js +32 -0
  149. package/dist/admin/pages/Roles/constants.js.map +1 -0
  150. package/dist/admin/pages/Roles/constants.mjs +10 -0
  151. package/dist/admin/pages/Roles/constants.mjs.map +1 -0
  152. package/dist/admin/pages/Roles/hooks/usePlugins.js +78 -0
  153. package/dist/admin/pages/Roles/hooks/usePlugins.js.map +1 -0
  154. package/dist/admin/pages/Roles/hooks/usePlugins.mjs +76 -0
  155. package/dist/admin/pages/Roles/hooks/usePlugins.mjs.map +1 -0
  156. package/dist/admin/pages/Roles/index.js +35 -0
  157. package/dist/admin/pages/Roles/index.js.map +1 -0
  158. package/dist/admin/pages/Roles/index.mjs +33 -0
  159. package/dist/admin/pages/Roles/index.mjs.map +1 -0
  160. package/dist/admin/pages/Roles/pages/CreatePage.js +240 -0
  161. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -0
  162. package/dist/admin/pages/Roles/pages/CreatePage.mjs +217 -0
  163. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -0
  164. package/dist/admin/pages/Roles/pages/EditPage.js +241 -0
  165. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -0
  166. package/dist/admin/pages/Roles/pages/EditPage.mjs +218 -0
  167. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -0
  168. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +129 -0
  169. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -0
  170. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs +123 -0
  171. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -0
  172. package/dist/admin/pages/Roles/pages/ListPage/index.js +234 -0
  173. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -0
  174. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +231 -0
  175. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -0
  176. package/dist/admin/pluginId.js +8 -0
  177. package/dist/admin/pluginId.js.map +1 -0
  178. package/dist/admin/pluginId.mjs +6 -0
  179. package/dist/admin/pluginId.mjs.map +1 -0
  180. package/dist/admin/translations/ar.json.js +45 -0
  181. package/dist/admin/translations/ar.json.js.map +1 -0
  182. package/dist/admin/translations/ar.json.mjs +43 -0
  183. package/dist/admin/translations/ar.json.mjs.map +1 -0
  184. package/dist/admin/translations/cs.json.js +88 -0
  185. package/dist/admin/translations/cs.json.js.map +1 -0
  186. package/dist/admin/translations/cs.json.mjs +86 -0
  187. package/dist/admin/translations/cs.json.mjs.map +1 -0
  188. package/dist/admin/translations/da.json.js +87 -0
  189. package/dist/admin/translations/da.json.js.map +1 -0
  190. package/dist/admin/translations/da.json.mjs +85 -0
  191. package/dist/admin/translations/da.json.mjs.map +1 -0
  192. package/dist/admin/translations/de.json.js +88 -0
  193. package/dist/admin/translations/de.json.js.map +1 -0
  194. package/dist/admin/translations/de.json.mjs +86 -0
  195. package/dist/admin/translations/de.json.mjs.map +1 -0
  196. package/dist/admin/translations/en.json.js +88 -0
  197. package/dist/admin/translations/en.json.js.map +1 -0
  198. package/dist/admin/translations/en.json.mjs +86 -0
  199. package/dist/admin/translations/en.json.mjs.map +1 -0
  200. package/dist/admin/translations/es.json.js +87 -0
  201. package/dist/admin/translations/es.json.js.map +1 -0
  202. package/dist/admin/translations/es.json.mjs +85 -0
  203. package/dist/admin/translations/es.json.mjs.map +1 -0
  204. package/dist/admin/translations/fr.json.js +51 -0
  205. package/dist/admin/translations/fr.json.js.map +1 -0
  206. package/dist/admin/translations/fr.json.mjs +49 -0
  207. package/dist/admin/translations/fr.json.mjs.map +1 -0
  208. package/dist/admin/translations/id.json.js +63 -0
  209. package/dist/admin/translations/id.json.js.map +1 -0
  210. package/dist/admin/translations/id.json.mjs +61 -0
  211. package/dist/admin/translations/id.json.mjs.map +1 -0
  212. package/dist/admin/translations/it.json.js +63 -0
  213. package/dist/admin/translations/it.json.js.map +1 -0
  214. package/dist/admin/translations/it.json.mjs +61 -0
  215. package/dist/admin/translations/it.json.mjs.map +1 -0
  216. package/dist/admin/translations/ja.json.js +88 -0
  217. package/dist/admin/translations/ja.json.js.map +1 -0
  218. package/dist/admin/translations/ja.json.mjs +86 -0
  219. package/dist/admin/translations/ja.json.mjs.map +1 -0
  220. package/dist/admin/translations/ko.json.js +87 -0
  221. package/dist/admin/translations/ko.json.js.map +1 -0
  222. package/dist/admin/translations/ko.json.mjs +85 -0
  223. package/dist/admin/translations/ko.json.mjs.map +1 -0
  224. package/dist/admin/translations/ms.json.js +50 -0
  225. package/dist/admin/translations/ms.json.js.map +1 -0
  226. package/dist/admin/translations/ms.json.mjs +48 -0
  227. package/dist/admin/translations/ms.json.mjs.map +1 -0
  228. package/dist/admin/translations/nl.json.js +88 -0
  229. package/dist/admin/translations/nl.json.js.map +1 -0
  230. package/dist/admin/translations/nl.json.mjs +86 -0
  231. package/dist/admin/translations/nl.json.mjs.map +1 -0
  232. package/dist/admin/translations/pl.json.js +88 -0
  233. package/dist/admin/translations/pl.json.js.map +1 -0
  234. package/dist/admin/translations/pl.json.mjs +86 -0
  235. package/dist/admin/translations/pl.json.mjs.map +1 -0
  236. package/dist/admin/translations/pt-BR.json.js +45 -0
  237. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  238. package/dist/admin/translations/pt-BR.json.mjs +43 -0
  239. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  240. package/dist/admin/translations/pt.json.js +49 -0
  241. package/dist/admin/translations/pt.json.js.map +1 -0
  242. package/dist/admin/translations/pt.json.mjs +47 -0
  243. package/dist/admin/translations/pt.json.mjs.map +1 -0
  244. package/dist/admin/translations/ru.json.js +87 -0
  245. package/dist/admin/translations/ru.json.js.map +1 -0
  246. package/dist/admin/translations/ru.json.mjs +85 -0
  247. package/dist/admin/translations/ru.json.mjs.map +1 -0
  248. package/dist/admin/translations/sk.json.js +88 -0
  249. package/dist/admin/translations/sk.json.js.map +1 -0
  250. package/dist/admin/translations/sk.json.mjs +86 -0
  251. package/dist/admin/translations/sk.json.mjs.map +1 -0
  252. package/dist/admin/translations/sv.json.js +87 -0
  253. package/dist/admin/translations/sv.json.js.map +1 -0
  254. package/dist/admin/translations/sv.json.mjs +85 -0
  255. package/dist/admin/translations/sv.json.mjs.map +1 -0
  256. package/dist/admin/translations/th.json.js +61 -0
  257. package/dist/admin/translations/th.json.js.map +1 -0
  258. package/dist/admin/translations/th.json.mjs +59 -0
  259. package/dist/admin/translations/th.json.mjs.map +1 -0
  260. package/dist/admin/translations/tr.json.js +86 -0
  261. package/dist/admin/translations/tr.json.js.map +1 -0
  262. package/dist/admin/translations/tr.json.mjs +84 -0
  263. package/dist/admin/translations/tr.json.mjs.map +1 -0
  264. package/dist/admin/translations/uk.json.js +87 -0
  265. package/dist/admin/translations/uk.json.js.map +1 -0
  266. package/dist/admin/translations/uk.json.mjs +85 -0
  267. package/dist/admin/translations/uk.json.mjs.map +1 -0
  268. package/dist/admin/translations/vi.json.js +51 -0
  269. package/dist/admin/translations/vi.json.js.map +1 -0
  270. package/dist/admin/translations/vi.json.mjs +49 -0
  271. package/dist/admin/translations/vi.json.mjs.map +1 -0
  272. package/dist/admin/translations/zh-Hans.json.js +87 -0
  273. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  274. package/dist/admin/translations/zh-Hans.json.mjs +85 -0
  275. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  276. package/dist/admin/translations/zh.json.js +87 -0
  277. package/dist/admin/translations/zh.json.js.map +1 -0
  278. package/dist/admin/translations/zh.json.mjs +85 -0
  279. package/dist/admin/translations/zh.json.mjs.map +1 -0
  280. package/dist/admin/utils/cleanPermissions.js +28 -0
  281. package/dist/admin/utils/cleanPermissions.js.map +1 -0
  282. package/dist/admin/utils/cleanPermissions.mjs +22 -0
  283. package/dist/admin/utils/cleanPermissions.mjs.map +1 -0
  284. package/dist/admin/utils/formatPluginName.js +33 -0
  285. package/dist/admin/utils/formatPluginName.js.map +1 -0
  286. package/dist/admin/utils/formatPluginName.mjs +27 -0
  287. package/dist/admin/utils/formatPluginName.mjs.map +1 -0
  288. package/dist/admin/utils/getTrad.js +8 -0
  289. package/dist/admin/utils/getTrad.js.map +1 -0
  290. package/dist/admin/utils/getTrad.mjs +6 -0
  291. package/dist/admin/utils/getTrad.mjs.map +1 -0
  292. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  293. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  294. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  295. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  296. package/dist/server/_virtual/_commonjsHelpers.js +8 -0
  297. package/dist/server/_virtual/_commonjsHelpers.js.map +1 -0
  298. package/dist/server/_virtual/_commonjsHelpers.mjs +6 -0
  299. package/dist/server/_virtual/_commonjsHelpers.mjs.map +1 -0
  300. package/dist/server/_virtual/rateLimit.js +6 -0
  301. package/dist/server/_virtual/rateLimit.js.map +1 -0
  302. package/dist/server/_virtual/rateLimit.mjs +4 -0
  303. package/dist/server/_virtual/rateLimit.mjs.map +1 -0
  304. package/dist/server/bootstrap/index.js +171 -0
  305. package/dist/server/bootstrap/index.js.map +1 -0
  306. package/dist/server/bootstrap/index.mjs +164 -0
  307. package/dist/server/bootstrap/index.mjs.map +1 -0
  308. package/dist/server/bootstrap/users-permissions-actions.js +98 -0
  309. package/dist/server/bootstrap/users-permissions-actions.js.map +1 -0
  310. package/dist/server/bootstrap/users-permissions-actions.mjs +96 -0
  311. package/dist/server/bootstrap/users-permissions-actions.mjs.map +1 -0
  312. package/dist/server/config.js +70 -0
  313. package/dist/server/config.js.map +1 -0
  314. package/dist/server/config.mjs +68 -0
  315. package/dist/server/config.mjs.map +1 -0
  316. package/dist/server/content-types/index.js +30 -0
  317. package/dist/server/content-types/index.js.map +1 -0
  318. package/dist/server/content-types/index.mjs +28 -0
  319. package/dist/server/content-types/index.mjs.map +1 -0
  320. package/dist/server/content-types/permission/index.js +44 -0
  321. package/dist/server/content-types/permission/index.js.map +1 -0
  322. package/dist/server/content-types/permission/index.mjs +42 -0
  323. package/dist/server/content-types/permission/index.mjs.map +1 -0
  324. package/dist/server/content-types/role/index.js +61 -0
  325. package/dist/server/content-types/role/index.js.map +1 -0
  326. package/dist/server/content-types/role/index.mjs +59 -0
  327. package/dist/server/content-types/role/index.mjs.map +1 -0
  328. package/dist/server/content-types/user/index.js +84 -0
  329. package/dist/server/content-types/user/index.js.map +1 -0
  330. package/dist/server/content-types/user/index.mjs +82 -0
  331. package/dist/server/content-types/user/index.mjs.map +1 -0
  332. package/dist/server/content-types/user/schema-config.js +25 -0
  333. package/dist/server/content-types/user/schema-config.js.map +1 -0
  334. package/dist/server/content-types/user/schema-config.mjs +23 -0
  335. package/dist/server/content-types/user/schema-config.mjs.map +1 -0
  336. package/dist/server/controllers/auth.js +658 -0
  337. package/dist/server/controllers/auth.js.map +1 -0
  338. package/dist/server/controllers/auth.mjs +648 -0
  339. package/dist/server/controllers/auth.mjs.map +1 -0
  340. package/dist/server/controllers/content-manager-user.js +173 -0
  341. package/dist/server/controllers/content-manager-user.js.map +1 -0
  342. package/dist/server/controllers/content-manager-user.mjs +166 -0
  343. package/dist/server/controllers/content-manager-user.mjs.map +1 -0
  344. package/dist/server/controllers/index.js +33 -0
  345. package/dist/server/controllers/index.js.map +1 -0
  346. package/dist/server/controllers/index.mjs +31 -0
  347. package/dist/server/controllers/index.mjs.map +1 -0
  348. package/dist/server/controllers/permissions.js +41 -0
  349. package/dist/server/controllers/permissions.js.map +1 -0
  350. package/dist/server/controllers/permissions.mjs +35 -0
  351. package/dist/server/controllers/permissions.mjs.map +1 -0
  352. package/dist/server/controllers/role.js +96 -0
  353. package/dist/server/controllers/role.js.map +1 -0
  354. package/dist/server/controllers/role.mjs +89 -0
  355. package/dist/server/controllers/role.mjs.map +1 -0
  356. package/dist/server/controllers/settings.js +112 -0
  357. package/dist/server/controllers/settings.js.map +1 -0
  358. package/dist/server/controllers/settings.mjs +105 -0
  359. package/dist/server/controllers/settings.mjs.map +1 -0
  360. package/dist/server/controllers/user.js +206 -0
  361. package/dist/server/controllers/user.js.map +1 -0
  362. package/dist/server/controllers/user.mjs +199 -0
  363. package/dist/server/controllers/user.mjs.map +1 -0
  364. package/dist/server/controllers/validation/auth.js +135 -0
  365. package/dist/server/controllers/validation/auth.js.map +1 -0
  366. package/dist/server/controllers/validation/auth.mjs +129 -0
  367. package/dist/server/controllers/validation/auth.mjs.map +1 -0
  368. package/dist/server/controllers/validation/email-template.js +77 -0
  369. package/dist/server/controllers/validation/email-template.js.map +1 -0
  370. package/dist/server/controllers/validation/email-template.mjs +70 -0
  371. package/dist/server/controllers/validation/email-template.mjs.map +1 -0
  372. package/dist/server/controllers/validation/user.js +65 -0
  373. package/dist/server/controllers/validation/user.js.map +1 -0
  374. package/dist/server/controllers/validation/user.mjs +59 -0
  375. package/dist/server/controllers/validation/user.mjs.map +1 -0
  376. package/dist/server/graphql/index.js +66 -0
  377. package/dist/server/graphql/index.js.map +1 -0
  378. package/dist/server/graphql/index.mjs +64 -0
  379. package/dist/server/graphql/index.mjs.map +1 -0
  380. package/dist/server/graphql/mutations/auth/change-password.js +44 -0
  381. package/dist/server/graphql/mutations/auth/change-password.js.map +1 -0
  382. package/dist/server/graphql/mutations/auth/change-password.mjs +38 -0
  383. package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -0
  384. package/dist/server/graphql/mutations/auth/email-confirmation.js +42 -0
  385. package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -0
  386. package/dist/server/graphql/mutations/auth/email-confirmation.mjs +36 -0
  387. package/dist/server/graphql/mutations/auth/email-confirmation.mjs.map +1 -0
  388. package/dist/server/graphql/mutations/auth/forgot-password.js +41 -0
  389. package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -0
  390. package/dist/server/graphql/mutations/auth/forgot-password.mjs +35 -0
  391. package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -0
  392. package/dist/server/graphql/mutations/auth/login.js +44 -0
  393. package/dist/server/graphql/mutations/auth/login.js.map +1 -0
  394. package/dist/server/graphql/mutations/auth/login.mjs +38 -0
  395. package/dist/server/graphql/mutations/auth/login.mjs.map +1 -0
  396. package/dist/server/graphql/mutations/auth/register.js +42 -0
  397. package/dist/server/graphql/mutations/auth/register.js.map +1 -0
  398. package/dist/server/graphql/mutations/auth/register.mjs +36 -0
  399. package/dist/server/graphql/mutations/auth/register.mjs.map +1 -0
  400. package/dist/server/graphql/mutations/auth/reset-password.js +44 -0
  401. package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -0
  402. package/dist/server/graphql/mutations/auth/reset-password.mjs +38 -0
  403. package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -0
  404. package/dist/server/graphql/mutations/crud/role/create-role.js +41 -0
  405. package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -0
  406. package/dist/server/graphql/mutations/crud/role/create-role.mjs +35 -0
  407. package/dist/server/graphql/mutations/crud/role/create-role.mjs.map +1 -0
  408. package/dist/server/graphql/mutations/crud/role/delete-role.js +32 -0
  409. package/dist/server/graphql/mutations/crud/role/delete-role.js.map +1 -0
  410. package/dist/server/graphql/mutations/crud/role/delete-role.mjs +30 -0
  411. package/dist/server/graphql/mutations/crud/role/delete-role.mjs.map +1 -0
  412. package/dist/server/graphql/mutations/crud/role/update-role.js +39 -0
  413. package/dist/server/graphql/mutations/crud/role/update-role.js.map +1 -0
  414. package/dist/server/graphql/mutations/crud/role/update-role.mjs +37 -0
  415. package/dist/server/graphql/mutations/crud/role/update-role.mjs.map +1 -0
  416. package/dist/server/graphql/mutations/crud/user/create-user.js +50 -0
  417. package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -0
  418. package/dist/server/graphql/mutations/crud/user/create-user.mjs +44 -0
  419. package/dist/server/graphql/mutations/crud/user/create-user.mjs.map +1 -0
  420. package/dist/server/graphql/mutations/crud/user/delete-user.js +44 -0
  421. package/dist/server/graphql/mutations/crud/user/delete-user.js.map +1 -0
  422. package/dist/server/graphql/mutations/crud/user/delete-user.mjs +42 -0
  423. package/dist/server/graphql/mutations/crud/user/delete-user.mjs.map +1 -0
  424. package/dist/server/graphql/mutations/crud/user/update-user.js +53 -0
  425. package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -0
  426. package/dist/server/graphql/mutations/crud/user/update-user.mjs +47 -0
  427. package/dist/server/graphql/mutations/crud/user/update-user.mjs.map +1 -0
  428. package/dist/server/graphql/mutations/index.js +58 -0
  429. package/dist/server/graphql/mutations/index.js.map +1 -0
  430. package/dist/server/graphql/mutations/index.mjs +56 -0
  431. package/dist/server/graphql/mutations/index.mjs.map +1 -0
  432. package/dist/server/graphql/queries/index.js +25 -0
  433. package/dist/server/graphql/queries/index.js.map +1 -0
  434. package/dist/server/graphql/queries/index.mjs +23 -0
  435. package/dist/server/graphql/queries/index.mjs.map +1 -0
  436. package/dist/server/graphql/queries/me.js +23 -0
  437. package/dist/server/graphql/queries/me.js.map +1 -0
  438. package/dist/server/graphql/queries/me.mjs +21 -0
  439. package/dist/server/graphql/queries/me.mjs.map +1 -0
  440. package/dist/server/graphql/resolvers-configs.js +93 -0
  441. package/dist/server/graphql/resolvers-configs.js.map +1 -0
  442. package/dist/server/graphql/resolvers-configs.mjs +91 -0
  443. package/dist/server/graphql/resolvers-configs.mjs.map +1 -0
  444. package/dist/server/graphql/types/create-role-payload.js +20 -0
  445. package/dist/server/graphql/types/create-role-payload.js.map +1 -0
  446. package/dist/server/graphql/types/create-role-payload.mjs +18 -0
  447. package/dist/server/graphql/types/create-role-payload.mjs.map +1 -0
  448. package/dist/server/graphql/types/delete-role-payload.js +20 -0
  449. package/dist/server/graphql/types/delete-role-payload.js.map +1 -0
  450. package/dist/server/graphql/types/delete-role-payload.mjs +18 -0
  451. package/dist/server/graphql/types/delete-role-payload.mjs.map +1 -0
  452. package/dist/server/graphql/types/index.js +41 -0
  453. package/dist/server/graphql/types/index.js.map +1 -0
  454. package/dist/server/graphql/types/index.mjs +39 -0
  455. package/dist/server/graphql/types/index.mjs.map +1 -0
  456. package/dist/server/graphql/types/login-input.js +24 -0
  457. package/dist/server/graphql/types/login-input.js.map +1 -0
  458. package/dist/server/graphql/types/login-input.mjs +22 -0
  459. package/dist/server/graphql/types/login-input.mjs.map +1 -0
  460. package/dist/server/graphql/types/login-payload.js +23 -0
  461. package/dist/server/graphql/types/login-payload.js.map +1 -0
  462. package/dist/server/graphql/types/login-payload.mjs +21 -0
  463. package/dist/server/graphql/types/login-payload.mjs.map +1 -0
  464. package/dist/server/graphql/types/me-role.js +23 -0
  465. package/dist/server/graphql/types/me-role.js.map +1 -0
  466. package/dist/server/graphql/types/me-role.mjs +21 -0
  467. package/dist/server/graphql/types/me-role.mjs.map +1 -0
  468. package/dist/server/graphql/types/me.js +28 -0
  469. package/dist/server/graphql/types/me.js.map +1 -0
  470. package/dist/server/graphql/types/me.mjs +26 -0
  471. package/dist/server/graphql/types/me.mjs.map +1 -0
  472. package/dist/server/graphql/types/password-payload.js +20 -0
  473. package/dist/server/graphql/types/password-payload.js.map +1 -0
  474. package/dist/server/graphql/types/password-payload.mjs +18 -0
  475. package/dist/server/graphql/types/password-payload.mjs.map +1 -0
  476. package/dist/server/graphql/types/register-input.js +22 -0
  477. package/dist/server/graphql/types/register-input.js.map +1 -0
  478. package/dist/server/graphql/types/register-input.mjs +20 -0
  479. package/dist/server/graphql/types/register-input.mjs.map +1 -0
  480. package/dist/server/graphql/types/update-role-payload.js +20 -0
  481. package/dist/server/graphql/types/update-role-payload.js.map +1 -0
  482. package/dist/server/graphql/types/update-role-payload.mjs +18 -0
  483. package/dist/server/graphql/types/update-role-payload.mjs.map +1 -0
  484. package/dist/server/graphql/types/user-input.js +26 -0
  485. package/dist/server/graphql/types/user-input.js.map +1 -0
  486. package/dist/server/graphql/types/user-input.mjs +24 -0
  487. package/dist/server/graphql/types/user-input.mjs.map +1 -0
  488. package/dist/server/graphql/utils.js +36 -0
  489. package/dist/server/graphql/utils.js.map +1 -0
  490. package/dist/server/graphql/utils.mjs +30 -0
  491. package/dist/server/graphql/utils.mjs.map +1 -0
  492. package/dist/server/index.js +10 -0
  493. package/dist/server/index.js.map +1 -0
  494. package/dist/server/index.mjs +8 -0
  495. package/dist/server/index.mjs.map +1 -0
  496. package/dist/server/index2.js +39 -0
  497. package/dist/server/index2.js.map +1 -0
  498. package/dist/server/index2.mjs +37 -0
  499. package/dist/server/index2.mjs.map +1 -0
  500. package/dist/server/middlewares/index.js +18 -0
  501. package/dist/server/middlewares/index.js.map +1 -0
  502. package/dist/server/middlewares/index.mjs +16 -0
  503. package/dist/server/middlewares/index.mjs.map +1 -0
  504. package/dist/server/middlewares/rateLimit.js +127 -0
  505. package/dist/server/middlewares/rateLimit.js.map +1 -0
  506. package/dist/server/middlewares/rateLimit.mjs +118 -0
  507. package/dist/server/middlewares/rateLimit.mjs.map +1 -0
  508. package/dist/server/register.js +46 -0
  509. package/dist/server/register.js.map +1 -0
  510. package/dist/server/register.mjs +39 -0
  511. package/dist/server/register.mjs.map +1 -0
  512. package/dist/server/routes/admin/index.js +27 -0
  513. package/dist/server/routes/admin/index.js.map +1 -0
  514. package/dist/server/routes/admin/index.mjs +25 -0
  515. package/dist/server/routes/admin/index.mjs.map +1 -0
  516. package/dist/server/routes/admin/permissions.js +29 -0
  517. package/dist/server/routes/admin/permissions.js.map +1 -0
  518. package/dist/server/routes/admin/permissions.mjs +27 -0
  519. package/dist/server/routes/admin/permissions.mjs.map +1 -0
  520. package/dist/server/routes/admin/role.js +99 -0
  521. package/dist/server/routes/admin/role.js.map +1 -0
  522. package/dist/server/routes/admin/role.mjs +97 -0
  523. package/dist/server/routes/admin/role.mjs.map +1 -0
  524. package/dist/server/routes/admin/settings.js +116 -0
  525. package/dist/server/routes/admin/settings.js.map +1 -0
  526. package/dist/server/routes/admin/settings.mjs +114 -0
  527. package/dist/server/routes/admin/settings.mjs.map +1 -0
  528. package/dist/server/routes/content-api/auth.js +187 -0
  529. package/dist/server/routes/content-api/auth.js.map +1 -0
  530. package/dist/server/routes/content-api/auth.mjs +185 -0
  531. package/dist/server/routes/content-api/auth.mjs.map +1 -0
  532. package/dist/server/routes/content-api/index.js +36 -0
  533. package/dist/server/routes/content-api/index.js.map +1 -0
  534. package/dist/server/routes/content-api/index.mjs +30 -0
  535. package/dist/server/routes/content-api/index.mjs.map +1 -0
  536. package/dist/server/routes/content-api/permissions.js +26 -0
  537. package/dist/server/routes/content-api/permissions.js.map +1 -0
  538. package/dist/server/routes/content-api/permissions.mjs +24 -0
  539. package/dist/server/routes/content-api/permissions.mjs.map +1 -0
  540. package/dist/server/routes/content-api/role.js +73 -0
  541. package/dist/server/routes/content-api/role.js.map +1 -0
  542. package/dist/server/routes/content-api/role.mjs +71 -0
  543. package/dist/server/routes/content-api/role.mjs.map +1 -0
  544. package/dist/server/routes/content-api/user.js +136 -0
  545. package/dist/server/routes/content-api/user.js.map +1 -0
  546. package/dist/server/routes/content-api/user.mjs +130 -0
  547. package/dist/server/routes/content-api/user.mjs.map +1 -0
  548. package/dist/server/routes/content-api/validation.js +249 -0
  549. package/dist/server/routes/content-api/validation.js.map +1 -0
  550. package/dist/server/routes/content-api/validation.mjs +242 -0
  551. package/dist/server/routes/content-api/validation.mjs.map +1 -0
  552. package/dist/server/routes/index.js +19 -0
  553. package/dist/server/routes/index.js.map +1 -0
  554. package/dist/server/routes/index.mjs +17 -0
  555. package/dist/server/routes/index.mjs.map +1 -0
  556. package/dist/server/services/constants.js +19 -0
  557. package/dist/server/services/constants.js.map +1 -0
  558. package/dist/server/services/constants.mjs +17 -0
  559. package/dist/server/services/constants.mjs.map +1 -0
  560. package/dist/server/services/index.js +36 -0
  561. package/dist/server/services/index.js.map +1 -0
  562. package/dist/server/services/index.mjs +34 -0
  563. package/dist/server/services/index.mjs.map +1 -0
  564. package/dist/server/services/jwt.js +100 -0
  565. package/dist/server/services/jwt.js.map +1 -0
  566. package/dist/server/services/jwt.mjs +93 -0
  567. package/dist/server/services/jwt.mjs.map +1 -0
  568. package/dist/server/services/permission.js +52 -0
  569. package/dist/server/services/permission.js.map +1 -0
  570. package/dist/server/services/permission.mjs +50 -0
  571. package/dist/server/services/permission.mjs.map +1 -0
  572. package/dist/server/services/providers-registry.js +563 -0
  573. package/dist/server/services/providers-registry.js.map +1 -0
  574. package/dist/server/services/providers-registry.mjs +553 -0
  575. package/dist/server/services/providers-registry.mjs.map +1 -0
  576. package/dist/server/services/providers.js +120 -0
  577. package/dist/server/services/providers.js.map +1 -0
  578. package/dist/server/services/providers.mjs +113 -0
  579. package/dist/server/services/providers.mjs.map +1 -0
  580. package/dist/server/services/role.js +191 -0
  581. package/dist/server/services/role.js.map +1 -0
  582. package/dist/server/services/role.mjs +184 -0
  583. package/dist/server/services/role.mjs.map +1 -0
  584. package/dist/server/services/user.js +214 -0
  585. package/dist/server/services/user.js.map +1 -0
  586. package/dist/server/services/user.mjs +204 -0
  587. package/dist/server/services/user.mjs.map +1 -0
  588. package/dist/server/services/users-permissions.js +271 -0
  589. package/dist/server/services/users-permissions.js.map +1 -0
  590. package/dist/server/services/users-permissions.mjs +262 -0
  591. package/dist/server/services/users-permissions.mjs.map +1 -0
  592. package/dist/server/strategies/users-permissions.js +126 -0
  593. package/dist/server/strategies/users-permissions.js.map +1 -0
  594. package/dist/server/strategies/users-permissions.mjs +119 -0
  595. package/dist/server/strategies/users-permissions.mjs.map +1 -0
  596. package/dist/server/utils/index.js +52 -0
  597. package/dist/server/utils/index.js.map +1 -0
  598. package/dist/server/utils/index.mjs +46 -0
  599. package/dist/server/utils/index.mjs.map +1 -0
  600. package/dist/server/utils/refresh-cookie-options.js +27 -0
  601. package/dist/server/utils/refresh-cookie-options.js.map +1 -0
  602. package/dist/server/utils/refresh-cookie-options.mjs +25 -0
  603. package/dist/server/utils/refresh-cookie-options.mjs.map +1 -0
  604. package/dist/server/utils/sanitize/index.js +21 -0
  605. package/dist/server/utils/sanitize/index.js.map +1 -0
  606. package/dist/server/utils/sanitize/index.mjs +19 -0
  607. package/dist/server/utils/sanitize/index.mjs.map +1 -0
  608. package/dist/server/utils/sanitize/sanitizers.js +37 -0
  609. package/dist/server/utils/sanitize/sanitizers.js.map +1 -0
  610. package/dist/server/utils/sanitize/sanitizers.mjs +30 -0
  611. package/dist/server/utils/sanitize/sanitizers.mjs.map +1 -0
  612. package/dist/server/utils/sanitize/visitors/index.js +17 -0
  613. package/dist/server/utils/sanitize/visitors/index.js.map +1 -0
  614. package/dist/server/utils/sanitize/visitors/index.mjs +15 -0
  615. package/dist/server/utils/sanitize/visitors/index.mjs.map +1 -0
  616. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +17 -0
  617. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js.map +1 -0
  618. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs +15 -0
  619. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs.map +1 -0
  620. package/lint-staged.config.mjs +1 -0
  621. package/package.json +42 -37
  622. package/rollup.config.mjs +19 -0
  623. package/server/bootstrap/index.js +49 -51
  624. package/server/config.js +22 -0
  625. package/server/content-types/user/index.js +0 -1
  626. package/server/controllers/auth.js +309 -68
  627. package/server/controllers/content-manager-user.js +31 -34
  628. package/server/controllers/role.js +17 -4
  629. package/server/controllers/user.js +8 -9
  630. package/server/controllers/validation/auth.js +104 -25
  631. package/server/controllers/validation/user.js +34 -10
  632. package/server/graphql/types/index.js +1 -0
  633. package/server/graphql/types/me.js +1 -0
  634. package/server/graphql/types/user-input.js +20 -0
  635. package/server/middlewares/rateLimit.js +92 -16
  636. package/server/register.js +2 -2
  637. package/server/routes/content-api/auth.js +132 -71
  638. package/server/routes/content-api/index.js +11 -4
  639. package/server/routes/content-api/permissions.js +14 -7
  640. package/server/routes/content-api/role.js +57 -27
  641. package/server/routes/content-api/user.js +108 -51
  642. package/server/routes/content-api/validation.js +280 -0
  643. package/server/services/constants.js +9 -0
  644. package/server/services/jwt.js +54 -5
  645. package/server/services/permission.js +3 -7
  646. package/server/services/providers-registry.js +468 -279
  647. package/server/services/providers.js +16 -6
  648. package/server/services/role.js +15 -13
  649. package/server/services/user.js +82 -17
  650. package/server/services/users-permissions.js +23 -15
  651. package/server/strategies/users-permissions.js +6 -1
  652. package/server/utils/index.d.ts +6 -1
  653. package/server/utils/index.js +30 -0
  654. package/server/utils/refresh-cookie-options.js +20 -0
  655. package/server/utils/sanitize/sanitizers.js +7 -3
  656. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  657. package/.eslintignore +0 -1
  658. package/.eslintrc +0 -17
  659. package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
  660. package/dist/_chunks/ar-MvD8Ghac.mjs +0 -44
  661. package/dist/_chunks/ar-MvD8Ghac.mjs.map +0 -1
  662. package/dist/_chunks/ar-t5qTFaAD.js +0 -44
  663. package/dist/_chunks/ar-t5qTFaAD.js.map +0 -1
  664. package/dist/_chunks/cs-BMuXwxA1.mjs +0 -50
  665. package/dist/_chunks/cs-BMuXwxA1.mjs.map +0 -1
  666. package/dist/_chunks/cs-I8N4u-Sd.js +0 -50
  667. package/dist/_chunks/cs-I8N4u-Sd.js.map +0 -1
  668. package/dist/_chunks/de-YTjtq89K.js +0 -62
  669. package/dist/_chunks/de-YTjtq89K.js.map +0 -1
  670. package/dist/_chunks/de-zs2qqc0W.mjs +0 -62
  671. package/dist/_chunks/de-zs2qqc0W.mjs.map +0 -1
  672. package/dist/_chunks/dk-HctVBMsG.mjs +0 -86
  673. package/dist/_chunks/dk-HctVBMsG.mjs.map +0 -1
  674. package/dist/_chunks/dk-TF-dWjzl.js +0 -86
  675. package/dist/_chunks/dk-TF-dWjzl.js.map +0 -1
  676. package/dist/_chunks/en-CE3wEy_c.mjs +0 -86
  677. package/dist/_chunks/en-CE3wEy_c.mjs.map +0 -1
  678. package/dist/_chunks/en-m608rMZx.js +0 -86
  679. package/dist/_chunks/en-m608rMZx.js.map +0 -1
  680. package/dist/_chunks/es-9381tih_.mjs +0 -86
  681. package/dist/_chunks/es-9381tih_.mjs.map +0 -1
  682. package/dist/_chunks/es-XBQsB8_9.js +0 -86
  683. package/dist/_chunks/es-XBQsB8_9.js.map +0 -1
  684. package/dist/_chunks/fr-6cz3U-IF.js +0 -50
  685. package/dist/_chunks/fr-6cz3U-IF.js.map +0 -1
  686. package/dist/_chunks/fr-CMSc77If.mjs +0 -50
  687. package/dist/_chunks/fr-CMSc77If.mjs.map +0 -1
  688. package/dist/_chunks/id-RJ934rq-.js +0 -62
  689. package/dist/_chunks/id-RJ934rq-.js.map +0 -1
  690. package/dist/_chunks/id-SDuyIkZa.mjs +0 -62
  691. package/dist/_chunks/id-SDuyIkZa.mjs.map +0 -1
  692. package/dist/_chunks/index--i6eterL.mjs +0 -1159
  693. package/dist/_chunks/index--i6eterL.mjs.map +0 -1
  694. package/dist/_chunks/index-1D1x56o5.js +0 -320
  695. package/dist/_chunks/index-1D1x56o5.js.map +0 -1
  696. package/dist/_chunks/index-5niFEULp.js +0 -407
  697. package/dist/_chunks/index-5niFEULp.js.map +0 -1
  698. package/dist/_chunks/index-DrwQvMkW.mjs +0 -615
  699. package/dist/_chunks/index-DrwQvMkW.mjs.map +0 -1
  700. package/dist/_chunks/index-EscLyxsi.js +0 -638
  701. package/dist/_chunks/index-EscLyxsi.js.map +0 -1
  702. package/dist/_chunks/index-FehMxWky.js +0 -249
  703. package/dist/_chunks/index-FehMxWky.js.map +0 -1
  704. package/dist/_chunks/index-J7EIxGQ9.mjs +0 -385
  705. package/dist/_chunks/index-J7EIxGQ9.mjs.map +0 -1
  706. package/dist/_chunks/index-SM5SM05n.mjs +0 -250
  707. package/dist/_chunks/index-SM5SM05n.mjs.map +0 -1
  708. package/dist/_chunks/index-bkRk01QE.js +0 -1191
  709. package/dist/_chunks/index-bkRk01QE.js.map +0 -1
  710. package/dist/_chunks/index-pmr95XmG.mjs +0 -301
  711. package/dist/_chunks/index-pmr95XmG.mjs.map +0 -1
  712. package/dist/_chunks/it-YhZOlM2X.js +0 -62
  713. package/dist/_chunks/it-YhZOlM2X.js.map +0 -1
  714. package/dist/_chunks/it-bvH7DgQo.mjs +0 -62
  715. package/dist/_chunks/it-bvH7DgQo.mjs.map +0 -1
  716. package/dist/_chunks/ja-o_-JPvQv.mjs +0 -48
  717. package/dist/_chunks/ja-o_-JPvQv.mjs.map +0 -1
  718. package/dist/_chunks/ja-xssHUXFv.js +0 -48
  719. package/dist/_chunks/ja-xssHUXFv.js.map +0 -1
  720. package/dist/_chunks/ko-C3mHUSJa.js +0 -86
  721. package/dist/_chunks/ko-C3mHUSJa.js.map +0 -1
  722. package/dist/_chunks/ko-XJbPSez_.mjs +0 -86
  723. package/dist/_chunks/ko-XJbPSez_.mjs.map +0 -1
  724. package/dist/_chunks/ms-II5Ea73J.mjs +0 -49
  725. package/dist/_chunks/ms-II5Ea73J.mjs.map +0 -1
  726. package/dist/_chunks/ms-d0hfg65Z.js +0 -49
  727. package/dist/_chunks/ms-d0hfg65Z.js.map +0 -1
  728. package/dist/_chunks/nl-TA7TfK_5.js +0 -48
  729. package/dist/_chunks/nl-TA7TfK_5.js.map +0 -1
  730. package/dist/_chunks/nl-vEy6TN0K.mjs +0 -48
  731. package/dist/_chunks/nl-vEy6TN0K.mjs.map +0 -1
  732. package/dist/_chunks/pl-0pUL9hdA.js +0 -86
  733. package/dist/_chunks/pl-0pUL9hdA.js.map +0 -1
  734. package/dist/_chunks/pl-2VowaFGt.mjs +0 -86
  735. package/dist/_chunks/pl-2VowaFGt.mjs.map +0 -1
  736. package/dist/_chunks/pt-BR-WNOhafR4.js +0 -44
  737. package/dist/_chunks/pt-BR-WNOhafR4.js.map +0 -1
  738. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs +0 -44
  739. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +0 -1
  740. package/dist/_chunks/pt-Rf9W51IO.mjs +0 -48
  741. package/dist/_chunks/pt-Rf9W51IO.mjs.map +0 -1
  742. package/dist/_chunks/pt-guNR9Gax.js +0 -48
  743. package/dist/_chunks/pt-guNR9Gax.js.map +0 -1
  744. package/dist/_chunks/ru-X3BMXDds.js +0 -86
  745. package/dist/_chunks/ru-X3BMXDds.js.map +0 -1
  746. package/dist/_chunks/ru-qKHnd5or.mjs +0 -86
  747. package/dist/_chunks/ru-qKHnd5or.mjs.map +0 -1
  748. package/dist/_chunks/sk-NWPw1oTN.js +0 -50
  749. package/dist/_chunks/sk-NWPw1oTN.js.map +0 -1
  750. package/dist/_chunks/sk-_Ryr-eTT.mjs +0 -50
  751. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +0 -1
  752. package/dist/_chunks/sv-76NnbB__.js +0 -86
  753. package/dist/_chunks/sv-76NnbB__.js.map +0 -1
  754. package/dist/_chunks/sv-BqzScFXS.mjs +0 -86
  755. package/dist/_chunks/sv-BqzScFXS.mjs.map +0 -1
  756. package/dist/_chunks/th-WsknMEpq.mjs +0 -60
  757. package/dist/_chunks/th-WsknMEpq.mjs.map +0 -1
  758. package/dist/_chunks/th-cbppX21D.js +0 -60
  759. package/dist/_chunks/th-cbppX21D.js.map +0 -1
  760. package/dist/_chunks/tr-6mm_Fmz7.js +0 -85
  761. package/dist/_chunks/tr-6mm_Fmz7.js.map +0 -1
  762. package/dist/_chunks/tr-_DB1F1GW.mjs +0 -85
  763. package/dist/_chunks/tr-_DB1F1GW.mjs.map +0 -1
  764. package/dist/_chunks/uk-sI2I1ogF.js +0 -49
  765. package/dist/_chunks/uk-sI2I1ogF.js.map +0 -1
  766. package/dist/_chunks/uk-yxMSQAwI.mjs +0 -49
  767. package/dist/_chunks/uk-yxMSQAwI.mjs.map +0 -1
  768. package/dist/_chunks/vi-A3zJxaiI.js +0 -50
  769. package/dist/_chunks/vi-A3zJxaiI.js.map +0 -1
  770. package/dist/_chunks/vi-xY0zCW3d.mjs +0 -50
  771. package/dist/_chunks/vi-xY0zCW3d.mjs.map +0 -1
  772. package/dist/_chunks/zh-72SpmFXa.js +0 -86
  773. package/dist/_chunks/zh-72SpmFXa.js.map +0 -1
  774. package/dist/_chunks/zh-Hans-ArWWtyP4.js +0 -86
  775. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +0 -1
  776. package/dist/_chunks/zh-Hans-E84cu4kP.mjs +0 -86
  777. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +0 -1
  778. package/dist/_chunks/zh-OFeldzbX.mjs +0 -86
  779. package/dist/_chunks/zh-OFeldzbX.mjs.map +0 -1
  780. package/packup.config.ts +0 -22
  781. package/server/bootstrap/grant-config.js +0 -140
  782. package/strapi-server.js +0 -3
  783. /package/admin/src/translations/{dk.json → da.json} +0 -0
@@ -11,10 +11,8 @@ const crypto = require('crypto');
11
11
  const _ = require('lodash');
12
12
  const { concat, compact, isArray } = require('lodash/fp');
13
13
  const utils = require('@strapi/utils');
14
- const {
15
- contentTypes: { getNonWritableAttributes },
16
- } = require('@strapi/utils');
17
14
  const { getService } = require('../utils');
15
+ const { buildRefreshCookieOptions } = require('../utils/refresh-cookie-options');
18
16
  const {
19
17
  validateCallbackBody,
20
18
  validateRegisterBody,
@@ -25,17 +23,120 @@ const {
25
23
  validateChangePasswordBody,
26
24
  } = require('./validation/auth');
27
25
 
28
- const { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = utils;
29
26
  const { ApplicationError, ValidationError, ForbiddenError } = utils.errors;
27
+ const { buildSessionMetadata, sanitizeSessionEntry, sortSessionsForDisplay } = utils;
30
28
 
31
29
  const sanitizeUser = (user, ctx) => {
32
30
  const { auth } = ctx.state;
33
31
  const userSchema = strapi.getModel('plugin::users-permissions.user');
34
32
 
35
- return sanitize.contentAPI.output(user, userSchema, { auth });
33
+ return strapi.contentAPI.sanitize.output(user, userSchema, { auth });
34
+ };
35
+
36
+ const extractDeviceId = (requestBody) => {
37
+ const { deviceId } = requestBody || {};
38
+
39
+ return typeof deviceId === 'string' && deviceId.length > 0 ? deviceId : undefined;
40
+ };
41
+
42
+ const buildSessionMetadataFromContext = (ctx) =>
43
+ buildSessionMetadata({
44
+ ip: ctx.request.ip,
45
+ userAgent: ctx.request.headers['user-agent'],
46
+ });
47
+
48
+ const sendRefreshAuthResponse = async (strapi, ctx, user, { metadata } = {}) => {
49
+ const deviceId = extractDeviceId(ctx.request.body);
50
+ const tokenOptions = { type: 'refresh', ...(metadata ? { metadata } : {}) };
51
+
52
+ const refresh = await strapi
53
+ .sessionManager('users-permissions')
54
+ .generateRefreshToken(String(user.id), deviceId, tokenOptions);
55
+
56
+ const access = await strapi
57
+ .sessionManager('users-permissions')
58
+ .generateAccessToken(refresh.token);
59
+ if ('error' in access) {
60
+ throw new ApplicationError('Invalid credentials');
61
+ }
62
+
63
+ const upSessions = strapi.config.get('plugin::users-permissions.sessions');
64
+ const requestHttpOnly = ctx.request.header['x-strapi-refresh-cookie'] === 'httpOnly';
65
+
66
+ if (upSessions?.httpOnly || requestHttpOnly) {
67
+ const cookieName = upSessions.cookie?.name || 'strapi_up_refresh';
68
+ const isProduction = process.env.NODE_ENV === 'production';
69
+ ctx.cookies.set(cookieName, refresh.token, buildRefreshCookieOptions(upSessions, isProduction));
70
+ return ctx.send({ jwt: access.token, user: await sanitizeUser(user, ctx) });
71
+ }
72
+
73
+ return ctx.send({
74
+ jwt: access.token,
75
+ refreshToken: refresh.token,
76
+ user: await sanitizeUser(user, ctx),
77
+ });
78
+ };
79
+
80
+ const reissueTokensAfterPasswordChange = async (strapi, ctx, user) => {
81
+ const deviceId = extractDeviceId(ctx.request.body);
82
+
83
+ await strapi.sessionManager('users-permissions').invalidateRefreshToken(String(user.id));
84
+
85
+ const newDeviceId = deviceId || crypto.randomUUID();
86
+ const refresh = await strapi
87
+ .sessionManager('users-permissions')
88
+ .generateRefreshToken(String(user.id), newDeviceId, { type: 'refresh' });
89
+
90
+ const access = await strapi
91
+ .sessionManager('users-permissions')
92
+ .generateAccessToken(refresh.token);
93
+ if ('error' in access) {
94
+ throw new ApplicationError('Invalid credentials');
95
+ }
96
+
97
+ return ctx.send({
98
+ jwt: access.token,
99
+ refreshToken: refresh.token,
100
+ user: await sanitizeUser(user, ctx),
101
+ });
102
+ };
103
+
104
+ const revokeLogoutSessions = async (strapi, ctx, userId, { scope, deviceId, body }) => {
105
+ const sessionManager = strapi.sessionManager('users-permissions');
106
+ const upSessions = strapi.config.get('plugin::users-permissions.sessions');
107
+
108
+ if (scope === 'all') {
109
+ await sessionManager.invalidateRefreshToken(userId);
110
+ return;
111
+ }
112
+
113
+ if (deviceId) {
114
+ await sessionManager.invalidateRefreshToken(userId, deviceId);
115
+ return;
116
+ }
117
+
118
+ let currentSessionId = ctx.state.session?.id;
119
+ const cookieName = upSessions?.cookie?.name || 'strapi_up_refresh';
120
+ const refreshToken =
121
+ ctx.cookies.get(cookieName) ||
122
+ (typeof body.refreshToken === 'string' ? body.refreshToken : undefined);
123
+
124
+ if (refreshToken) {
125
+ const validation = await sessionManager.validateRefreshToken(refreshToken);
126
+ if (validation.isValid) {
127
+ currentSessionId = validation.sessionId;
128
+ }
129
+ }
130
+
131
+ if (currentSessionId) {
132
+ await sessionManager.revokeSessionById(userId, currentSessionId);
133
+ return;
134
+ }
135
+
136
+ await sessionManager.invalidateRefreshToken(userId);
36
137
  };
37
138
 
38
- module.exports = {
139
+ module.exports = ({ strapi }) => ({
39
140
  async callback(ctx) {
40
141
  const provider = ctx.params.provider || 'local';
41
142
  const params = ctx.request.body;
@@ -55,7 +156,7 @@ module.exports = {
55
156
  const { identifier } = params;
56
157
 
57
158
  // Check if the user exists.
58
- const user = await strapi.query('plugin::users-permissions.user').findOne({
159
+ const user = await strapi.db.query('plugin::users-permissions.user').findOne({
59
160
  where: {
60
161
  provider,
61
162
  $or: [{ email: identifier.toLowerCase() }, { username: identifier }],
@@ -90,6 +191,13 @@ module.exports = {
90
191
  throw new ApplicationError('Your account has been blocked by an administrator');
91
192
  }
92
193
 
194
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
195
+ if (mode === 'refresh') {
196
+ return sendRefreshAuthResponse(strapi, ctx, user, {
197
+ metadata: buildSessionMetadataFromContext(ctx),
198
+ });
199
+ }
200
+
93
201
  return ctx.send({
94
202
  jwt: getService('jwt').issue({ id: user.id }),
95
203
  user: await sanitizeUser(user, ctx),
@@ -104,6 +212,13 @@ module.exports = {
104
212
  throw new ForbiddenError('Your account has been blocked by an administrator');
105
213
  }
106
214
 
215
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
216
+ if (mode === 'refresh') {
217
+ return sendRefreshAuthResponse(strapi, ctx, user, {
218
+ metadata: buildSessionMetadataFromContext(ctx),
219
+ });
220
+ }
221
+
107
222
  return ctx.send({
108
223
  jwt: getService('jwt').issue({ id: user.id }),
109
224
  user: await sanitizeUser(user, ctx),
@@ -118,13 +233,17 @@ module.exports = {
118
233
  throw new ApplicationError('You must be authenticated to reset your password');
119
234
  }
120
235
 
121
- const { currentPassword, password } = await validateChangePasswordBody(ctx.request.body);
236
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
122
237
 
123
- const user = await strapi.entityService.findOne(
124
- 'plugin::users-permissions.user',
125
- ctx.state.user.id
238
+ const { currentPassword, password } = await validateChangePasswordBody(
239
+ ctx.request.body,
240
+ validations
126
241
  );
127
242
 
243
+ const user = await strapi.db
244
+ .query('plugin::users-permissions.user')
245
+ .findOne({ where: { id: ctx.state.user.id } });
246
+
128
247
  const validPassword = await getService('user').validatePassword(currentPassword, user.password);
129
248
 
130
249
  if (!validPassword) {
@@ -137,22 +256,30 @@ module.exports = {
137
256
 
138
257
  await getService('user').edit(user.id, { password });
139
258
 
140
- ctx.send({
259
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
260
+ if (mode === 'refresh') {
261
+ return reissueTokensAfterPasswordChange(strapi, ctx, user);
262
+ }
263
+
264
+ return ctx.send({
141
265
  jwt: getService('jwt').issue({ id: user.id }),
142
266
  user: await sanitizeUser(user, ctx),
143
267
  });
144
268
  },
145
269
 
146
270
  async resetPassword(ctx) {
271
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
272
+
147
273
  const { password, passwordConfirmation, code } = await validateResetPasswordBody(
148
- ctx.request.body
274
+ ctx.request.body,
275
+ validations
149
276
  );
150
277
 
151
278
  if (password !== passwordConfirmation) {
152
279
  throw new ValidationError('Passwords do not match');
153
280
  }
154
281
 
155
- const user = await strapi
282
+ const user = await strapi.db
156
283
  .query('plugin::users-permissions.user')
157
284
  .findOne({ where: { resetPasswordToken: code } });
158
285
 
@@ -165,15 +292,134 @@ module.exports = {
165
292
  password,
166
293
  });
167
294
 
168
- // Update the user.
169
- ctx.send({
295
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
296
+ if (mode === 'refresh') {
297
+ return reissueTokensAfterPasswordChange(strapi, ctx, user);
298
+ }
299
+
300
+ return ctx.send({
170
301
  jwt: getService('jwt').issue({ id: user.id }),
171
302
  user: await sanitizeUser(user, ctx),
172
303
  });
173
304
  },
305
+ async refresh(ctx) {
306
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
307
+ if (mode !== 'refresh') {
308
+ return ctx.notFound();
309
+ }
174
310
 
311
+ const upSessions = strapi.config.get('plugin::users-permissions.sessions');
312
+ const cookieName = upSessions?.cookie?.name || 'strapi_up_refresh';
313
+
314
+ // Check for refresh token in cookie first (if httpOnly is configured), then in body
315
+ let refreshToken = ctx.cookies.get(cookieName);
316
+ if (!refreshToken) {
317
+ refreshToken = ctx.request.body?.refreshToken;
318
+ }
319
+
320
+ if (!refreshToken || typeof refreshToken !== 'string') {
321
+ return ctx.badRequest('Missing refresh token');
322
+ }
323
+
324
+ const rotation = await strapi
325
+ .sessionManager('users-permissions')
326
+ .rotateRefreshToken(refreshToken);
327
+ if ('error' in rotation) {
328
+ return ctx.unauthorized('Invalid refresh token');
329
+ }
330
+
331
+ const result = await strapi
332
+ .sessionManager('users-permissions')
333
+ .generateAccessToken(rotation.token);
334
+ if ('error' in result) {
335
+ return ctx.unauthorized('Invalid refresh token');
336
+ }
337
+
338
+ const requestHttpOnly = ctx.request.header['x-strapi-refresh-cookie'] === 'httpOnly';
339
+ if (upSessions?.httpOnly || requestHttpOnly) {
340
+ const isProduction = process.env.NODE_ENV === 'production';
341
+ ctx.cookies.set(
342
+ cookieName,
343
+ rotation.token,
344
+ buildRefreshCookieOptions(upSessions, isProduction)
345
+ );
346
+ return ctx.send({ jwt: result.token });
347
+ }
348
+ return ctx.send({ jwt: result.token, refreshToken: rotation.token });
349
+ },
350
+ async logout(ctx) {
351
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
352
+ if (mode !== 'refresh') {
353
+ return ctx.notFound();
354
+ }
355
+
356
+ if (!ctx.state.user) {
357
+ return ctx.unauthorized('Missing authentication');
358
+ }
359
+
360
+ const userId = String(ctx.state.user.id);
361
+ const upSessions = strapi.config.get('plugin::users-permissions.sessions');
362
+ const body = ctx.request.body || {};
363
+ const scope = typeof body.scope === 'string' ? body.scope : undefined;
364
+ const deviceId = extractDeviceId(body);
365
+
366
+ try {
367
+ await revokeLogoutSessions(strapi, ctx, userId, { scope, deviceId, body });
368
+ } catch (err) {
369
+ strapi.log.error('UP logout failed', err);
370
+ }
371
+
372
+ const requestHttpOnly = ctx.request.header['x-strapi-refresh-cookie'] === 'httpOnly';
373
+ if (upSessions?.httpOnly || requestHttpOnly) {
374
+ const cookieName = upSessions.cookie?.name || 'strapi_up_refresh';
375
+ ctx.cookies.set(cookieName, '', { expires: new Date(0) });
376
+ }
377
+ return ctx.send({ ok: true });
378
+ },
379
+ async getSessions(ctx) {
380
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
381
+ if (mode !== 'refresh') {
382
+ return ctx.notFound();
383
+ }
384
+
385
+ if (!ctx.state.user) {
386
+ return ctx.unauthorized('Missing authentication');
387
+ }
388
+
389
+ const currentSessionId = ctx.state.session?.id;
390
+ const sessions = await strapi
391
+ .sessionManager('users-permissions')
392
+ .listSessions(String(ctx.state.user.id));
393
+
394
+ const data = sortSessionsForDisplay(
395
+ sessions.map((session) => sanitizeSessionEntry(session, currentSessionId))
396
+ );
397
+
398
+ return ctx.send({ data });
399
+ },
400
+ async revokeSession(ctx) {
401
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
402
+ if (mode !== 'refresh') {
403
+ return ctx.notFound();
404
+ }
405
+
406
+ if (!ctx.state.user) {
407
+ return ctx.unauthorized('Missing authentication');
408
+ }
409
+
410
+ const { sessionId } = ctx.params;
411
+ const revoked = await strapi
412
+ .sessionManager('users-permissions')
413
+ .revokeSessionById(String(ctx.state.user.id), sessionId);
414
+
415
+ if (!revoked) {
416
+ return ctx.notFound('Session not found');
417
+ }
418
+
419
+ return ctx.send({ data: {} });
420
+ },
175
421
  async connect(ctx, next) {
176
- const grant = require('grant-koa');
422
+ const grant = require('grant').koa();
177
423
 
178
424
  const providers = await strapi
179
425
  .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })
@@ -237,7 +483,7 @@ module.exports = {
237
483
  const advancedSettings = await pluginStore.get({ key: 'advanced' });
238
484
 
239
485
  // Find the user by email.
240
- const user = await strapi
486
+ const user = await strapi.db
241
487
  .query('plugin::users-permissions.user')
242
488
  .findOne({ where: { email: email.toLowerCase() } });
243
489
 
@@ -255,8 +501,8 @@ module.exports = {
255
501
  resetPasswordSettings.message,
256
502
  {
257
503
  URL: advancedSettings.email_reset_password,
258
- SERVER_URL: getAbsoluteServerUrl(strapi.config),
259
- ADMIN_URL: getAbsoluteAdminUrl(strapi.config),
504
+ SERVER_URL: strapi.config.get('server.absoluteUrl'),
505
+ ADMIN_URL: strapi.config.get('admin.absoluteUrl'),
260
506
  USER: userInfo,
261
507
  TOKEN: resetPasswordToken,
262
508
  }
@@ -299,55 +545,32 @@ module.exports = {
299
545
  throw new ApplicationError('Register action is currently disabled');
300
546
  }
301
547
 
302
- const { register } = strapi.config.get('plugin.users-permissions');
548
+ const { register } = strapi.config.get('plugin::users-permissions');
303
549
  const alwaysAllowedKeys = ['username', 'password', 'email'];
304
- const userModel = strapi.contentTypes['plugin::users-permissions.user'];
305
- const { attributes } = userModel;
306
-
307
- const nonWritable = getNonWritableAttributes(userModel);
308
550
 
551
+ // Note that we intentionally do not filter allowedFields to allow a project to explicitly accept private or other Strapi field on registration
309
552
  const allowedKeys = compact(
310
- concat(
311
- alwaysAllowedKeys,
312
- isArray(register?.allowedFields)
313
- ? // Note that we do not filter allowedFields in case a user explicitly chooses to allow a private or otherwise omitted field on registration
314
- register.allowedFields // if null or undefined, compact will remove it
315
- : // to prevent breaking changes, if allowedFields is not set in config, we only remove private and known dangerous user schema fields
316
- // TODO V5: allowedFields defaults to [] when undefined and remove this case
317
- Object.keys(attributes).filter(
318
- (key) =>
319
- !nonWritable.includes(key) &&
320
- !attributes[key].private &&
321
- ![
322
- // many of these are included in nonWritable, but we'll list them again to be safe and since we're removing this code in v5 anyway
323
- // Strapi user schema fields
324
- 'confirmed',
325
- 'blocked',
326
- 'confirmationToken',
327
- 'resetPasswordToken',
328
- 'provider',
329
- 'id',
330
- 'role',
331
- // other Strapi fields that might be added
332
- 'createdAt',
333
- 'updatedAt',
334
- 'createdBy',
335
- 'updatedBy',
336
- 'publishedAt', // d&p
337
- 'strapi_reviewWorkflows_stage', // review workflows
338
- ].includes(key)
339
- )
340
- )
553
+ concat(alwaysAllowedKeys, isArray(register?.allowedFields) ? register.allowedFields : [])
341
554
  );
342
555
 
556
+ // Check if there are any keys in requestBody that are not in allowedKeys
557
+ const invalidKeys = Object.keys(ctx.request.body).filter((key) => !allowedKeys.includes(key));
558
+
559
+ if (invalidKeys.length > 0) {
560
+ // If there are invalid keys, throw an error
561
+ throw new ValidationError(`Invalid parameters: ${invalidKeys.join(', ')}`);
562
+ }
563
+
343
564
  const params = {
344
565
  ..._.pick(ctx.request.body, allowedKeys),
345
566
  provider: 'local',
346
567
  };
347
568
 
348
- await validateRegisterBody(params);
569
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
570
+
571
+ await validateRegisterBody(params, validations);
349
572
 
350
- const role = await strapi
573
+ const role = await strapi.db
351
574
  .query('plugin::users-permissions.role')
352
575
  .findOne({ where: { type: settings.default_role } });
353
576
 
@@ -366,7 +589,7 @@ module.exports = {
366
589
  ],
367
590
  };
368
591
 
369
- const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({
592
+ const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({
370
593
  where: { ...identifierFilter, provider },
371
594
  });
372
595
 
@@ -375,7 +598,7 @@ module.exports = {
375
598
  }
376
599
 
377
600
  if (settings.unique_email) {
378
- const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({
601
+ const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({
379
602
  where: { ...identifierFilter },
380
603
  });
381
604
 
@@ -400,18 +623,36 @@ module.exports = {
400
623
  try {
401
624
  await getService('user').sendConfirmationEmail(sanitizedUser);
402
625
  } catch (err) {
403
- throw new ApplicationError(err.message);
626
+ strapi.log.error(err);
627
+ throw new ApplicationError('Error sending confirmation email');
404
628
  }
405
629
 
406
630
  return ctx.send({ user: sanitizedUser });
407
631
  }
408
632
 
409
- const jwt = getService('jwt').issue(_.pick(user, ['id']));
633
+ const mode = strapi.config.get('plugin::users-permissions.jwtManagement', 'legacy-support');
634
+ if (mode === 'refresh') {
635
+ const deviceId = extractDeviceId(ctx.request.body) || crypto.randomUUID();
636
+
637
+ const refresh = await strapi
638
+ .sessionManager('users-permissions')
639
+ .generateRefreshToken(String(user.id), deviceId, {
640
+ type: 'refresh',
641
+ metadata: buildSessionMetadataFromContext(ctx),
642
+ });
643
+
644
+ const access = await strapi
645
+ .sessionManager('users-permissions')
646
+ .generateAccessToken(refresh.token);
647
+ if ('error' in access) {
648
+ throw new ApplicationError('Invalid credentials');
649
+ }
410
650
 
411
- return ctx.send({
412
- jwt,
413
- user: sanitizedUser,
414
- });
651
+ return ctx.send({ jwt: access.token, refreshToken: refresh.token, user: sanitizedUser });
652
+ }
653
+
654
+ const jwt = getService('jwt').issue(_.pick(user, ['id']));
655
+ return ctx.send({ jwt, user: sanitizedUser });
415
656
  },
416
657
 
417
658
  async emailConfirmation(ctx, next, returnUser) {
@@ -445,7 +686,7 @@ module.exports = {
445
686
  async sendEmailConfirmation(ctx) {
446
687
  const { email } = await validateSendEmailConfirmationBody(ctx.request.body);
447
688
 
448
- const user = await strapi.query('plugin::users-permissions.user').findOne({
689
+ const user = await strapi.db.query('plugin::users-permissions.user').findOne({
449
690
  where: { email: email.toLowerCase() },
450
691
  });
451
692
 
@@ -468,4 +709,4 @@ module.exports = {
468
709
  sent: true,
469
710
  });
470
711
  },
471
- };
712
+ });
@@ -2,8 +2,7 @@
2
2
 
3
3
  const _ = require('lodash');
4
4
  const { contentTypes: contentTypesUtils } = require('@strapi/utils');
5
- const { ApplicationError, ValidationError, NotFoundError, ForbiddenError } =
6
- require('@strapi/utils').errors;
5
+ const { ApplicationError, NotFoundError, ForbiddenError } = require('@strapi/utils').errors;
7
6
  const { validateCreateUserBody, validateUpdateUserBody } = require('./validation/user');
8
7
 
9
8
  const { UPDATED_BY_ATTRIBUTE, CREATED_BY_ATTRIBUTE } = contentTypesUtils.constants;
@@ -17,24 +16,25 @@ const ACTIONS = {
17
16
  };
18
17
 
19
18
  const findEntityAndCheckPermissions = async (ability, action, model, id) => {
20
- const entity = await strapi.query(userModel).findOne({
21
- where: { id },
19
+ const doc = await strapi.service('plugin::content-manager.document-manager').findOne(id, model, {
22
20
  populate: [`${CREATED_BY_ATTRIBUTE}.roles`],
23
21
  });
24
22
 
25
- if (_.isNil(entity)) {
23
+ if (_.isNil(doc)) {
26
24
  throw new NotFoundError();
27
25
  }
28
26
 
29
- const pm = strapi.admin.services.permission.createPermissionsManager({ ability, action, model });
27
+ const pm = strapi
28
+ .service('admin::permission')
29
+ .createPermissionsManager({ ability, action, model });
30
30
 
31
- if (pm.ability.cannot(pm.action, pm.toSubject(entity))) {
31
+ if (pm.ability.cannot(pm.action, pm.toSubject(doc))) {
32
32
  throw new ForbiddenError();
33
33
  }
34
34
 
35
- const entityWithoutCreatorRoles = _.omit(entity, `${CREATED_BY_ATTRIBUTE}.roles`);
35
+ const docWithoutCreatorRoles = _.omit(doc, `${CREATED_BY_ATTRIBUTE}.roles`);
36
36
 
37
- return { pm, entity: entityWithoutCreatorRoles };
37
+ return { pm, doc: docWithoutCreatorRoles };
38
38
  };
39
39
 
40
40
  module.exports = {
@@ -48,7 +48,7 @@ module.exports = {
48
48
 
49
49
  const { email, username } = body;
50
50
 
51
- const pm = strapi.admin.services.permission.createPermissionsManager({
51
+ const pm = strapi.service('admin::permission').createPermissionsManager({
52
52
  ability: userAbility,
53
53
  action: ACTIONS.create,
54
54
  model: userModel,
@@ -66,7 +66,7 @@ module.exports = {
66
66
 
67
67
  await validateCreateUserBody(ctx.request.body);
68
68
 
69
- const userWithSameUsername = await strapi
69
+ const userWithSameUsername = await strapi.db
70
70
  .query('plugin::users-permissions.user')
71
71
  .findOne({ where: { username } });
72
72
 
@@ -75,7 +75,7 @@ module.exports = {
75
75
  }
76
76
 
77
77
  if (advanced.unique_email) {
78
- const userWithSameEmail = await strapi
78
+ const userWithSameEmail = await strapi.db
79
79
  .query('plugin::users-permissions.user')
80
80
  .findOne({ where: { email: email.toLowerCase() } });
81
81
 
@@ -93,18 +93,11 @@ module.exports = {
93
93
 
94
94
  user.email = _.toLower(user.email);
95
95
 
96
- if (!user.role) {
97
- const defaultRole = await strapi
98
- .query('plugin::users-permissions.role')
99
- .findOne({ where: { type: advanced.default_role } });
100
-
101
- user.role = defaultRole.id;
102
- }
103
-
104
96
  try {
105
97
  const data = await strapi
106
- .service('plugin::content-manager.entity-manager')
107
- .create(user, userModel);
98
+ .service('plugin::content-manager.document-manager')
99
+ .create(userModel, { data: user });
100
+
108
101
  const sanitizedData = await pm.sanitizeOutput(data, { action: ACTIONS.read });
109
102
 
110
103
  ctx.created(sanitizedData);
@@ -118,7 +111,7 @@ module.exports = {
118
111
  */
119
112
 
120
113
  async update(ctx) {
121
- const { id } = ctx.params;
114
+ const { id: documentId } = ctx.params;
122
115
  const { body } = ctx.request;
123
116
  const { user: admin, userAbility } = ctx.state;
124
117
 
@@ -128,38 +121,40 @@ module.exports = {
128
121
 
129
122
  const { email, username, password } = body;
130
123
 
131
- const { pm, entity } = await findEntityAndCheckPermissions(
124
+ const { pm, doc } = await findEntityAndCheckPermissions(
132
125
  userAbility,
133
126
  ACTIONS.edit,
134
127
  userModel,
135
- id
128
+ documentId
136
129
  );
137
- const user = entity;
130
+
131
+ const user = doc;
138
132
 
139
133
  await validateUpdateUserBody(ctx.request.body);
140
134
 
141
- if (_.has(body, 'password') && !password && user.provider === 'local') {
142
- throw new ValidationError('password.notNull');
135
+ if (_.has(body, 'password') && (password == null || password === '')) {
136
+ delete body.password;
143
137
  }
144
138
 
145
139
  if (_.has(body, 'username')) {
146
- const userWithSameUsername = await strapi
140
+ const userWithSameUsername = await strapi.db
147
141
  .query('plugin::users-permissions.user')
148
142
  .findOne({ where: { username } });
149
143
 
150
- if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(id)) {
144
+ if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(user.id)) {
151
145
  throw new ApplicationError('Username already taken');
152
146
  }
153
147
  }
154
148
 
155
149
  if (_.has(body, 'email') && advancedConfigs.unique_email) {
156
- const userWithSameEmail = await strapi
150
+ const userWithSameEmail = await strapi.db
157
151
  .query('plugin::users-permissions.user')
158
152
  .findOne({ where: { email: _.toLower(email) } });
159
153
 
160
- if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(id)) {
154
+ if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(user.id)) {
161
155
  throw new ApplicationError('Email already taken');
162
156
  }
157
+
163
158
  body.email = _.toLower(body.email);
164
159
  }
165
160
 
@@ -167,8 +162,10 @@ module.exports = {
167
162
  const updateData = _.omit({ ...sanitizedData, updatedBy: admin.id }, 'createdBy');
168
163
 
169
164
  const data = await strapi
170
- .service('plugin::content-manager.entity-manager')
171
- .update({ id }, updateData, userModel);
165
+ .service('plugin::content-manager.document-manager')
166
+ .update(documentId, userModel, {
167
+ data: updateData,
168
+ });
172
169
 
173
170
  ctx.body = await pm.sanitizeOutput(data, { action: ACTIONS.read });
174
171
  },