@strapi/plugin-users-permissions 0.0.0-next.ff946d2c25a3e577b47132a357cac2932eb8e635 → 0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c

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 (681) hide show
  1. package/.eslintignore +2 -2
  2. package/.eslintrc +17 -0
  3. package/LICENSE +18 -3
  4. package/admin/src/components/BoundRoute/{index.js → index.jsx} +7 -5
  5. package/admin/src/components/FormModal/Input/{index.js → index.jsx} +35 -33
  6. package/admin/src/components/FormModal/index.jsx +115 -0
  7. package/admin/src/components/Permissions/PermissionRow/{CheckboxWrapper.js → CheckboxWrapper.jsx} +4 -3
  8. package/admin/src/components/Permissions/PermissionRow/{SubCategory.js → SubCategory.jsx} +27 -15
  9. package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +4 -2
  10. package/admin/src/components/Permissions/index.jsx +47 -0
  11. package/admin/src/components/Permissions/reducer.js +1 -1
  12. package/admin/src/components/Policies/{index.js → index.jsx} +10 -7
  13. package/admin/src/components/UsersPermissions/{index.js → index.jsx} +22 -11
  14. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  15. package/admin/src/{permissions.js → constants.js} +1 -3
  16. package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +1 -0
  17. package/admin/src/index.js +27 -53
  18. package/admin/src/pages/AdvancedSettings/index.jsx +214 -0
  19. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  20. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  21. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +156 -0
  22. package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +28 -23
  23. package/admin/src/pages/EmailTemplates/index.jsx +148 -0
  24. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  25. package/admin/src/pages/Providers/index.jsx +262 -0
  26. package/admin/src/pages/Providers/utils/forms.js +23 -11
  27. package/admin/src/pages/Roles/constants.js +7 -0
  28. package/admin/src/pages/Roles/hooks/usePlugins.js +78 -0
  29. package/admin/src/pages/Roles/index.jsx +24 -0
  30. package/admin/src/pages/Roles/pages/CreatePage.jsx +194 -0
  31. package/admin/src/pages/Roles/pages/EditPage.jsx +215 -0
  32. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +119 -0
  33. package/admin/src/pages/Roles/{ListPage/index.js → pages/ListPage/index.jsx} +108 -83
  34. package/admin/src/pluginId.js +2 -2
  35. package/admin/src/translations/en.json +1 -1
  36. package/admin/src/translations/uk.json +41 -4
  37. package/admin/src/translations/zh-Hans.json +80 -80
  38. package/admin/src/utils/formatPluginName.js +1 -1
  39. package/admin/src/utils/index.js +1 -2
  40. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  41. package/dist/admin/components/BoundRoute/getMethodColor.js +49 -0
  42. package/dist/admin/components/BoundRoute/getMethodColor.js.map +1 -0
  43. package/dist/admin/components/BoundRoute/getMethodColor.mjs +47 -0
  44. package/dist/admin/components/BoundRoute/getMethodColor.mjs.map +1 -0
  45. package/dist/admin/components/BoundRoute/index.js +98 -0
  46. package/dist/admin/components/BoundRoute/index.js.map +1 -0
  47. package/dist/admin/components/BoundRoute/index.mjs +96 -0
  48. package/dist/admin/components/BoundRoute/index.mjs.map +1 -0
  49. package/dist/admin/components/FormModal/Input/index.js +123 -0
  50. package/dist/admin/components/FormModal/Input/index.js.map +1 -0
  51. package/dist/admin/components/FormModal/Input/index.mjs +121 -0
  52. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -0
  53. package/dist/admin/components/FormModal/index.js +110 -0
  54. package/dist/admin/components/FormModal/index.js.map +1 -0
  55. package/dist/admin/components/FormModal/index.mjs +108 -0
  56. package/dist/admin/components/FormModal/index.mjs.map +1 -0
  57. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js +33 -0
  58. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js.map +1 -0
  59. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs +31 -0
  60. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs.map +1 -0
  61. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +156 -0
  62. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -0
  63. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +154 -0
  64. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -0
  65. package/dist/admin/components/Permissions/PermissionRow/index.js +50 -0
  66. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -0
  67. package/dist/admin/components/Permissions/PermissionRow/index.mjs +48 -0
  68. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -0
  69. package/dist/admin/components/Permissions/index.js +52 -0
  70. package/dist/admin/components/Permissions/index.js.map +1 -0
  71. package/dist/admin/components/Permissions/index.mjs +50 -0
  72. package/dist/admin/components/Permissions/index.mjs.map +1 -0
  73. package/dist/admin/components/Permissions/init.js +15 -0
  74. package/dist/admin/components/Permissions/init.js.map +1 -0
  75. package/dist/admin/components/Permissions/init.mjs +13 -0
  76. package/dist/admin/components/Permissions/init.mjs.map +1 -0
  77. package/dist/admin/components/Permissions/reducer.js +34 -0
  78. package/dist/admin/components/Permissions/reducer.js.map +1 -0
  79. package/dist/admin/components/Permissions/reducer.mjs +31 -0
  80. package/dist/admin/components/Permissions/reducer.mjs.map +1 -0
  81. package/dist/admin/components/Policies/index.js +67 -0
  82. package/dist/admin/components/Policies/index.js.map +1 -0
  83. package/dist/admin/components/Policies/index.mjs +65 -0
  84. package/dist/admin/components/Policies/index.mjs.map +1 -0
  85. package/dist/admin/components/UsersPermissions/index.js +115 -0
  86. package/dist/admin/components/UsersPermissions/index.js.map +1 -0
  87. package/dist/admin/components/UsersPermissions/index.mjs +113 -0
  88. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -0
  89. package/dist/admin/components/UsersPermissions/init.js +13 -0
  90. package/dist/admin/components/UsersPermissions/init.js.map +1 -0
  91. package/dist/admin/components/UsersPermissions/init.mjs +11 -0
  92. package/dist/admin/components/UsersPermissions/init.mjs.map +1 -0
  93. package/dist/admin/components/UsersPermissions/reducer.js +73 -0
  94. package/dist/admin/components/UsersPermissions/reducer.js.map +1 -0
  95. package/dist/admin/components/UsersPermissions/reducer.mjs +68 -0
  96. package/dist/admin/components/UsersPermissions/reducer.mjs.map +1 -0
  97. package/dist/admin/constants.js +81 -0
  98. package/dist/admin/constants.js.map +1 -0
  99. package/dist/admin/constants.mjs +79 -0
  100. package/dist/admin/constants.mjs.map +1 -0
  101. package/dist/admin/contexts/UsersPermissionsContext/index.js +23 -0
  102. package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -0
  103. package/dist/admin/contexts/UsersPermissionsContext/index.mjs +19 -0
  104. package/dist/admin/contexts/UsersPermissionsContext/index.mjs.map +1 -0
  105. package/dist/admin/index.js +125 -0
  106. package/dist/admin/index.js.map +1 -0
  107. package/dist/admin/index.mjs +121 -0
  108. package/dist/admin/index.mjs.map +1 -0
  109. package/dist/admin/package.json.js +14 -0
  110. package/dist/admin/package.json.js.map +1 -0
  111. package/dist/admin/package.json.mjs +11 -0
  112. package/dist/admin/package.json.mjs.map +1 -0
  113. package/dist/admin/pages/AdvancedSettings/index.js +194 -0
  114. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -0
  115. package/dist/admin/pages/AdvancedSettings/index.mjs +191 -0
  116. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -0
  117. package/dist/admin/pages/AdvancedSettings/utils/layout.js +83 -0
  118. package/dist/admin/pages/AdvancedSettings/utils/layout.js.map +1 -0
  119. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs +81 -0
  120. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs.map +1 -0
  121. package/dist/admin/pages/AdvancedSettings/utils/schema.js +40 -0
  122. package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -0
  123. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs +19 -0
  124. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs.map +1 -0
  125. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +171 -0
  126. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -0
  127. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +169 -0
  128. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -0
  129. package/dist/admin/pages/EmailTemplates/components/EmailTable.js +145 -0
  130. package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -0
  131. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs +143 -0
  132. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs.map +1 -0
  133. package/dist/admin/pages/EmailTemplates/index.js +157 -0
  134. package/dist/admin/pages/EmailTemplates/index.js.map +1 -0
  135. package/dist/admin/pages/EmailTemplates/index.mjs +135 -0
  136. package/dist/admin/pages/EmailTemplates/index.mjs.map +1 -0
  137. package/dist/admin/pages/EmailTemplates/utils/schema.js +50 -0
  138. package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -0
  139. package/dist/admin/pages/EmailTemplates/utils/schema.mjs +29 -0
  140. package/dist/admin/pages/EmailTemplates/utils/schema.mjs.map +1 -0
  141. package/dist/admin/pages/Providers/index.js +278 -0
  142. package/dist/admin/pages/Providers/index.js.map +1 -0
  143. package/dist/admin/pages/Providers/index.mjs +254 -0
  144. package/dist/admin/pages/Providers/index.mjs.map +1 -0
  145. package/dist/admin/pages/Providers/utils/forms.js +281 -0
  146. package/dist/admin/pages/Providers/utils/forms.js.map +1 -0
  147. package/dist/admin/pages/Providers/utils/forms.mjs +260 -0
  148. package/dist/admin/pages/Providers/utils/forms.mjs.map +1 -0
  149. package/dist/admin/pages/Roles/constants.js +31 -0
  150. package/dist/admin/pages/Roles/constants.js.map +1 -0
  151. package/dist/admin/pages/Roles/constants.mjs +10 -0
  152. package/dist/admin/pages/Roles/constants.mjs.map +1 -0
  153. package/dist/admin/pages/Roles/hooks/usePlugins.js +78 -0
  154. package/dist/admin/pages/Roles/hooks/usePlugins.js.map +1 -0
  155. package/dist/admin/pages/Roles/hooks/usePlugins.mjs +76 -0
  156. package/dist/admin/pages/Roles/hooks/usePlugins.mjs.map +1 -0
  157. package/dist/admin/pages/Roles/index.js +35 -0
  158. package/dist/admin/pages/Roles/index.js.map +1 -0
  159. package/dist/admin/pages/Roles/index.mjs +33 -0
  160. package/dist/admin/pages/Roles/index.mjs.map +1 -0
  161. package/dist/admin/pages/Roles/pages/CreatePage.js +225 -0
  162. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -0
  163. package/dist/admin/pages/Roles/pages/CreatePage.mjs +203 -0
  164. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -0
  165. package/dist/admin/pages/Roles/pages/EditPage.js +229 -0
  166. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -0
  167. package/dist/admin/pages/Roles/pages/EditPage.mjs +207 -0
  168. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -0
  169. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +125 -0
  170. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -0
  171. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs +123 -0
  172. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -0
  173. package/dist/admin/pages/Roles/pages/ListPage/index.js +237 -0
  174. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -0
  175. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +234 -0
  176. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -0
  177. package/dist/admin/pluginId.js +8 -0
  178. package/dist/admin/pluginId.js.map +1 -0
  179. package/dist/admin/pluginId.mjs +6 -0
  180. package/dist/admin/pluginId.mjs.map +1 -0
  181. package/dist/admin/translations/ar.json.js +45 -0
  182. package/dist/admin/translations/ar.json.js.map +1 -0
  183. package/dist/admin/translations/ar.json.mjs +43 -0
  184. package/dist/admin/translations/ar.json.mjs.map +1 -0
  185. package/dist/admin/translations/cs.json.js +51 -0
  186. package/dist/admin/translations/cs.json.js.map +1 -0
  187. package/dist/admin/translations/cs.json.mjs +49 -0
  188. package/dist/admin/translations/cs.json.mjs.map +1 -0
  189. package/dist/admin/translations/de.json.js +63 -0
  190. package/dist/admin/translations/de.json.js.map +1 -0
  191. package/dist/admin/translations/de.json.mjs +61 -0
  192. package/dist/admin/translations/de.json.mjs.map +1 -0
  193. package/dist/admin/translations/dk.json.js +87 -0
  194. package/dist/admin/translations/dk.json.js.map +1 -0
  195. package/dist/admin/translations/dk.json.mjs +85 -0
  196. package/dist/admin/translations/dk.json.mjs.map +1 -0
  197. package/dist/admin/translations/en.json.js +87 -0
  198. package/dist/admin/translations/en.json.js.map +1 -0
  199. package/dist/admin/translations/en.json.mjs +85 -0
  200. package/dist/admin/translations/en.json.mjs.map +1 -0
  201. package/dist/admin/translations/es.json.js +87 -0
  202. package/dist/admin/translations/es.json.js.map +1 -0
  203. package/dist/admin/translations/es.json.mjs +85 -0
  204. package/dist/admin/translations/es.json.mjs.map +1 -0
  205. package/dist/admin/translations/fr.json.js +51 -0
  206. package/dist/admin/translations/fr.json.js.map +1 -0
  207. package/dist/admin/translations/fr.json.mjs +49 -0
  208. package/dist/admin/translations/fr.json.mjs.map +1 -0
  209. package/dist/admin/translations/id.json.js +63 -0
  210. package/dist/admin/translations/id.json.js.map +1 -0
  211. package/dist/admin/translations/id.json.mjs +61 -0
  212. package/dist/admin/translations/id.json.mjs.map +1 -0
  213. package/dist/admin/translations/it.json.js +63 -0
  214. package/dist/admin/translations/it.json.js.map +1 -0
  215. package/dist/admin/translations/it.json.mjs +61 -0
  216. package/dist/admin/translations/it.json.mjs.map +1 -0
  217. package/dist/admin/translations/ja.json.js +49 -0
  218. package/dist/admin/translations/ja.json.js.map +1 -0
  219. package/dist/admin/translations/ja.json.mjs +47 -0
  220. package/dist/admin/translations/ja.json.mjs.map +1 -0
  221. package/dist/admin/translations/ko.json.js +87 -0
  222. package/dist/admin/translations/ko.json.js.map +1 -0
  223. package/dist/admin/translations/ko.json.mjs +85 -0
  224. package/dist/admin/translations/ko.json.mjs.map +1 -0
  225. package/dist/admin/translations/ms.json.js +50 -0
  226. package/dist/admin/translations/ms.json.js.map +1 -0
  227. package/dist/admin/translations/ms.json.mjs +48 -0
  228. package/dist/admin/translations/ms.json.mjs.map +1 -0
  229. package/dist/admin/translations/nl.json.js +49 -0
  230. package/dist/admin/translations/nl.json.js.map +1 -0
  231. package/dist/admin/translations/nl.json.mjs +47 -0
  232. package/dist/admin/translations/nl.json.mjs.map +1 -0
  233. package/dist/admin/translations/pl.json.js +87 -0
  234. package/dist/admin/translations/pl.json.js.map +1 -0
  235. package/dist/admin/translations/pl.json.mjs +85 -0
  236. package/dist/admin/translations/pl.json.mjs.map +1 -0
  237. package/dist/admin/translations/pt-BR.json.js +45 -0
  238. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  239. package/dist/admin/translations/pt-BR.json.mjs +43 -0
  240. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  241. package/dist/admin/translations/pt.json.js +49 -0
  242. package/dist/admin/translations/pt.json.js.map +1 -0
  243. package/dist/admin/translations/pt.json.mjs +47 -0
  244. package/dist/admin/translations/pt.json.mjs.map +1 -0
  245. package/dist/admin/translations/ru.json.js +87 -0
  246. package/dist/admin/translations/ru.json.js.map +1 -0
  247. package/dist/admin/translations/ru.json.mjs +85 -0
  248. package/dist/admin/translations/ru.json.mjs.map +1 -0
  249. package/dist/admin/translations/sk.json.js +51 -0
  250. package/dist/admin/translations/sk.json.js.map +1 -0
  251. package/dist/admin/translations/sk.json.mjs +49 -0
  252. package/dist/admin/translations/sk.json.mjs.map +1 -0
  253. package/dist/admin/translations/sv.json.js +87 -0
  254. package/dist/admin/translations/sv.json.js.map +1 -0
  255. package/dist/admin/translations/sv.json.mjs +85 -0
  256. package/dist/admin/translations/sv.json.mjs.map +1 -0
  257. package/dist/admin/translations/th.json.js +61 -0
  258. package/dist/admin/translations/th.json.js.map +1 -0
  259. package/dist/admin/translations/th.json.mjs +59 -0
  260. package/dist/admin/translations/th.json.mjs.map +1 -0
  261. package/dist/admin/translations/tr.json.js +86 -0
  262. package/dist/admin/translations/tr.json.js.map +1 -0
  263. package/dist/admin/translations/tr.json.mjs +84 -0
  264. package/dist/admin/translations/tr.json.mjs.map +1 -0
  265. package/dist/admin/translations/uk.json.js +87 -0
  266. package/dist/admin/translations/uk.json.js.map +1 -0
  267. package/dist/admin/translations/uk.json.mjs +85 -0
  268. package/dist/admin/translations/uk.json.mjs.map +1 -0
  269. package/dist/admin/translations/vi.json.js +51 -0
  270. package/dist/admin/translations/vi.json.js.map +1 -0
  271. package/dist/admin/translations/vi.json.mjs +49 -0
  272. package/dist/admin/translations/vi.json.mjs.map +1 -0
  273. package/dist/admin/translations/zh-Hans.json.js +87 -0
  274. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  275. package/dist/admin/translations/zh-Hans.json.mjs +85 -0
  276. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  277. package/dist/admin/translations/zh.json.js +87 -0
  278. package/dist/admin/translations/zh.json.js.map +1 -0
  279. package/dist/admin/translations/zh.json.mjs +85 -0
  280. package/dist/admin/translations/zh.json.mjs.map +1 -0
  281. package/dist/admin/utils/cleanPermissions.js +24 -0
  282. package/dist/admin/utils/cleanPermissions.js.map +1 -0
  283. package/dist/admin/utils/cleanPermissions.mjs +22 -0
  284. package/dist/admin/utils/cleanPermissions.mjs.map +1 -0
  285. package/dist/admin/utils/formatPluginName.js +29 -0
  286. package/dist/admin/utils/formatPluginName.js.map +1 -0
  287. package/dist/admin/utils/formatPluginName.mjs +27 -0
  288. package/dist/admin/utils/formatPluginName.mjs.map +1 -0
  289. package/dist/admin/utils/getTrad.js +8 -0
  290. package/dist/admin/utils/getTrad.js.map +1 -0
  291. package/dist/admin/utils/getTrad.mjs +6 -0
  292. package/dist/admin/utils/getTrad.mjs.map +1 -0
  293. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  294. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  295. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  296. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  297. package/dist/server/_virtual/_commonjsHelpers.js +8 -0
  298. package/dist/server/_virtual/_commonjsHelpers.js.map +1 -0
  299. package/dist/server/_virtual/_commonjsHelpers.mjs +6 -0
  300. package/dist/server/_virtual/_commonjsHelpers.mjs.map +1 -0
  301. package/dist/server/bootstrap/index.js +145 -0
  302. package/dist/server/bootstrap/index.js.map +1 -0
  303. package/dist/server/bootstrap/index.mjs +143 -0
  304. package/dist/server/bootstrap/index.mjs.map +1 -0
  305. package/dist/server/bootstrap/users-permissions-actions.js +98 -0
  306. package/dist/server/bootstrap/users-permissions-actions.js.map +1 -0
  307. package/dist/server/bootstrap/users-permissions-actions.mjs +96 -0
  308. package/dist/server/bootstrap/users-permissions-actions.mjs.map +1 -0
  309. package/dist/server/config.js +54 -0
  310. package/dist/server/config.js.map +1 -0
  311. package/dist/server/config.mjs +52 -0
  312. package/dist/server/config.mjs.map +1 -0
  313. package/dist/server/content-types/index.js +30 -0
  314. package/dist/server/content-types/index.js.map +1 -0
  315. package/dist/server/content-types/index.mjs +28 -0
  316. package/dist/server/content-types/index.mjs.map +1 -0
  317. package/dist/server/content-types/permission/index.js +44 -0
  318. package/dist/server/content-types/permission/index.js.map +1 -0
  319. package/dist/server/content-types/permission/index.mjs +42 -0
  320. package/dist/server/content-types/permission/index.mjs.map +1 -0
  321. package/dist/server/content-types/role/index.js +61 -0
  322. package/dist/server/content-types/role/index.js.map +1 -0
  323. package/dist/server/content-types/role/index.mjs +59 -0
  324. package/dist/server/content-types/role/index.mjs.map +1 -0
  325. package/dist/server/content-types/user/index.js +84 -0
  326. package/dist/server/content-types/user/index.js.map +1 -0
  327. package/dist/server/content-types/user/index.mjs +82 -0
  328. package/dist/server/content-types/user/index.mjs.map +1 -0
  329. package/dist/server/content-types/user/schema-config.js +25 -0
  330. package/dist/server/content-types/user/schema-config.js.map +1 -0
  331. package/dist/server/content-types/user/schema-config.mjs +23 -0
  332. package/dist/server/content-types/user/schema-config.mjs.map +1 -0
  333. package/dist/server/controllers/auth.js +429 -0
  334. package/dist/server/controllers/auth.js.map +1 -0
  335. package/dist/server/controllers/auth.mjs +427 -0
  336. package/dist/server/controllers/auth.mjs.map +1 -0
  337. package/dist/server/controllers/content-manager-user.js +168 -0
  338. package/dist/server/controllers/content-manager-user.js.map +1 -0
  339. package/dist/server/controllers/content-manager-user.mjs +166 -0
  340. package/dist/server/controllers/content-manager-user.mjs.map +1 -0
  341. package/dist/server/controllers/index.js +33 -0
  342. package/dist/server/controllers/index.js.map +1 -0
  343. package/dist/server/controllers/index.mjs +31 -0
  344. package/dist/server/controllers/index.mjs.map +1 -0
  345. package/dist/server/controllers/permissions.js +37 -0
  346. package/dist/server/controllers/permissions.js.map +1 -0
  347. package/dist/server/controllers/permissions.mjs +35 -0
  348. package/dist/server/controllers/permissions.mjs.map +1 -0
  349. package/dist/server/controllers/role.js +91 -0
  350. package/dist/server/controllers/role.js.map +1 -0
  351. package/dist/server/controllers/role.mjs +89 -0
  352. package/dist/server/controllers/role.mjs.map +1 -0
  353. package/dist/server/controllers/settings.js +107 -0
  354. package/dist/server/controllers/settings.js.map +1 -0
  355. package/dist/server/controllers/settings.mjs +105 -0
  356. package/dist/server/controllers/settings.mjs.map +1 -0
  357. package/dist/server/controllers/user.js +201 -0
  358. package/dist/server/controllers/user.js.map +1 -0
  359. package/dist/server/controllers/user.mjs +199 -0
  360. package/dist/server/controllers/user.mjs.map +1 -0
  361. package/dist/server/controllers/validation/auth.js +131 -0
  362. package/dist/server/controllers/validation/auth.js.map +1 -0
  363. package/dist/server/controllers/validation/auth.mjs +129 -0
  364. package/dist/server/controllers/validation/auth.mjs.map +1 -0
  365. package/dist/server/controllers/validation/email-template.js +72 -0
  366. package/dist/server/controllers/validation/email-template.js.map +1 -0
  367. package/dist/server/controllers/validation/email-template.mjs +70 -0
  368. package/dist/server/controllers/validation/email-template.mjs.map +1 -0
  369. package/dist/server/controllers/validation/user.js +54 -0
  370. package/dist/server/controllers/validation/user.js.map +1 -0
  371. package/dist/server/controllers/validation/user.mjs +52 -0
  372. package/dist/server/controllers/validation/user.mjs.map +1 -0
  373. package/dist/server/graphql/index.js +66 -0
  374. package/dist/server/graphql/index.js.map +1 -0
  375. package/dist/server/graphql/index.mjs +64 -0
  376. package/dist/server/graphql/index.mjs.map +1 -0
  377. package/dist/server/graphql/mutations/auth/change-password.js +40 -0
  378. package/dist/server/graphql/mutations/auth/change-password.js.map +1 -0
  379. package/dist/server/graphql/mutations/auth/change-password.mjs +38 -0
  380. package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -0
  381. package/dist/server/graphql/mutations/auth/email-confirmation.js +38 -0
  382. package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -0
  383. package/dist/server/graphql/mutations/auth/email-confirmation.mjs +36 -0
  384. package/dist/server/graphql/mutations/auth/email-confirmation.mjs.map +1 -0
  385. package/dist/server/graphql/mutations/auth/forgot-password.js +37 -0
  386. package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -0
  387. package/dist/server/graphql/mutations/auth/forgot-password.mjs +35 -0
  388. package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -0
  389. package/dist/server/graphql/mutations/auth/login.js +40 -0
  390. package/dist/server/graphql/mutations/auth/login.js.map +1 -0
  391. package/dist/server/graphql/mutations/auth/login.mjs +38 -0
  392. package/dist/server/graphql/mutations/auth/login.mjs.map +1 -0
  393. package/dist/server/graphql/mutations/auth/register.js +38 -0
  394. package/dist/server/graphql/mutations/auth/register.js.map +1 -0
  395. package/dist/server/graphql/mutations/auth/register.mjs +36 -0
  396. package/dist/server/graphql/mutations/auth/register.mjs.map +1 -0
  397. package/dist/server/graphql/mutations/auth/reset-password.js +40 -0
  398. package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -0
  399. package/dist/server/graphql/mutations/auth/reset-password.mjs +38 -0
  400. package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -0
  401. package/dist/server/graphql/mutations/crud/role/create-role.js +37 -0
  402. package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -0
  403. package/dist/server/graphql/mutations/crud/role/create-role.mjs +35 -0
  404. package/dist/server/graphql/mutations/crud/role/create-role.mjs.map +1 -0
  405. package/dist/server/graphql/mutations/crud/role/delete-role.js +32 -0
  406. package/dist/server/graphql/mutations/crud/role/delete-role.js.map +1 -0
  407. package/dist/server/graphql/mutations/crud/role/delete-role.mjs +30 -0
  408. package/dist/server/graphql/mutations/crud/role/delete-role.mjs.map +1 -0
  409. package/dist/server/graphql/mutations/crud/role/update-role.js +39 -0
  410. package/dist/server/graphql/mutations/crud/role/update-role.js.map +1 -0
  411. package/dist/server/graphql/mutations/crud/role/update-role.mjs +37 -0
  412. package/dist/server/graphql/mutations/crud/role/update-role.mjs.map +1 -0
  413. package/dist/server/graphql/mutations/crud/user/create-user.js +46 -0
  414. package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -0
  415. package/dist/server/graphql/mutations/crud/user/create-user.mjs +44 -0
  416. package/dist/server/graphql/mutations/crud/user/create-user.mjs.map +1 -0
  417. package/dist/server/graphql/mutations/crud/user/delete-user.js +44 -0
  418. package/dist/server/graphql/mutations/crud/user/delete-user.js.map +1 -0
  419. package/dist/server/graphql/mutations/crud/user/delete-user.mjs +42 -0
  420. package/dist/server/graphql/mutations/crud/user/delete-user.mjs.map +1 -0
  421. package/dist/server/graphql/mutations/crud/user/update-user.js +49 -0
  422. package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -0
  423. package/dist/server/graphql/mutations/crud/user/update-user.mjs +47 -0
  424. package/dist/server/graphql/mutations/crud/user/update-user.mjs.map +1 -0
  425. package/dist/server/graphql/mutations/index.js +58 -0
  426. package/dist/server/graphql/mutations/index.js.map +1 -0
  427. package/dist/server/graphql/mutations/index.mjs +56 -0
  428. package/dist/server/graphql/mutations/index.mjs.map +1 -0
  429. package/dist/server/graphql/queries/index.js +25 -0
  430. package/dist/server/graphql/queries/index.js.map +1 -0
  431. package/dist/server/graphql/queries/index.mjs +23 -0
  432. package/dist/server/graphql/queries/index.mjs.map +1 -0
  433. package/dist/server/graphql/queries/me.js +23 -0
  434. package/dist/server/graphql/queries/me.js.map +1 -0
  435. package/dist/server/graphql/queries/me.mjs +21 -0
  436. package/dist/server/graphql/queries/me.mjs.map +1 -0
  437. package/dist/server/graphql/resolvers-configs.js +93 -0
  438. package/dist/server/graphql/resolvers-configs.js.map +1 -0
  439. package/dist/server/graphql/resolvers-configs.mjs +91 -0
  440. package/dist/server/graphql/resolvers-configs.mjs.map +1 -0
  441. package/dist/server/graphql/types/create-role-payload.js +20 -0
  442. package/dist/server/graphql/types/create-role-payload.js.map +1 -0
  443. package/dist/server/graphql/types/create-role-payload.mjs +18 -0
  444. package/dist/server/graphql/types/create-role-payload.mjs.map +1 -0
  445. package/dist/server/graphql/types/delete-role-payload.js +20 -0
  446. package/dist/server/graphql/types/delete-role-payload.js.map +1 -0
  447. package/dist/server/graphql/types/delete-role-payload.mjs +18 -0
  448. package/dist/server/graphql/types/delete-role-payload.mjs.map +1 -0
  449. package/dist/server/graphql/types/index.js +41 -0
  450. package/dist/server/graphql/types/index.js.map +1 -0
  451. package/dist/server/graphql/types/index.mjs +39 -0
  452. package/dist/server/graphql/types/index.mjs.map +1 -0
  453. package/dist/server/graphql/types/login-input.js +24 -0
  454. package/dist/server/graphql/types/login-input.js.map +1 -0
  455. package/dist/server/graphql/types/login-input.mjs +22 -0
  456. package/dist/server/graphql/types/login-input.mjs.map +1 -0
  457. package/dist/server/graphql/types/login-payload.js +23 -0
  458. package/dist/server/graphql/types/login-payload.js.map +1 -0
  459. package/dist/server/graphql/types/login-payload.mjs +21 -0
  460. package/dist/server/graphql/types/login-payload.mjs.map +1 -0
  461. package/dist/server/graphql/types/me-role.js +23 -0
  462. package/dist/server/graphql/types/me-role.js.map +1 -0
  463. package/dist/server/graphql/types/me-role.mjs +21 -0
  464. package/dist/server/graphql/types/me-role.mjs.map +1 -0
  465. package/dist/server/graphql/types/me.js +28 -0
  466. package/dist/server/graphql/types/me.js.map +1 -0
  467. package/dist/server/graphql/types/me.mjs +26 -0
  468. package/dist/server/graphql/types/me.mjs.map +1 -0
  469. package/dist/server/graphql/types/password-payload.js +20 -0
  470. package/dist/server/graphql/types/password-payload.js.map +1 -0
  471. package/dist/server/graphql/types/password-payload.mjs +18 -0
  472. package/dist/server/graphql/types/password-payload.mjs.map +1 -0
  473. package/dist/server/graphql/types/register-input.js +22 -0
  474. package/dist/server/graphql/types/register-input.js.map +1 -0
  475. package/dist/server/graphql/types/register-input.mjs +20 -0
  476. package/dist/server/graphql/types/register-input.mjs.map +1 -0
  477. package/dist/server/graphql/types/update-role-payload.js +20 -0
  478. package/dist/server/graphql/types/update-role-payload.js.map +1 -0
  479. package/dist/server/graphql/types/update-role-payload.mjs +18 -0
  480. package/dist/server/graphql/types/update-role-payload.mjs.map +1 -0
  481. package/dist/server/graphql/types/user-input.js +26 -0
  482. package/dist/server/graphql/types/user-input.js.map +1 -0
  483. package/dist/server/graphql/types/user-input.mjs +24 -0
  484. package/dist/server/graphql/types/user-input.mjs.map +1 -0
  485. package/dist/server/graphql/utils.js +32 -0
  486. package/dist/server/graphql/utils.js.map +1 -0
  487. package/dist/server/graphql/utils.mjs +30 -0
  488. package/dist/server/graphql/utils.mjs.map +1 -0
  489. package/dist/server/index.js +10 -0
  490. package/dist/server/index.js.map +1 -0
  491. package/dist/server/index.mjs +8 -0
  492. package/dist/server/index.mjs.map +1 -0
  493. package/dist/server/index2.js +39 -0
  494. package/dist/server/index2.js.map +1 -0
  495. package/dist/server/index2.mjs +37 -0
  496. package/dist/server/index2.mjs.map +1 -0
  497. package/dist/server/middlewares/index.js +18 -0
  498. package/dist/server/middlewares/index.js.map +1 -0
  499. package/dist/server/middlewares/index.mjs +16 -0
  500. package/dist/server/middlewares/index.mjs.map +1 -0
  501. package/dist/server/middlewares/rateLimit.js +51 -0
  502. package/dist/server/middlewares/rateLimit.js.map +1 -0
  503. package/dist/server/middlewares/rateLimit.mjs +49 -0
  504. package/dist/server/middlewares/rateLimit.mjs.map +1 -0
  505. package/dist/server/register.js +41 -0
  506. package/dist/server/register.js.map +1 -0
  507. package/dist/server/register.mjs +39 -0
  508. package/dist/server/register.mjs.map +1 -0
  509. package/dist/server/routes/admin/index.js +27 -0
  510. package/dist/server/routes/admin/index.js.map +1 -0
  511. package/dist/server/routes/admin/index.mjs +25 -0
  512. package/dist/server/routes/admin/index.mjs.map +1 -0
  513. package/dist/server/routes/admin/permissions.js +29 -0
  514. package/dist/server/routes/admin/permissions.js.map +1 -0
  515. package/dist/server/routes/admin/permissions.mjs +27 -0
  516. package/dist/server/routes/admin/permissions.mjs.map +1 -0
  517. package/dist/server/routes/admin/role.js +99 -0
  518. package/dist/server/routes/admin/role.js.map +1 -0
  519. package/dist/server/routes/admin/role.mjs +97 -0
  520. package/dist/server/routes/admin/role.mjs.map +1 -0
  521. package/dist/server/routes/admin/settings.js +116 -0
  522. package/dist/server/routes/admin/settings.js.map +1 -0
  523. package/dist/server/routes/admin/settings.mjs +114 -0
  524. package/dist/server/routes/admin/settings.mjs.map +1 -0
  525. package/dist/server/routes/content-api/auth.js +152 -0
  526. package/dist/server/routes/content-api/auth.js.map +1 -0
  527. package/dist/server/routes/content-api/auth.mjs +150 -0
  528. package/dist/server/routes/content-api/auth.mjs.map +1 -0
  529. package/dist/server/routes/content-api/index.js +32 -0
  530. package/dist/server/routes/content-api/index.js.map +1 -0
  531. package/dist/server/routes/content-api/index.mjs +30 -0
  532. package/dist/server/routes/content-api/index.mjs.map +1 -0
  533. package/dist/server/routes/content-api/permissions.js +26 -0
  534. package/dist/server/routes/content-api/permissions.js.map +1 -0
  535. package/dist/server/routes/content-api/permissions.mjs +24 -0
  536. package/dist/server/routes/content-api/permissions.mjs.map +1 -0
  537. package/dist/server/routes/content-api/role.js +73 -0
  538. package/dist/server/routes/content-api/role.js.map +1 -0
  539. package/dist/server/routes/content-api/role.mjs +71 -0
  540. package/dist/server/routes/content-api/role.mjs.map +1 -0
  541. package/dist/server/routes/content-api/user.js +132 -0
  542. package/dist/server/routes/content-api/user.js.map +1 -0
  543. package/dist/server/routes/content-api/user.mjs +130 -0
  544. package/dist/server/routes/content-api/user.mjs.map +1 -0
  545. package/dist/server/routes/content-api/validation.js +216 -0
  546. package/dist/server/routes/content-api/validation.js.map +1 -0
  547. package/dist/server/routes/content-api/validation.mjs +214 -0
  548. package/dist/server/routes/content-api/validation.mjs.map +1 -0
  549. package/dist/server/routes/index.js +19 -0
  550. package/dist/server/routes/index.js.map +1 -0
  551. package/dist/server/routes/index.mjs +17 -0
  552. package/dist/server/routes/index.mjs.map +1 -0
  553. package/dist/server/services/index.js +36 -0
  554. package/dist/server/services/index.js.map +1 -0
  555. package/dist/server/services/index.mjs +34 -0
  556. package/dist/server/services/index.mjs.map +1 -0
  557. package/dist/server/services/jwt.js +50 -0
  558. package/dist/server/services/jwt.js.map +1 -0
  559. package/dist/server/services/jwt.mjs +48 -0
  560. package/dist/server/services/jwt.mjs.map +1 -0
  561. package/dist/server/services/permission.js +52 -0
  562. package/dist/server/services/permission.js.map +1 -0
  563. package/dist/server/services/permission.mjs +50 -0
  564. package/dist/server/services/permission.mjs.map +1 -0
  565. package/dist/server/services/providers-registry.js +555 -0
  566. package/dist/server/services/providers-registry.js.map +1 -0
  567. package/dist/server/services/providers-registry.mjs +553 -0
  568. package/dist/server/services/providers-registry.mjs.map +1 -0
  569. package/dist/server/services/providers.js +111 -0
  570. package/dist/server/services/providers.js.map +1 -0
  571. package/dist/server/services/providers.mjs +109 -0
  572. package/dist/server/services/providers.mjs.map +1 -0
  573. package/dist/server/services/role.js +186 -0
  574. package/dist/server/services/role.js.map +1 -0
  575. package/dist/server/services/role.mjs +184 -0
  576. package/dist/server/services/role.mjs.map +1 -0
  577. package/dist/server/services/user.js +179 -0
  578. package/dist/server/services/user.js.map +1 -0
  579. package/dist/server/services/user.mjs +177 -0
  580. package/dist/server/services/user.mjs.map +1 -0
  581. package/dist/server/services/users-permissions.js +247 -0
  582. package/dist/server/services/users-permissions.js.map +1 -0
  583. package/dist/server/services/users-permissions.mjs +245 -0
  584. package/dist/server/services/users-permissions.mjs.map +1 -0
  585. package/dist/server/strategies/users-permissions.js +114 -0
  586. package/dist/server/strategies/users-permissions.js.map +1 -0
  587. package/dist/server/strategies/users-permissions.mjs +112 -0
  588. package/dist/server/strategies/users-permissions.mjs.map +1 -0
  589. package/dist/server/utils/index.js +22 -0
  590. package/dist/server/utils/index.js.map +1 -0
  591. package/dist/server/utils/index.mjs +20 -0
  592. package/dist/server/utils/index.mjs.map +1 -0
  593. package/dist/server/utils/sanitize/index.js +21 -0
  594. package/dist/server/utils/sanitize/index.js.map +1 -0
  595. package/dist/server/utils/sanitize/index.mjs +19 -0
  596. package/dist/server/utils/sanitize/index.mjs.map +1 -0
  597. package/dist/server/utils/sanitize/sanitizers.js +32 -0
  598. package/dist/server/utils/sanitize/sanitizers.js.map +1 -0
  599. package/dist/server/utils/sanitize/sanitizers.mjs +30 -0
  600. package/dist/server/utils/sanitize/sanitizers.mjs.map +1 -0
  601. package/dist/server/utils/sanitize/visitors/index.js +17 -0
  602. package/dist/server/utils/sanitize/visitors/index.js.map +1 -0
  603. package/dist/server/utils/sanitize/visitors/index.mjs +15 -0
  604. package/dist/server/utils/sanitize/visitors/index.mjs.map +1 -0
  605. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +17 -0
  606. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js.map +1 -0
  607. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs +15 -0
  608. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs.map +1 -0
  609. package/documentation/content-api.yaml +1 -1
  610. package/jest.config.front.js +1 -0
  611. package/package.json +54 -36
  612. package/rollup.config.mjs +19 -0
  613. package/server/bootstrap/index.js +18 -15
  614. package/server/bootstrap/users-permissions-actions.js +6 -0
  615. package/server/config.js +29 -0
  616. package/server/content-types/user/index.js +0 -1
  617. package/server/controllers/auth.js +75 -39
  618. package/server/controllers/content-manager-user.js +31 -34
  619. package/server/controllers/role.js +17 -4
  620. package/server/controllers/user.js +18 -8
  621. package/server/controllers/validation/auth.js +104 -25
  622. package/server/controllers/validation/user.js +12 -1
  623. package/server/graphql/types/index.js +1 -0
  624. package/server/graphql/types/me.js +1 -0
  625. package/server/graphql/types/user-input.js +20 -0
  626. package/server/middlewares/rateLimit.js +41 -21
  627. package/server/register.js +2 -2
  628. package/server/routes/content-api/auth.js +107 -71
  629. package/server/routes/content-api/index.js +10 -3
  630. package/server/routes/content-api/permissions.js +14 -7
  631. package/server/routes/content-api/role.js +57 -27
  632. package/server/routes/content-api/user.js +108 -51
  633. package/server/routes/content-api/validation.js +249 -0
  634. package/server/services/jwt.js +3 -3
  635. package/server/services/permission.js +3 -7
  636. package/server/services/providers-registry.js +469 -261
  637. package/server/services/providers.js +10 -5
  638. package/server/services/role.js +15 -13
  639. package/server/services/user.js +56 -19
  640. package/server/services/users-permissions.js +15 -13
  641. package/server/strategies/users-permissions.js +1 -8
  642. package/server/utils/index.d.ts +2 -1
  643. package/server/utils/sanitize/sanitizers.js +7 -3
  644. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  645. package/.eslintrc.js +0 -14
  646. package/admin/src/components/FormModal/index.js +0 -123
  647. package/admin/src/components/Permissions/index.js +0 -54
  648. package/admin/src/hooks/index.js +0 -5
  649. package/admin/src/hooks/useFetchRole/index.js +0 -64
  650. package/admin/src/hooks/useFetchRole/reducer.js +0 -31
  651. package/admin/src/hooks/useForm/index.js +0 -67
  652. package/admin/src/hooks/useForm/reducer.js +0 -40
  653. package/admin/src/hooks/usePlugins/index.js +0 -67
  654. package/admin/src/hooks/usePlugins/init.js +0 -5
  655. package/admin/src/hooks/usePlugins/reducer.js +0 -34
  656. package/admin/src/hooks/useRolesList/index.js +0 -62
  657. package/admin/src/hooks/useRolesList/init.js +0 -5
  658. package/admin/src/hooks/useRolesList/reducer.js +0 -31
  659. package/admin/src/pages/AdvancedSettings/index.js +0 -243
  660. package/admin/src/pages/AdvancedSettings/utils/api.js +0 -17
  661. package/admin/src/pages/EmailTemplates/components/EmailForm.js +0 -175
  662. package/admin/src/pages/EmailTemplates/index.js +0 -160
  663. package/admin/src/pages/EmailTemplates/utils/api.js +0 -17
  664. package/admin/src/pages/Providers/index.js +0 -272
  665. package/admin/src/pages/Providers/reducer.js +0 -54
  666. package/admin/src/pages/Providers/utils/api.js +0 -25
  667. package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
  668. package/admin/src/pages/Roles/CreatePage/index.js +0 -182
  669. package/admin/src/pages/Roles/CreatePage/utils/schema.js +0 -9
  670. package/admin/src/pages/Roles/EditPage/index.js +0 -194
  671. package/admin/src/pages/Roles/EditPage/utils/schema.js +0 -9
  672. package/admin/src/pages/Roles/ListPage/components/TableBody.js +0 -92
  673. package/admin/src/pages/Roles/ListPage/utils/api.js +0 -31
  674. package/admin/src/pages/Roles/ProtectedCreatePage/index.js +0 -12
  675. package/admin/src/pages/Roles/ProtectedEditPage/index.js +0 -12
  676. package/admin/src/pages/Roles/ProtectedListPage/index.js +0 -15
  677. package/admin/src/pages/Roles/index.js +0 -27
  678. package/admin/src/utils/getRequestURL.js +0 -5
  679. package/server/bootstrap/grant-config.js +0 -131
  680. package/strapi-admin.js +0 -3
  681. package/strapi-server.js +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/plugin-users-permissions",
