@strapi/plugin-users-permissions 0.0.0-next.e1ede8c55a0e1e22ce20137bf238fc374bd5dd51 → 0.0.0-next.e326c69a49373b420f6566c30aca26f4b6274c6a

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