3
- "version": "0.0.0-next.ff946d2c25a3e577b47132a357cac2932eb8e635",
3
+ "version": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
4
4
  "description": "Protect your API with a full-authentication process based on JWT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,57 +19,76 @@
19
19
  "url": "https://strapi.io"
20
20
  }
21
21
  ],
22
+ "exports": {
23
+ "./strapi-admin": {
24
+ "source": "./admin/src/index.js",
25
+ "import": "./dist/admin/index.mjs",
26
+ "require": "./dist/admin/index.js",
27
+ "default": "./dist/admin/index.js"
28
+ },
29
+ "./strapi-server": {
30
+ "source": "./server/index.js",
31
+ "import": "./dist/server/index.mjs",
32
+ "require": "./dist/server/index.js",
33
+ "default": "./dist/server/index.js"
34
+ },
35
+ "./package.json": "./package.json"
36
+ },
22
37
  "scripts": {
23
- "test:unit": "run -T jest",
24
- "test:unit:watch": "run -T jest --watch",
38
+ "build": "run -T npm-run-all clean build:code",
39
+ "build:code": "run -T rollup -c",
40
+ "clean": "run -T rimraf dist",
41
+ "lint": "run -T eslint .",
25
42
  "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
26
- "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
27
43
  "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
44
+ "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
28
45
  "test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
29
- "lint": "run -T eslint ."
46
+ "test:unit": "run -T jest",
47
+ "test:unit:watch": "run -T jest --watch",
48
+ "watch": "run -T rollup -c -w"
30
49
  },
31
50
  "dependencies": {
32
- "@strapi/design-system": "1.7.7",
33
- "@strapi/helper-plugin": "0.0.0-next.ff946d2c25a3e577b47132a357cac2932eb8e635",
34
- "@strapi/icons": "1.7.7",
35
- "@strapi/utils": "0.0.0-next.ff946d2c25a3e577b47132a357cac2932eb8e635",
51
+ "@strapi/design-system": "2.0.0-rc.29",
52
+ "@strapi/icons": "2.0.0-rc.29",
53
+ "@strapi/utils": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
36
54
  "bcryptjs": "2.4.3",
37
- "formik": "2.2.9",
38
- "grant-koa": "5.4.8",
39
- "immer": "9.0.19",
55
+ "formik": "2.4.5",
56
+ "grant": "^5.4.8",
57
+ "immer": "9.0.21",
40
58
  "jsonwebtoken": "9.0.0",
41
59
  "jwk-to-pem": "2.0.5",
42
- "koa": "^2.13.4",
43
- "koa2-ratelimit": "^1.1.2",
60
+ "koa": "2.16.1",
61
+ "koa2-ratelimit": "^1.1.3",
44
62
  "lodash": "4.17.21",
45
- "prop-types": "^15.7.2",
63
+ "prop-types": "^15.8.1",
46
64
  "purest": "4.0.2",
47
- "react-intl": "6.4.1",
48
- "react-query": "3.24.3",
49
- "react-redux": "8.0.5",
65
+ "react-intl": "6.6.2",
66
+ "react-query": "3.39.3",
67
+ "react-redux": "8.1.3",
50
68
  "url-join": "4.0.1",
51
- "yup": "^0.32.9"
69
+ "yup": "0.32.9",
70
+ "zod": "3.25.67"
52
71
  },
53
72
  "devDependencies": {
54
- "@testing-library/dom": "8.19.0",
55
- "@testing-library/react": "12.1.4",
56
- "@testing-library/react-hooks": "8.0.1",
57
- "@testing-library/user-event": "14.4.3",
58
- "history": "^4.9.0",
59
- "msw": "1.2.1",
60
- "react": "^17.0.2",
61
- "react-dom": "^17.0.2",
62
- "react-router-dom": "5.3.4",
63
- "styled-components": "5.3.3"
73
+ "@strapi/strapi": "0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c",
74
+ "@testing-library/dom": "10.1.0",
75
+ "@testing-library/react": "15.0.7",
76
+ "@testing-library/user-event": "14.5.2",
77
+ "msw": "1.3.0",
78
+ "react": "18.3.1",
79
+ "react-dom": "18.3.1",
80
+ "react-router-dom": "6.22.3",
81
+ "styled-components": "6.1.8"
64
82
  },
65
83
  "peerDependencies": {
66
- "react": "^17.0.2",
67
- "react-dom": "^17.0.2",
68
- "react-router-dom": "^5.3.4",
69
- "styled-components": "^5.3.3"
84
+ "@strapi/strapi": "^5.0.0",
85
+ "react": "^17.0.0 || ^18.0.0",
86
+ "react-dom": "^17.0.0 || ^18.0.0",
87
+ "react-router-dom": "^6.0.0",
88
+ "styled-components": "^6.0.0"
70
89
  },
71
90
  "engines": {
72
- "node": ">=14.19.1 <=18.x.x",
91
+ "node": ">=18.0.0 <=22.x.x",
73
92
  "npm": ">=6.0.0"
74
93
  },
75
94
  "strapi": {
@@ -78,6 +97,5 @@
78
97
  "description": "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.",
79
98
  "required": true,
80
99
  "kind": "plugin"
81
- },
82
- "gitHead": "ff946d2c25a3e577b47132a357cac2932eb8e635"
100
+ }
83
101
  }
@@ -0,0 +1,19 @@
1
+ import { defineConfig } from 'rollup';
2
+ import { baseConfig } from '../../../rollup.utils.mjs';
3
+
4
+ export default defineConfig([
5
+ baseConfig({
6
+ input: {
7
+ index: './admin/src/index.js',
8
+ },
9
+ rootDir: './admin/src',
10
+ outDir: './dist/admin',
11
+ }),
12
+ baseConfig({
13
+ input: {
14
+ index: './server/index.js'
15
+ },
16
+ rootDir: './server',
17
+ outDir: './dist/server',
18
+ })
19
+ ]);
@@ -9,23 +9,26 @@
9
9
  */
10
10
  const crypto = require('crypto');
11
11
  const _ = require('lodash');
12
- const urljoin = require('url-join');
13
12
  const { getService } = require('../utils');
14
- const getGrantConfig = require('./grant-config');
15
-
16
13
  const usersPermissionsActions = require('./users-permissions-actions');
17
14
 
18
15
  const initGrant = async (pluginStore) => {
19
- const apiPrefix = strapi.config.get('api.rest.prefix');
20
- const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth');
16
+ const allProviders = getService('providers-registry').getAll();
17
+
18
+ const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider]) => {
19
+ const { icon, enabled, grantConfig } = provider;
21
20
 
22
- const grantConfig = getGrantConfig(baseURL);
21
+ acc[name] = {
22
+ icon,
23
+ enabled,
24
+ ...grantConfig,
25
+ };
26
+ return acc;
27
+ }, {});
23
28
 
24
29
  const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {};
25
- // store grant auth config to db
26
- // when plugin_users-permissions_grant is not existed in db
27
- // or we have added/deleted provider here.
28
- if (!prevGrantConfig || !_.isEqual(_.keys(prevGrantConfig), _.keys(grantConfig))) {
30
+
31
+ if (!prevGrantConfig || !_.isEqual(prevGrantConfig, grantConfig)) {
29
32
  // merge with the previous provider config.
30
33
  _.keys(grantConfig).forEach((key) => {
31
34
  if (key in prevGrantConfig) {
@@ -104,13 +107,13 @@ module.exports = async ({ strapi }) => {
104
107
  await initEmails(pluginStore);
105
108
  await initAdvancedOptions(pluginStore);
106
109
 
107
- await strapi.admin.services.permission.actionProvider.registerMany(
108
- usersPermissionsActions.actions
109
- );
110
+ await strapi
111
+ .service('admin::permission')
112
+ .actionProvider.registerMany(usersPermissionsActions.actions);
110
113
 
111
114
  await getService('users-permissions').initialize();
112
115
 
113
- if (!strapi.config.get('plugin.users-permissions.jwtSecret')) {
116
+ if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {
114
117
  if (process.env.NODE_ENV !== 'development') {
115
118
  throw new Error(
116
119
  `Missing jwtSecret. Please, set configuration variable "jwtSecret" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with \`crypto.randomBytes(16).toString('base64')\`).
@@ -120,7 +123,7 @@ For security reasons, prefer storing the secret in an environment variable and r
120
123
 
121
124
  const jwtSecret = crypto.randomBytes(16).toString('base64');
122
125
 
123
- strapi.config.set('plugin.users-permissions.jwtSecret', jwtSecret);
126
+ strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
124
127
 
125
128
  if (!process.env.JWT_SECRET) {
126
129
  const envPath = process.env.ENV_PATH || '.env';
@@ -16,6 +16,12 @@ module.exports = {
16
16
  uid: 'roles.read',
17
17
  subCategory: 'roles',
18
18
  pluginName: 'users-permissions',
19
+ aliases: [
20
+ {
21
+ actionId: 'plugin::content-manager.explorer.read',
22
+ subjects: ['plugin::users-permissions.role'],
23
+ },
24
+ ],
19
25
  },
20
26
  {
21
27
  section: 'plugins',
package/server/config.js CHANGED
@@ -18,6 +18,35 @@ module.exports = {
18
18
  },
19
19
  },
20
20
  },
21
+ callback: {
22
+ validate(callback, provider) {
23
+ let uCallback;
24
+ let uProviderCallback;
25
+
26
+ try {
27
+ uCallback = new URL(callback);
28
+ uProviderCallback = new URL(provider.callback);
29
+ } catch {
30
+ throw new Error('The callback is not a valid URL');
31
+ }
32
+
33
+ // Make sure the different origin matches
34
+ if (uCallback.origin !== uProviderCallback.origin) {
35
+ throw new Error(
36
+ `Forbidden callback provided: origins don't match. Please verify your config.`
37
+ );
38
+ }
39
+
40
+ // Make sure the different pathname matches
41
+ if (uCallback.pathname !== uProviderCallback.pathname) {
42
+ throw new Error(
43
+ `Forbidden callback provided: pathname don't match. Please verify your config.`
44
+ );
45
+ }
46
+
47
+ // NOTE: We're not checking the search parameters on purpose to allow passing different states
48
+ },
49
+ },
21
50
  }),
22
51
  validator() {},
23
52
  };
@@ -12,7 +12,6 @@ module.exports = {
12
12
  displayName: 'User',
13
13
  },
14
14
  options: {
15
- draftAndPublish: false,
16
15
  timestamps: true,
17
16
  },
18
17
  attributes: {
@@ -9,6 +9,7 @@
9
9
  /* eslint-disable no-useless-escape */
10
10
  const crypto = require('crypto');
11
11
  const _ = require('lodash');
12
+ const { concat, compact, isArray } = require('lodash/fp');
12
13
  const utils = require('@strapi/utils');
13
14
  const { getService } = require('../utils');
14
15
  const {
@@ -21,17 +22,16 @@ const {
21
22
  validateChangePasswordBody,
22
23
  } = require('./validation/auth');
23
24
 
24
- const { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = utils;
25
- const { ApplicationError, ValidationError } = utils.errors;
25
+ const { ApplicationError, ValidationError, ForbiddenError } = utils.errors;
26
26
 
27
27
  const sanitizeUser = (user, ctx) => {
28
28
  const { auth } = ctx.state;
29
29
  const userSchema = strapi.getModel('plugin::users-permissions.user');
30
30
 
31
- return sanitize.contentAPI.output(user, userSchema, { auth });
31
+ return strapi.contentAPI.sanitize.output(user, userSchema, { auth });
32
32
  };
33
33
 
34
- module.exports = {
34
+ module.exports = ({ strapi }) => ({
35
35
  async callback(ctx) {
36
36
  const provider = ctx.params.provider || 'local';
37
37
  const params = ctx.request.body;
@@ -51,7 +51,7 @@ module.exports = {
51
51
  const { identifier } = params;
52
52
 
53
53
  // Check if the user exists.
54
- const user = await strapi.query('plugin::users-permissions.user').findOne({
54
+ const user = await strapi.db.query('plugin::users-permissions.user').findOne({
55
55
  where: {
56
56
  provider,
57
57
  $or: [{ email: identifier.toLowerCase() }, { username: identifier }],
@@ -96,6 +96,10 @@ module.exports = {
96
96
  try {
97
97
  const user = await getService('providers').connect(provider, ctx.query);
98
98
 
99
+ if (user.blocked) {
100
+ throw new ForbiddenError('Your account has been blocked by an administrator');
101
+ }
102
+
99
103
  return ctx.send({
100
104
  jwt: getService('jwt').issue({ id: user.id }),
101
105
  user: await sanitizeUser(user, ctx),
@@ -110,13 +114,17 @@ module.exports = {
110
114
  throw new ApplicationError('You must be authenticated to reset your password');
111
115
  }
112
116
 
113
- const { currentPassword, password } = await validateChangePasswordBody(ctx.request.body);
117
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
114
118
 
115
- const user = await strapi.entityService.findOne(
116
- 'plugin::users-permissions.user',
117
- ctx.state.user.id
119
+ const { currentPassword, password } = await validateChangePasswordBody(
120
+ ctx.request.body,
121
+ validations
118
122
  );
119
123
 
124
+ const user = await strapi.db
125
+ .query('plugin::users-permissions.user')
126
+ .findOne({ where: { id: ctx.state.user.id } });
127
+
120
128
  const validPassword = await getService('user').validatePassword(currentPassword, user.password);
121
129
 
122
130
  if (!validPassword) {
@@ -136,15 +144,18 @@ module.exports = {
136
144
  },
137
145
 
138
146
  async resetPassword(ctx) {
147
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
148
+
139
149
  const { password, passwordConfirmation, code } = await validateResetPasswordBody(
140
- ctx.request.body
150
+ ctx.request.body,
151
+ validations
141
152
  );
142
153
 
143
154
  if (password !== passwordConfirmation) {
144
155
  throw new ValidationError('Passwords do not match');
145
156
  }
146
157
 
147
- const user = await strapi
158
+ const user = await strapi.db
148
159
  .query('plugin::users-permissions.user')
149
160
  .findOne({ where: { resetPasswordToken: code } });
150
161
 
@@ -165,7 +176,7 @@ module.exports = {
165
176
  },
166
177
 
167
178
  async connect(ctx, next) {
168
- const grant = require('grant-koa');
179
+ const grant = require('grant').koa();
169
180
 
170
181
  const providers = await strapi
171
182
  .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })
@@ -193,10 +204,28 @@ module.exports = {
193
204
  }
194
205
 
195
206
  // Ability to pass OAuth callback dynamically
196
- grantConfig[provider].callback =
197
- _.get(ctx, 'query.callback') ||
198
- _.get(ctx, 'session.grant.dynamic.callback') ||
199
- grantConfig[provider].callback;
207
+ const queryCustomCallback = _.get(ctx, 'query.callback');
208
+ const dynamicSessionCallback = _.get(ctx, 'session.grant.dynamic.callback');
209
+
210
+ const customCallback = queryCustomCallback ?? dynamicSessionCallback;
211
+
212
+ // The custom callback is validated to make sure it's not redirecting to an unwanted actor.
213
+ if (customCallback !== undefined) {
214
+ try {
215
+ // We're extracting the callback validator from the plugin config since it can be user-customized
216
+ const { validate: validateCallback } = strapi
217
+ .plugin('users-permissions')
218
+ .config('callback');
219
+
220
+ await validateCallback(customCallback, grantConfig[provider]);
221
+
222
+ grantConfig[provider].callback = customCallback;
223
+ } catch (e) {
224
+ throw new ValidationError('Invalid callback URL provided', { callback: customCallback });
225
+ }
226
+ }
227
+
228
+ // Build a valid redirect URI for the current provider
200
229
  grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider);
201
230
 
202
231
  return grant(grantConfig)(ctx, next);
@@ -211,7 +240,7 @@ module.exports = {
211
240
  const advancedSettings = await pluginStore.get({ key: 'advanced' });
212
241
 
213
242
  // Find the user by email.
214
- const user = await strapi
243
+ const user = await strapi.db
215
244
  .query('plugin::users-permissions.user')
216
245
  .findOne({ where: { email: email.toLowerCase() } });
217
246
 
@@ -229,8 +258,8 @@ module.exports = {
229
258
  resetPasswordSettings.message,
230
259
  {
231
260
  URL: advancedSettings.email_reset_password,
232
- SERVER_URL: getAbsoluteServerUrl(strapi.config),
233
- ADMIN_URL: getAbsoluteAdminUrl(strapi.config),
261
+ SERVER_URL: strapi.config.get('server.absoluteUrl'),
262
+ ADMIN_URL: strapi.config.get('admin.absoluteUrl'),
234
263
  USER: userInfo,
235
264
  TOKEN: resetPasswordToken,
236
265
  }
@@ -273,26 +302,32 @@ module.exports = {
273
302
  throw new ApplicationError('Register action is currently disabled');
274
303
  }
275
304
 
305
+ const { register } = strapi.config.get('plugin::users-permissions');
306
+ const alwaysAllowedKeys = ['username', 'password', 'email'];
307
+
308
+ // Note that we intentionally do not filter allowedFields to allow a project to explicitly accept private or other Strapi field on registration
309
+ const allowedKeys = compact(
310
+ concat(alwaysAllowedKeys, isArray(register?.allowedFields) ? register.allowedFields : [])
311
+ );
312
+
313
+ // Check if there are any keys in requestBody that are not in allowedKeys
314
+ const invalidKeys = Object.keys(ctx.request.body).filter((key) => !allowedKeys.includes(key));
315
+
316
+ if (invalidKeys.length > 0) {
317
+ // If there are invalid keys, throw an error
318
+ throw new ValidationError(`Invalid parameters: ${invalidKeys.join(', ')}`);
319
+ }
320
+
276
321
  const params = {
277
- ..._.omit(ctx.request.body, [
278
- 'confirmed',
279
- 'blocked',
280
- 'confirmationToken',
281
- 'resetPasswordToken',
282
- 'provider',
283
- 'id',
284
- 'createdAt',
285
- 'updatedAt',
286
- 'createdBy',
287
- 'updatedBy',
288
- 'role',
289
- ]),
322
+ ..._.pick(ctx.request.body, allowedKeys),
290
323
  provider: 'local',
291
324
  };
292
325
 
293
- await validateRegisterBody(params);
326
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
294
327
 
295
- const role = await strapi
328
+ await validateRegisterBody(params, validations);
329
+
330
+ const role = await strapi.db
296
331
  .query('plugin::users-permissions.role')
297
332
  .findOne({ where: { type: settings.default_role } });
298
333
 
@@ -311,7 +346,7 @@ module.exports = {
311
346
  ],
312
347
  };
313
348
 
314
- const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({
349
+ const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({
315
350
  where: { ...identifierFilter, provider },
316
351
  });
317
352
 
@@ -320,7 +355,7 @@ module.exports = {
320
355
  }
321
356
 
322
357
  if (settings.unique_email) {
323
- const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({
358
+ const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({
324
359
  where: { ...identifierFilter },
325
360
  });
326
361
 
@@ -345,7 +380,8 @@ module.exports = {
345
380
  try {
346
381
  await getService('user').sendConfirmationEmail(sanitizedUser);
347
382
  } catch (err) {
348
- throw new ApplicationError(err.message);
383
+ strapi.log.error(err);
384
+ throw new ApplicationError('Error sending confirmation email');
349
385
  }
350
386
 
351
387
  return ctx.send({ user: sanitizedUser });
@@ -390,7 +426,7 @@ module.exports = {
390
426
  async sendEmailConfirmation(ctx) {
391
427
  const { email } = await validateSendEmailConfirmationBody(ctx.request.body);
392
428
 
393
- const user = await strapi.query('plugin::users-permissions.user').findOne({
429
+ const user = await strapi.db.query('plugin::users-permissions.user').findOne({
394
430
  where: { email: email.toLowerCase() },
395
431
  });
396
432
 
@@ -413,4 +449,4 @@ module.exports = {
413
449
  sent: true,
414
450
  });
415
451
  },
416
- };
452
+ });
@@ -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
  },