@strapi/plugin-users-permissions 0.0.0-next.f7babb775ed9a7e18d8351cb7f74c63e016323c4 → 0.0.0-next.f93d6eabe52aa7681655cfa08eedbc3708dbb90d

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 (660) 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} +3 -3
  5. package/admin/src/components/FormModal/Input/{index.js → index.jsx} +33 -32
  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} +13 -22
  9. package/admin/src/components/Permissions/index.jsx +47 -0
  10. package/admin/src/components/Permissions/reducer.js +1 -1
  11. package/admin/src/components/Policies/{index.js → index.jsx} +8 -6
  12. package/admin/src/components/UsersPermissions/{index.js → index.jsx} +15 -7
  13. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  14. package/admin/src/index.js +21 -49
  15. package/admin/src/pages/AdvancedSettings/index.jsx +214 -0
  16. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  17. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  18. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +156 -0
  19. package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +21 -18
  20. package/admin/src/pages/EmailTemplates/index.jsx +148 -0
  21. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  22. package/admin/src/pages/Providers/index.jsx +262 -0
  23. package/admin/src/pages/Providers/utils/forms.js +23 -11
  24. package/admin/src/pages/Roles/constants.js +3 -3
  25. package/admin/src/{hooks → pages/Roles/hooks}/usePlugins.js +19 -12
  26. package/admin/src/pages/Roles/index.jsx +24 -0
  27. package/admin/src/pages/Roles/pages/CreatePage.jsx +194 -0
  28. package/admin/src/pages/Roles/pages/EditPage.jsx +215 -0
  29. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +119 -0
  30. package/admin/src/pages/Roles/{ListPage/index.js → pages/ListPage/index.jsx} +93 -65
  31. package/admin/src/pluginId.js +2 -2
  32. package/admin/src/translations/en.json +1 -1
  33. package/admin/src/translations/uk.json +41 -4
  34. package/admin/src/translations/zh-Hans.json +80 -80
  35. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  36. package/dist/admin/components/BoundRoute/getMethodColor.js +49 -0
  37. package/dist/admin/components/BoundRoute/getMethodColor.js.map +1 -0
  38. package/dist/admin/components/BoundRoute/getMethodColor.mjs +47 -0
  39. package/dist/admin/components/BoundRoute/getMethodColor.mjs.map +1 -0
  40. package/dist/admin/components/BoundRoute/index.js +98 -0
  41. package/dist/admin/components/BoundRoute/index.js.map +1 -0
  42. package/dist/admin/components/BoundRoute/index.mjs +96 -0
  43. package/dist/admin/components/BoundRoute/index.mjs.map +1 -0
  44. package/dist/admin/components/FormModal/Input/index.js +123 -0
  45. package/dist/admin/components/FormModal/Input/index.js.map +1 -0
  46. package/dist/admin/components/FormModal/Input/index.mjs +121 -0
  47. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -0
  48. package/dist/admin/components/FormModal/index.js +110 -0
  49. package/dist/admin/components/FormModal/index.js.map +1 -0
  50. package/dist/admin/components/FormModal/index.mjs +108 -0
  51. package/dist/admin/components/FormModal/index.mjs.map +1 -0
  52. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js +33 -0
  53. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js.map +1 -0
  54. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs +31 -0
  55. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs.map +1 -0
  56. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +156 -0
  57. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -0
  58. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +154 -0
  59. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -0
  60. package/dist/admin/components/Permissions/PermissionRow/index.js +50 -0
  61. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -0
  62. package/dist/admin/components/Permissions/PermissionRow/index.mjs +48 -0
  63. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -0
  64. package/dist/admin/components/Permissions/index.js +52 -0
  65. package/dist/admin/components/Permissions/index.js.map +1 -0
  66. package/dist/admin/components/Permissions/index.mjs +50 -0
  67. package/dist/admin/components/Permissions/index.mjs.map +1 -0
  68. package/dist/admin/components/Permissions/init.js +15 -0
  69. package/dist/admin/components/Permissions/init.js.map +1 -0
  70. package/dist/admin/components/Permissions/init.mjs +13 -0
  71. package/dist/admin/components/Permissions/init.mjs.map +1 -0
  72. package/dist/admin/components/Permissions/reducer.js +34 -0
  73. package/dist/admin/components/Permissions/reducer.js.map +1 -0
  74. package/dist/admin/components/Permissions/reducer.mjs +31 -0
  75. package/dist/admin/components/Permissions/reducer.mjs.map +1 -0
  76. package/dist/admin/components/Policies/index.js +67 -0
  77. package/dist/admin/components/Policies/index.js.map +1 -0
  78. package/dist/admin/components/Policies/index.mjs +65 -0
  79. package/dist/admin/components/Policies/index.mjs.map +1 -0
  80. package/dist/admin/components/UsersPermissions/index.js +115 -0
  81. package/dist/admin/components/UsersPermissions/index.js.map +1 -0
  82. package/dist/admin/components/UsersPermissions/index.mjs +113 -0
  83. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -0
  84. package/dist/admin/components/UsersPermissions/init.js +13 -0
  85. package/dist/admin/components/UsersPermissions/init.js.map +1 -0
  86. package/dist/admin/components/UsersPermissions/init.mjs +11 -0
  87. package/dist/admin/components/UsersPermissions/init.mjs.map +1 -0
  88. package/dist/admin/components/UsersPermissions/reducer.js +73 -0
  89. package/dist/admin/components/UsersPermissions/reducer.js.map +1 -0
  90. package/dist/admin/components/UsersPermissions/reducer.mjs +68 -0
  91. package/dist/admin/components/UsersPermissions/reducer.mjs.map +1 -0
  92. package/dist/admin/constants.js +81 -0
  93. package/dist/admin/constants.js.map +1 -0
  94. package/dist/admin/constants.mjs +79 -0
  95. package/dist/admin/constants.mjs.map +1 -0
  96. package/dist/admin/contexts/UsersPermissionsContext/index.js +23 -0
  97. package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -0
  98. package/dist/admin/contexts/UsersPermissionsContext/index.mjs +19 -0
  99. package/dist/admin/contexts/UsersPermissionsContext/index.mjs.map +1 -0
  100. package/dist/admin/index.js +125 -0
  101. package/dist/admin/index.js.map +1 -0
  102. package/dist/admin/index.mjs +121 -0
  103. package/dist/admin/index.mjs.map +1 -0
  104. package/dist/admin/package.json.js +14 -0
  105. package/dist/admin/package.json.js.map +1 -0
  106. package/dist/admin/package.json.mjs +11 -0
  107. package/dist/admin/package.json.mjs.map +1 -0
  108. package/dist/admin/pages/AdvancedSettings/index.js +194 -0
  109. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -0
  110. package/dist/admin/pages/AdvancedSettings/index.mjs +191 -0
  111. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -0
  112. package/dist/admin/pages/AdvancedSettings/utils/layout.js +83 -0
  113. package/dist/admin/pages/AdvancedSettings/utils/layout.js.map +1 -0
  114. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs +81 -0
  115. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs.map +1 -0
  116. package/dist/admin/pages/AdvancedSettings/utils/schema.js +40 -0
  117. package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -0
  118. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs +19 -0
  119. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs.map +1 -0
  120. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +171 -0
  121. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -0
  122. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +169 -0
  123. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -0
  124. package/dist/admin/pages/EmailTemplates/components/EmailTable.js +145 -0
  125. package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -0
  126. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs +143 -0
  127. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs.map +1 -0
  128. package/dist/admin/pages/EmailTemplates/index.js +157 -0
  129. package/dist/admin/pages/EmailTemplates/index.js.map +1 -0
  130. package/dist/admin/pages/EmailTemplates/index.mjs +135 -0
  131. package/dist/admin/pages/EmailTemplates/index.mjs.map +1 -0
  132. package/dist/admin/pages/EmailTemplates/utils/schema.js +50 -0
  133. package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -0
  134. package/dist/admin/pages/EmailTemplates/utils/schema.mjs +29 -0
  135. package/dist/admin/pages/EmailTemplates/utils/schema.mjs.map +1 -0
  136. package/dist/admin/pages/Providers/index.js +278 -0
  137. package/dist/admin/pages/Providers/index.js.map +1 -0
  138. package/dist/admin/pages/Providers/index.mjs +254 -0
  139. package/dist/admin/pages/Providers/index.mjs.map +1 -0
  140. package/dist/admin/pages/Providers/utils/forms.js +281 -0
  141. package/dist/admin/pages/Providers/utils/forms.js.map +1 -0
  142. package/dist/admin/pages/Providers/utils/forms.mjs +260 -0
  143. package/dist/admin/pages/Providers/utils/forms.mjs.map +1 -0
  144. package/dist/admin/pages/Roles/constants.js +31 -0
  145. package/dist/admin/pages/Roles/constants.js.map +1 -0
  146. package/dist/admin/pages/Roles/constants.mjs +10 -0
  147. package/dist/admin/pages/Roles/constants.mjs.map +1 -0
  148. package/dist/admin/pages/Roles/hooks/usePlugins.js +78 -0
  149. package/dist/admin/pages/Roles/hooks/usePlugins.js.map +1 -0
  150. package/dist/admin/pages/Roles/hooks/usePlugins.mjs +76 -0
  151. package/dist/admin/pages/Roles/hooks/usePlugins.mjs.map +1 -0
  152. package/dist/admin/pages/Roles/index.js +35 -0
  153. package/dist/admin/pages/Roles/index.js.map +1 -0
  154. package/dist/admin/pages/Roles/index.mjs +33 -0
  155. package/dist/admin/pages/Roles/index.mjs.map +1 -0
  156. package/dist/admin/pages/Roles/pages/CreatePage.js +225 -0
  157. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -0
  158. package/dist/admin/pages/Roles/pages/CreatePage.mjs +203 -0
  159. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -0
  160. package/dist/admin/pages/Roles/pages/EditPage.js +229 -0
  161. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -0
  162. package/dist/admin/pages/Roles/pages/EditPage.mjs +207 -0
  163. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -0
  164. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +125 -0
  165. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -0
  166. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs +123 -0
  167. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -0
  168. package/dist/admin/pages/Roles/pages/ListPage/index.js +237 -0
  169. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -0
  170. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +234 -0
  171. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -0
  172. package/dist/admin/pluginId.js +8 -0
  173. package/dist/admin/pluginId.js.map +1 -0
  174. package/dist/admin/pluginId.mjs +6 -0
  175. package/dist/admin/pluginId.mjs.map +1 -0
  176. package/dist/admin/translations/ar.json.js +45 -0
  177. package/dist/admin/translations/ar.json.js.map +1 -0
  178. package/dist/admin/translations/ar.json.mjs +43 -0
  179. package/dist/admin/translations/ar.json.mjs.map +1 -0
  180. package/dist/admin/translations/cs.json.js +51 -0
  181. package/dist/admin/translations/cs.json.js.map +1 -0
  182. package/dist/admin/translations/cs.json.mjs +49 -0
  183. package/dist/admin/translations/cs.json.mjs.map +1 -0
  184. package/dist/admin/translations/de.json.js +63 -0
  185. package/dist/admin/translations/de.json.js.map +1 -0
  186. package/dist/admin/translations/de.json.mjs +61 -0
  187. package/dist/admin/translations/de.json.mjs.map +1 -0
  188. package/dist/admin/translations/dk.json.js +87 -0
  189. package/dist/admin/translations/dk.json.js.map +1 -0
  190. package/dist/admin/translations/dk.json.mjs +85 -0
  191. package/dist/admin/translations/dk.json.mjs.map +1 -0
  192. package/dist/admin/translations/en.json.js +87 -0
  193. package/dist/admin/translations/en.json.js.map +1 -0
  194. package/dist/admin/translations/en.json.mjs +85 -0
  195. package/dist/admin/translations/en.json.mjs.map +1 -0
  196. package/dist/admin/translations/es.json.js +87 -0
  197. package/dist/admin/translations/es.json.js.map +1 -0
  198. package/dist/admin/translations/es.json.mjs +85 -0
  199. package/dist/admin/translations/es.json.mjs.map +1 -0
  200. package/dist/admin/translations/fr.json.js +51 -0
  201. package/dist/admin/translations/fr.json.js.map +1 -0
  202. package/dist/admin/translations/fr.json.mjs +49 -0
  203. package/dist/admin/translations/fr.json.mjs.map +1 -0
  204. package/dist/admin/translations/id.json.js +63 -0
  205. package/dist/admin/translations/id.json.js.map +1 -0
  206. package/dist/admin/translations/id.json.mjs +61 -0
  207. package/dist/admin/translations/id.json.mjs.map +1 -0
  208. package/dist/admin/translations/it.json.js +63 -0
  209. package/dist/admin/translations/it.json.js.map +1 -0
  210. package/dist/admin/translations/it.json.mjs +61 -0
  211. package/dist/admin/translations/it.json.mjs.map +1 -0
  212. package/dist/admin/translations/ja.json.js +49 -0
  213. package/dist/admin/translations/ja.json.js.map +1 -0
  214. package/dist/admin/translations/ja.json.mjs +47 -0
  215. package/dist/admin/translations/ja.json.mjs.map +1 -0
  216. package/dist/admin/translations/ko.json.js +87 -0
  217. package/dist/admin/translations/ko.json.js.map +1 -0
  218. package/dist/admin/translations/ko.json.mjs +85 -0
  219. package/dist/admin/translations/ko.json.mjs.map +1 -0
  220. package/dist/admin/translations/ms.json.js +50 -0
  221. package/dist/admin/translations/ms.json.js.map +1 -0
  222. package/dist/admin/translations/ms.json.mjs +48 -0
  223. package/dist/admin/translations/ms.json.mjs.map +1 -0
  224. package/dist/admin/translations/nl.json.js +49 -0
  225. package/dist/admin/translations/nl.json.js.map +1 -0
  226. package/dist/admin/translations/nl.json.mjs +47 -0
  227. package/dist/admin/translations/nl.json.mjs.map +1 -0
  228. package/dist/admin/translations/pl.json.js +87 -0
  229. package/dist/admin/translations/pl.json.js.map +1 -0
  230. package/dist/admin/translations/pl.json.mjs +85 -0
  231. package/dist/admin/translations/pl.json.mjs.map +1 -0
  232. package/dist/admin/translations/pt-BR.json.js +45 -0
  233. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  234. package/dist/admin/translations/pt-BR.json.mjs +43 -0
  235. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  236. package/dist/admin/translations/pt.json.js +49 -0
  237. package/dist/admin/translations/pt.json.js.map +1 -0
  238. package/dist/admin/translations/pt.json.mjs +47 -0
  239. package/dist/admin/translations/pt.json.mjs.map +1 -0
  240. package/dist/admin/translations/ru.json.js +87 -0
  241. package/dist/admin/translations/ru.json.js.map +1 -0
  242. package/dist/admin/translations/ru.json.mjs +85 -0
  243. package/dist/admin/translations/ru.json.mjs.map +1 -0
  244. package/dist/admin/translations/sk.json.js +51 -0
  245. package/dist/admin/translations/sk.json.js.map +1 -0
  246. package/dist/admin/translations/sk.json.mjs +49 -0
  247. package/dist/admin/translations/sk.json.mjs.map +1 -0
  248. package/dist/admin/translations/sv.json.js +87 -0
  249. package/dist/admin/translations/sv.json.js.map +1 -0
  250. package/dist/admin/translations/sv.json.mjs +85 -0
  251. package/dist/admin/translations/sv.json.mjs.map +1 -0
  252. package/dist/admin/translations/th.json.js +61 -0
  253. package/dist/admin/translations/th.json.js.map +1 -0
  254. package/dist/admin/translations/th.json.mjs +59 -0
  255. package/dist/admin/translations/th.json.mjs.map +1 -0
  256. package/dist/admin/translations/tr.json.js +86 -0
  257. package/dist/admin/translations/tr.json.js.map +1 -0
  258. package/dist/admin/translations/tr.json.mjs +84 -0
  259. package/dist/admin/translations/tr.json.mjs.map +1 -0
  260. package/dist/admin/translations/uk.json.js +87 -0
  261. package/dist/admin/translations/uk.json.js.map +1 -0
  262. package/dist/admin/translations/uk.json.mjs +85 -0
  263. package/dist/admin/translations/uk.json.mjs.map +1 -0
  264. package/dist/admin/translations/vi.json.js +51 -0
  265. package/dist/admin/translations/vi.json.js.map +1 -0
  266. package/dist/admin/translations/vi.json.mjs +49 -0
  267. package/dist/admin/translations/vi.json.mjs.map +1 -0
  268. package/dist/admin/translations/zh-Hans.json.js +87 -0
  269. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  270. package/dist/admin/translations/zh-Hans.json.mjs +85 -0
  271. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  272. package/dist/admin/translations/zh.json.js +87 -0
  273. package/dist/admin/translations/zh.json.js.map +1 -0
  274. package/dist/admin/translations/zh.json.mjs +85 -0
  275. package/dist/admin/translations/zh.json.mjs.map +1 -0
  276. package/dist/admin/utils/cleanPermissions.js +24 -0
  277. package/dist/admin/utils/cleanPermissions.js.map +1 -0
  278. package/dist/admin/utils/cleanPermissions.mjs +22 -0
  279. package/dist/admin/utils/cleanPermissions.mjs.map +1 -0
  280. package/dist/admin/utils/formatPluginName.js +29 -0
  281. package/dist/admin/utils/formatPluginName.js.map +1 -0
  282. package/dist/admin/utils/formatPluginName.mjs +27 -0
  283. package/dist/admin/utils/formatPluginName.mjs.map +1 -0
  284. package/dist/admin/utils/getTrad.js +8 -0
  285. package/dist/admin/utils/getTrad.js.map +1 -0
  286. package/dist/admin/utils/getTrad.mjs +6 -0
  287. package/dist/admin/utils/getTrad.mjs.map +1 -0
  288. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  289. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  290. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  291. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  292. package/dist/server/_virtual/_commonjsHelpers.js +8 -0
  293. package/dist/server/_virtual/_commonjsHelpers.js.map +1 -0
  294. package/dist/server/_virtual/_commonjsHelpers.mjs +6 -0
  295. package/dist/server/_virtual/_commonjsHelpers.mjs.map +1 -0
  296. package/dist/server/bootstrap/index.js +145 -0
  297. package/dist/server/bootstrap/index.js.map +1 -0
  298. package/dist/server/bootstrap/index.mjs +143 -0
  299. package/dist/server/bootstrap/index.mjs.map +1 -0
  300. package/dist/server/bootstrap/users-permissions-actions.js +98 -0
  301. package/dist/server/bootstrap/users-permissions-actions.js.map +1 -0
  302. package/dist/server/bootstrap/users-permissions-actions.mjs +96 -0
  303. package/dist/server/bootstrap/users-permissions-actions.mjs.map +1 -0
  304. package/dist/server/config.js +54 -0
  305. package/dist/server/config.js.map +1 -0
  306. package/dist/server/config.mjs +52 -0
  307. package/dist/server/config.mjs.map +1 -0
  308. package/dist/server/content-types/index.js +30 -0
  309. package/dist/server/content-types/index.js.map +1 -0
  310. package/dist/server/content-types/index.mjs +28 -0
  311. package/dist/server/content-types/index.mjs.map +1 -0
  312. package/dist/server/content-types/permission/index.js +44 -0
  313. package/dist/server/content-types/permission/index.js.map +1 -0
  314. package/dist/server/content-types/permission/index.mjs +42 -0
  315. package/dist/server/content-types/permission/index.mjs.map +1 -0
  316. package/dist/server/content-types/role/index.js +61 -0
  317. package/dist/server/content-types/role/index.js.map +1 -0
  318. package/dist/server/content-types/role/index.mjs +59 -0
  319. package/dist/server/content-types/role/index.mjs.map +1 -0
  320. package/dist/server/content-types/user/index.js +84 -0
  321. package/dist/server/content-types/user/index.js.map +1 -0
  322. package/dist/server/content-types/user/index.mjs +82 -0
  323. package/dist/server/content-types/user/index.mjs.map +1 -0
  324. package/dist/server/content-types/user/schema-config.js +25 -0
  325. package/dist/server/content-types/user/schema-config.js.map +1 -0
  326. package/dist/server/content-types/user/schema-config.mjs +23 -0
  327. package/dist/server/content-types/user/schema-config.mjs.map +1 -0
  328. package/dist/server/controllers/auth.js +429 -0
  329. package/dist/server/controllers/auth.js.map +1 -0
  330. package/dist/server/controllers/auth.mjs +427 -0
  331. package/dist/server/controllers/auth.mjs.map +1 -0
  332. package/dist/server/controllers/content-manager-user.js +168 -0
  333. package/dist/server/controllers/content-manager-user.js.map +1 -0
  334. package/dist/server/controllers/content-manager-user.mjs +166 -0
  335. package/dist/server/controllers/content-manager-user.mjs.map +1 -0
  336. package/dist/server/controllers/index.js +33 -0
  337. package/dist/server/controllers/index.js.map +1 -0
  338. package/dist/server/controllers/index.mjs +31 -0
  339. package/dist/server/controllers/index.mjs.map +1 -0
  340. package/dist/server/controllers/permissions.js +37 -0
  341. package/dist/server/controllers/permissions.js.map +1 -0
  342. package/dist/server/controllers/permissions.mjs +35 -0
  343. package/dist/server/controllers/permissions.mjs.map +1 -0
  344. package/dist/server/controllers/role.js +91 -0
  345. package/dist/server/controllers/role.js.map +1 -0
  346. package/dist/server/controllers/role.mjs +89 -0
  347. package/dist/server/controllers/role.mjs.map +1 -0
  348. package/dist/server/controllers/settings.js +107 -0
  349. package/dist/server/controllers/settings.js.map +1 -0
  350. package/dist/server/controllers/settings.mjs +105 -0
  351. package/dist/server/controllers/settings.mjs.map +1 -0
  352. package/dist/server/controllers/user.js +201 -0
  353. package/dist/server/controllers/user.js.map +1 -0
  354. package/dist/server/controllers/user.mjs +199 -0
  355. package/dist/server/controllers/user.mjs.map +1 -0
  356. package/dist/server/controllers/validation/auth.js +131 -0
  357. package/dist/server/controllers/validation/auth.js.map +1 -0
  358. package/dist/server/controllers/validation/auth.mjs +129 -0
  359. package/dist/server/controllers/validation/auth.mjs.map +1 -0
  360. package/dist/server/controllers/validation/email-template.js +72 -0
  361. package/dist/server/controllers/validation/email-template.js.map +1 -0
  362. package/dist/server/controllers/validation/email-template.mjs +70 -0
  363. package/dist/server/controllers/validation/email-template.mjs.map +1 -0
  364. package/dist/server/controllers/validation/user.js +49 -0
  365. package/dist/server/controllers/validation/user.js.map +1 -0
  366. package/dist/server/controllers/validation/user.mjs +47 -0
  367. package/dist/server/controllers/validation/user.mjs.map +1 -0
  368. package/dist/server/graphql/index.js +66 -0
  369. package/dist/server/graphql/index.js.map +1 -0
  370. package/dist/server/graphql/index.mjs +64 -0
  371. package/dist/server/graphql/index.mjs.map +1 -0
  372. package/dist/server/graphql/mutations/auth/change-password.js +40 -0
  373. package/dist/server/graphql/mutations/auth/change-password.js.map +1 -0
  374. package/dist/server/graphql/mutations/auth/change-password.mjs +38 -0
  375. package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -0
  376. package/dist/server/graphql/mutations/auth/email-confirmation.js +38 -0
  377. package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -0
  378. package/dist/server/graphql/mutations/auth/email-confirmation.mjs +36 -0
  379. package/dist/server/graphql/mutations/auth/email-confirmation.mjs.map +1 -0
  380. package/dist/server/graphql/mutations/auth/forgot-password.js +37 -0
  381. package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -0
  382. package/dist/server/graphql/mutations/auth/forgot-password.mjs +35 -0
  383. package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -0
  384. package/dist/server/graphql/mutations/auth/login.js +40 -0
  385. package/dist/server/graphql/mutations/auth/login.js.map +1 -0
  386. package/dist/server/graphql/mutations/auth/login.mjs +38 -0
  387. package/dist/server/graphql/mutations/auth/login.mjs.map +1 -0
  388. package/dist/server/graphql/mutations/auth/register.js +38 -0
  389. package/dist/server/graphql/mutations/auth/register.js.map +1 -0
  390. package/dist/server/graphql/mutations/auth/register.mjs +36 -0
  391. package/dist/server/graphql/mutations/auth/register.mjs.map +1 -0
  392. package/dist/server/graphql/mutations/auth/reset-password.js +40 -0
  393. package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -0
  394. package/dist/server/graphql/mutations/auth/reset-password.mjs +38 -0
  395. package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -0
  396. package/dist/server/graphql/mutations/crud/role/create-role.js +37 -0
  397. package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -0
  398. package/dist/server/graphql/mutations/crud/role/create-role.mjs +35 -0
  399. package/dist/server/graphql/mutations/crud/role/create-role.mjs.map +1 -0
  400. package/dist/server/graphql/mutations/crud/role/delete-role.js +32 -0
  401. package/dist/server/graphql/mutations/crud/role/delete-role.js.map +1 -0
  402. package/dist/server/graphql/mutations/crud/role/delete-role.mjs +30 -0
  403. package/dist/server/graphql/mutations/crud/role/delete-role.mjs.map +1 -0
  404. package/dist/server/graphql/mutations/crud/role/update-role.js +39 -0
  405. package/dist/server/graphql/mutations/crud/role/update-role.js.map +1 -0
  406. package/dist/server/graphql/mutations/crud/role/update-role.mjs +37 -0
  407. package/dist/server/graphql/mutations/crud/role/update-role.mjs.map +1 -0
  408. package/dist/server/graphql/mutations/crud/user/create-user.js +46 -0
  409. package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -0
  410. package/dist/server/graphql/mutations/crud/user/create-user.mjs +44 -0
  411. package/dist/server/graphql/mutations/crud/user/create-user.mjs.map +1 -0
  412. package/dist/server/graphql/mutations/crud/user/delete-user.js +44 -0
  413. package/dist/server/graphql/mutations/crud/user/delete-user.js.map +1 -0
  414. package/dist/server/graphql/mutations/crud/user/delete-user.mjs +42 -0
  415. package/dist/server/graphql/mutations/crud/user/delete-user.mjs.map +1 -0
  416. package/dist/server/graphql/mutations/crud/user/update-user.js +49 -0
  417. package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -0
  418. package/dist/server/graphql/mutations/crud/user/update-user.mjs +47 -0
  419. package/dist/server/graphql/mutations/crud/user/update-user.mjs.map +1 -0
  420. package/dist/server/graphql/mutations/index.js +58 -0
  421. package/dist/server/graphql/mutations/index.js.map +1 -0
  422. package/dist/server/graphql/mutations/index.mjs +56 -0
  423. package/dist/server/graphql/mutations/index.mjs.map +1 -0
  424. package/dist/server/graphql/queries/index.js +25 -0
  425. package/dist/server/graphql/queries/index.js.map +1 -0
  426. package/dist/server/graphql/queries/index.mjs +23 -0
  427. package/dist/server/graphql/queries/index.mjs.map +1 -0
  428. package/dist/server/graphql/queries/me.js +23 -0
  429. package/dist/server/graphql/queries/me.js.map +1 -0
  430. package/dist/server/graphql/queries/me.mjs +21 -0
  431. package/dist/server/graphql/queries/me.mjs.map +1 -0
  432. package/dist/server/graphql/resolvers-configs.js +93 -0
  433. package/dist/server/graphql/resolvers-configs.js.map +1 -0
  434. package/dist/server/graphql/resolvers-configs.mjs +91 -0
  435. package/dist/server/graphql/resolvers-configs.mjs.map +1 -0
  436. package/dist/server/graphql/types/create-role-payload.js +20 -0
  437. package/dist/server/graphql/types/create-role-payload.js.map +1 -0
  438. package/dist/server/graphql/types/create-role-payload.mjs +18 -0
  439. package/dist/server/graphql/types/create-role-payload.mjs.map +1 -0
  440. package/dist/server/graphql/types/delete-role-payload.js +20 -0
  441. package/dist/server/graphql/types/delete-role-payload.js.map +1 -0
  442. package/dist/server/graphql/types/delete-role-payload.mjs +18 -0
  443. package/dist/server/graphql/types/delete-role-payload.mjs.map +1 -0
  444. package/dist/server/graphql/types/index.js +41 -0
  445. package/dist/server/graphql/types/index.js.map +1 -0
  446. package/dist/server/graphql/types/index.mjs +39 -0
  447. package/dist/server/graphql/types/index.mjs.map +1 -0
  448. package/dist/server/graphql/types/login-input.js +24 -0
  449. package/dist/server/graphql/types/login-input.js.map +1 -0
  450. package/dist/server/graphql/types/login-input.mjs +22 -0
  451. package/dist/server/graphql/types/login-input.mjs.map +1 -0
  452. package/dist/server/graphql/types/login-payload.js +23 -0
  453. package/dist/server/graphql/types/login-payload.js.map +1 -0
  454. package/dist/server/graphql/types/login-payload.mjs +21 -0
  455. package/dist/server/graphql/types/login-payload.mjs.map +1 -0
  456. package/dist/server/graphql/types/me-role.js +23 -0
  457. package/dist/server/graphql/types/me-role.js.map +1 -0
  458. package/dist/server/graphql/types/me-role.mjs +21 -0
  459. package/dist/server/graphql/types/me-role.mjs.map +1 -0
  460. package/dist/server/graphql/types/me.js +28 -0
  461. package/dist/server/graphql/types/me.js.map +1 -0
  462. package/dist/server/graphql/types/me.mjs +26 -0
  463. package/dist/server/graphql/types/me.mjs.map +1 -0
  464. package/dist/server/graphql/types/password-payload.js +20 -0
  465. package/dist/server/graphql/types/password-payload.js.map +1 -0
  466. package/dist/server/graphql/types/password-payload.mjs +18 -0
  467. package/dist/server/graphql/types/password-payload.mjs.map +1 -0
  468. package/dist/server/graphql/types/register-input.js +22 -0
  469. package/dist/server/graphql/types/register-input.js.map +1 -0
  470. package/dist/server/graphql/types/register-input.mjs +20 -0
  471. package/dist/server/graphql/types/register-input.mjs.map +1 -0
  472. package/dist/server/graphql/types/update-role-payload.js +20 -0
  473. package/dist/server/graphql/types/update-role-payload.js.map +1 -0
  474. package/dist/server/graphql/types/update-role-payload.mjs +18 -0
  475. package/dist/server/graphql/types/update-role-payload.mjs.map +1 -0
  476. package/dist/server/graphql/types/user-input.js +26 -0
  477. package/dist/server/graphql/types/user-input.js.map +1 -0
  478. package/dist/server/graphql/types/user-input.mjs +24 -0
  479. package/dist/server/graphql/types/user-input.mjs.map +1 -0
  480. package/dist/server/graphql/utils.js +32 -0
  481. package/dist/server/graphql/utils.js.map +1 -0
  482. package/dist/server/graphql/utils.mjs +30 -0
  483. package/dist/server/graphql/utils.mjs.map +1 -0
  484. package/dist/server/index.js +10 -0
  485. package/dist/server/index.js.map +1 -0
  486. package/dist/server/index.mjs +8 -0
  487. package/dist/server/index.mjs.map +1 -0
  488. package/dist/server/index2.js +39 -0
  489. package/dist/server/index2.js.map +1 -0
  490. package/dist/server/index2.mjs +37 -0
  491. package/dist/server/index2.mjs.map +1 -0
  492. package/dist/server/middlewares/index.js +18 -0
  493. package/dist/server/middlewares/index.js.map +1 -0
  494. package/dist/server/middlewares/index.mjs +16 -0
  495. package/dist/server/middlewares/index.mjs.map +1 -0
  496. package/dist/server/middlewares/rateLimit.js +51 -0
  497. package/dist/server/middlewares/rateLimit.js.map +1 -0
  498. package/dist/server/middlewares/rateLimit.mjs +49 -0
  499. package/dist/server/middlewares/rateLimit.mjs.map +1 -0
  500. package/dist/server/register.js +41 -0
  501. package/dist/server/register.js.map +1 -0
  502. package/dist/server/register.mjs +39 -0
  503. package/dist/server/register.mjs.map +1 -0
  504. package/dist/server/routes/admin/index.js +27 -0
  505. package/dist/server/routes/admin/index.js.map +1 -0
  506. package/dist/server/routes/admin/index.mjs +25 -0
  507. package/dist/server/routes/admin/index.mjs.map +1 -0
  508. package/dist/server/routes/admin/permissions.js +29 -0
  509. package/dist/server/routes/admin/permissions.js.map +1 -0
  510. package/dist/server/routes/admin/permissions.mjs +27 -0
  511. package/dist/server/routes/admin/permissions.mjs.map +1 -0
  512. package/dist/server/routes/admin/role.js +99 -0
  513. package/dist/server/routes/admin/role.js.map +1 -0
  514. package/dist/server/routes/admin/role.mjs +97 -0
  515. package/dist/server/routes/admin/role.mjs.map +1 -0
  516. package/dist/server/routes/admin/settings.js +116 -0
  517. package/dist/server/routes/admin/settings.js.map +1 -0
  518. package/dist/server/routes/admin/settings.mjs +114 -0
  519. package/dist/server/routes/admin/settings.mjs.map +1 -0
  520. package/dist/server/routes/content-api/auth.js +104 -0
  521. package/dist/server/routes/content-api/auth.js.map +1 -0
  522. package/dist/server/routes/content-api/auth.mjs +102 -0
  523. package/dist/server/routes/content-api/auth.mjs.map +1 -0
  524. package/dist/server/routes/content-api/index.js +30 -0
  525. package/dist/server/routes/content-api/index.js.map +1 -0
  526. package/dist/server/routes/content-api/index.mjs +28 -0
  527. package/dist/server/routes/content-api/index.mjs.map +1 -0
  528. package/dist/server/routes/content-api/permissions.js +19 -0
  529. package/dist/server/routes/content-api/permissions.js.map +1 -0
  530. package/dist/server/routes/content-api/permissions.mjs +17 -0
  531. package/dist/server/routes/content-api/permissions.mjs.map +1 -0
  532. package/dist/server/routes/content-api/role.js +39 -0
  533. package/dist/server/routes/content-api/role.js.map +1 -0
  534. package/dist/server/routes/content-api/role.mjs +37 -0
  535. package/dist/server/routes/content-api/role.mjs.map +1 -0
  536. package/dist/server/routes/content-api/user.js +70 -0
  537. package/dist/server/routes/content-api/user.js.map +1 -0
  538. package/dist/server/routes/content-api/user.mjs +68 -0
  539. package/dist/server/routes/content-api/user.mjs.map +1 -0
  540. package/dist/server/routes/index.js +19 -0
  541. package/dist/server/routes/index.js.map +1 -0
  542. package/dist/server/routes/index.mjs +17 -0
  543. package/dist/server/routes/index.mjs.map +1 -0
  544. package/dist/server/services/index.js +36 -0
  545. package/dist/server/services/index.js.map +1 -0
  546. package/dist/server/services/index.mjs +34 -0
  547. package/dist/server/services/index.mjs.map +1 -0
  548. package/dist/server/services/jwt.js +50 -0
  549. package/dist/server/services/jwt.js.map +1 -0
  550. package/dist/server/services/jwt.mjs +48 -0
  551. package/dist/server/services/jwt.mjs.map +1 -0
  552. package/dist/server/services/permission.js +52 -0
  553. package/dist/server/services/permission.js.map +1 -0
  554. package/dist/server/services/permission.mjs +50 -0
  555. package/dist/server/services/permission.mjs.map +1 -0
  556. package/dist/server/services/providers-registry.js +555 -0
  557. package/dist/server/services/providers-registry.js.map +1 -0
  558. package/dist/server/services/providers-registry.mjs +553 -0
  559. package/dist/server/services/providers-registry.mjs.map +1 -0
  560. package/dist/server/services/providers.js +111 -0
  561. package/dist/server/services/providers.js.map +1 -0
  562. package/dist/server/services/providers.mjs +109 -0
  563. package/dist/server/services/providers.mjs.map +1 -0
  564. package/dist/server/services/role.js +186 -0
  565. package/dist/server/services/role.js.map +1 -0
  566. package/dist/server/services/role.mjs +184 -0
  567. package/dist/server/services/role.mjs.map +1 -0
  568. package/dist/server/services/user.js +179 -0
  569. package/dist/server/services/user.js.map +1 -0
  570. package/dist/server/services/user.mjs +177 -0
  571. package/dist/server/services/user.mjs.map +1 -0
  572. package/dist/server/services/users-permissions.js +247 -0
  573. package/dist/server/services/users-permissions.js.map +1 -0
  574. package/dist/server/services/users-permissions.mjs +245 -0
  575. package/dist/server/services/users-permissions.mjs.map +1 -0
  576. package/dist/server/strategies/users-permissions.js +114 -0
  577. package/dist/server/strategies/users-permissions.js.map +1 -0
  578. package/dist/server/strategies/users-permissions.mjs +112 -0
  579. package/dist/server/strategies/users-permissions.mjs.map +1 -0
  580. package/dist/server/utils/index.js +22 -0
  581. package/dist/server/utils/index.js.map +1 -0
  582. package/dist/server/utils/index.mjs +20 -0
  583. package/dist/server/utils/index.mjs.map +1 -0
  584. package/dist/server/utils/sanitize/index.js +21 -0
  585. package/dist/server/utils/sanitize/index.js.map +1 -0
  586. package/dist/server/utils/sanitize/index.mjs +19 -0
  587. package/dist/server/utils/sanitize/index.mjs.map +1 -0
  588. package/dist/server/utils/sanitize/sanitizers.js +32 -0
  589. package/dist/server/utils/sanitize/sanitizers.js.map +1 -0
  590. package/dist/server/utils/sanitize/sanitizers.mjs +30 -0
  591. package/dist/server/utils/sanitize/sanitizers.mjs.map +1 -0
  592. package/dist/server/utils/sanitize/visitors/index.js +17 -0
  593. package/dist/server/utils/sanitize/visitors/index.js.map +1 -0
  594. package/dist/server/utils/sanitize/visitors/index.mjs +15 -0
  595. package/dist/server/utils/sanitize/visitors/index.mjs.map +1 -0
  596. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +17 -0
  597. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js.map +1 -0
  598. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs +15 -0
  599. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs.map +1 -0
  600. package/documentation/content-api.yaml +1 -1
  601. package/jest.config.front.js +1 -1
  602. package/package.json +48 -29
  603. package/rollup.config.mjs +19 -0
  604. package/server/bootstrap/index.js +18 -15
  605. package/server/bootstrap/users-permissions-actions.js +6 -0
  606. package/server/config.js +29 -0
  607. package/server/content-types/user/index.js +0 -1
  608. package/server/controllers/auth.js +75 -39
  609. package/server/controllers/content-manager-user.js +28 -30
  610. package/server/controllers/role.js +17 -4
  611. package/server/controllers/user.js +18 -8
  612. package/server/controllers/validation/auth.js +104 -25
  613. package/server/graphql/types/index.js +1 -0
  614. package/server/graphql/types/me.js +1 -0
  615. package/server/graphql/types/user-input.js +20 -0
  616. package/server/middlewares/rateLimit.js +2 -2
  617. package/server/register.js +2 -2
  618. package/server/services/jwt.js +3 -3
  619. package/server/services/permission.js +3 -7
  620. package/server/services/providers-registry.js +469 -261
  621. package/server/services/providers.js +10 -5
  622. package/server/services/role.js +15 -13
  623. package/server/services/user.js +56 -19
  624. package/server/services/users-permissions.js +15 -13
  625. package/server/utils/index.d.ts +2 -1
  626. package/server/utils/sanitize/sanitizers.js +7 -3
  627. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  628. package/.eslintrc.js +0 -14
  629. package/admin/src/components/FormModal/index.js +0 -126
  630. package/admin/src/components/Permissions/index.js +0 -57
  631. package/admin/src/hooks/index.js +0 -5
  632. package/admin/src/hooks/useFetchRole/index.js +0 -67
  633. package/admin/src/hooks/useFetchRole/reducer.js +0 -31
  634. package/admin/src/hooks/useForm/index.js +0 -68
  635. package/admin/src/hooks/useForm/reducer.js +0 -40
  636. package/admin/src/hooks/useRolesList/index.js +0 -65
  637. package/admin/src/hooks/useRolesList/init.js +0 -5
  638. package/admin/src/hooks/useRolesList/reducer.js +0 -31
  639. package/admin/src/pages/AdvancedSettings/index.js +0 -242
  640. package/admin/src/pages/AdvancedSettings/utils/api.js +0 -16
  641. package/admin/src/pages/EmailTemplates/components/EmailForm.js +0 -176
  642. package/admin/src/pages/EmailTemplates/index.js +0 -159
  643. package/admin/src/pages/EmailTemplates/utils/api.js +0 -16
  644. package/admin/src/pages/Providers/index.js +0 -271
  645. package/admin/src/pages/Providers/reducer.js +0 -54
  646. package/admin/src/pages/Providers/utils/api.js +0 -24
  647. package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
  648. package/admin/src/pages/Roles/CreatePage.js +0 -185
  649. package/admin/src/pages/Roles/EditPage.js +0 -197
  650. package/admin/src/pages/Roles/ListPage/components/TableBody.js +0 -93
  651. package/admin/src/pages/Roles/ListPage/utils/api.js +0 -30
  652. package/admin/src/pages/Roles/ProtectedCreatePage.js +0 -15
  653. package/admin/src/pages/Roles/ProtectedEditPage.js +0 -15
  654. package/admin/src/pages/Roles/ProtectedListPage.js +0 -17
  655. package/admin/src/pages/Roles/index.js +0 -30
  656. package/server/bootstrap/grant-config.js +0 -131
  657. package/strapi-admin.js +0 -3
  658. package/strapi-server.js +0 -3
  659. /package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +0 -0
  660. /package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/plugin-users-permissions",
3
- "version": "0.0.0-next.f7babb775ed9a7e18d8351cb7f74c63e016323c4",
3
+ "version": "0.0.0-next.f93d6eabe52aa7681655cfa08eedbc3708dbb90d",
4
4
  "description": "Protect your API with a full-authentication process based on JWT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,55 +19,75 @@
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.8.2",
33
- "@strapi/helper-plugin": "0.0.0-next.f7babb775ed9a7e18d8351cb7f74c63e016323c4",
34
- "@strapi/icons": "1.8.2",
35
- "@strapi/utils": "0.0.0-next.f7babb775ed9a7e18d8351cb7f74c63e016323c4",
51
+ "@strapi/design-system": "2.0.0-rc.23",
52
+ "@strapi/icons": "2.0.0-rc.23",
53
+ "@strapi/utils": "0.0.0-next.f93d6eabe52aa7681655cfa08eedbc3708dbb90d",
36
54
  "bcryptjs": "2.4.3",
37
- "formik": "2.4.0",
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.15.4",
61
+ "koa2-ratelimit": "^1.1.3",
44
62
  "lodash": "4.17.21",
45
63
  "prop-types": "^15.8.1",
46
64
  "purest": "4.0.2",
47
- "react-intl": "6.4.1",
65
+ "react-intl": "6.6.2",
48
66
  "react-query": "3.39.3",
49
- "react-redux": "8.1.1",
67
+ "react-redux": "8.1.3",
50
68
  "url-join": "4.0.1",
51
69
  "yup": "0.32.9"
52
70
  },
53
71
  "devDependencies": {
54
- "@testing-library/dom": "9.2.0",
55
- "@testing-library/react": "14.0.0",
56
- "@testing-library/user-event": "14.4.3",
57
- "msw": "1.2.1",
58
- "react": "^18.2.0",
59
- "react-dom": "^18.2.0",
60
- "react-router-dom": "5.3.4",
61
- "styled-components": "5.3.3"
72
+ "@strapi/strapi": "0.0.0-next.f93d6eabe52aa7681655cfa08eedbc3708dbb90d",
73
+ "@testing-library/dom": "10.1.0",
74
+ "@testing-library/react": "15.0.7",
75
+ "@testing-library/user-event": "14.5.2",
76
+ "msw": "1.3.0",
77
+ "react": "18.3.1",
78
+ "react-dom": "18.3.1",
79
+ "react-router-dom": "6.22.3",
80
+ "styled-components": "6.1.8"
62
81
  },
63
82
  "peerDependencies": {
83
+ "@strapi/strapi": "^5.0.0",
64
84
  "react": "^17.0.0 || ^18.0.0",
65
85
  "react-dom": "^17.0.0 || ^18.0.0",
66
- "react-router-dom": "5.3.4",
67
- "styled-components": "5.3.3"
86
+ "react-router-dom": "^6.0.0",
87
+ "styled-components": "^6.0.0"
68
88
  },
69
89
  "engines": {
70
- "node": ">=16.0.0 <=20.x.x",
90
+ "node": ">=18.0.0 <=22.x.x",
71
91
  "npm": ">=6.0.0"
72
92
  },
73
93
  "strapi": {
@@ -76,6 +96,5 @@
76
96
  "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.",
77
97
  "required": true,
78
98
  "kind": "plugin"
79
- },
80
- "gitHead": "f7babb775ed9a7e18d8351cb7f74c63e016323c4"
99
+ }
81
100
  }
@@ -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
+ });
@@ -17,24 +17,25 @@ const ACTIONS = {
17
17
  };
18
18
 
19
19
  const findEntityAndCheckPermissions = async (ability, action, model, id) => {
20
- const entity = await strapi.query(userModel).findOne({
21
- where: { id },
20
+ const doc = await strapi.service('plugin::content-manager.document-manager').findOne(id, model, {
22
21
  populate: [`${CREATED_BY_ATTRIBUTE}.roles`],
23
22
  });
24
23
 
25
- if (_.isNil(entity)) {
24
+ if (_.isNil(doc)) {
26
25
  throw new NotFoundError();
27
26
  }
28
27
 
29
- const pm = strapi.admin.services.permission.createPermissionsManager({ ability, action, model });
28
+ const pm = strapi
29
+ .service('admin::permission')
30
+ .createPermissionsManager({ ability, action, model });
30
31
 
31
- if (pm.ability.cannot(pm.action, pm.toSubject(entity))) {
32
+ if (pm.ability.cannot(pm.action, pm.toSubject(doc))) {
32
33
  throw new ForbiddenError();
33
34
  }
34
35
 
35
- const entityWithoutCreatorRoles = _.omit(entity, `${CREATED_BY_ATTRIBUTE}.roles`);
36
+ const docWithoutCreatorRoles = _.omit(doc, `${CREATED_BY_ATTRIBUTE}.roles`);
36
37
 
37
- return { pm, entity: entityWithoutCreatorRoles };
38
+ return { pm, doc: docWithoutCreatorRoles };
38
39
  };
39
40
 
40
41
  module.exports = {
@@ -48,7 +49,7 @@ module.exports = {
48
49
 
49
50
  const { email, username } = body;
50
51
 
51
- const pm = strapi.admin.services.permission.createPermissionsManager({
52
+ const pm = strapi.service('admin::permission').createPermissionsManager({
52
53
  ability: userAbility,
53
54
  action: ACTIONS.create,
54
55
  model: userModel,
@@ -66,7 +67,7 @@ module.exports = {
66
67
 
67
68
  await validateCreateUserBody(ctx.request.body);
68
69
 
69
- const userWithSameUsername = await strapi
70
+ const userWithSameUsername = await strapi.db
70
71
  .query('plugin::users-permissions.user')
71
72
  .findOne({ where: { username } });
72
73
 
@@ -75,7 +76,7 @@ module.exports = {
75
76
  }
76
77
 
77
78
  if (advanced.unique_email) {
78
- const userWithSameEmail = await strapi
79
+ const userWithSameEmail = await strapi.db
79
80
  .query('plugin::users-permissions.user')
80
81
  .findOne({ where: { email: email.toLowerCase() } });
81
82
 
@@ -93,18 +94,11 @@ module.exports = {
93
94
 
94
95
  user.email = _.toLower(user.email);
95
96
 
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
97
  try {
105
98
  const data = await strapi
106
- .service('plugin::content-manager.entity-manager')
107
- .create(user, userModel);
99
+ .service('plugin::content-manager.document-manager')
100
+ .create(userModel, { data: user });
101
+
108
102
  const sanitizedData = await pm.sanitizeOutput(data, { action: ACTIONS.read });
109
103
 
110
104
  ctx.created(sanitizedData);
@@ -118,7 +112,7 @@ module.exports = {
118
112
  */
119
113
 
120
114
  async update(ctx) {
121
- const { id } = ctx.params;
115
+ const { id: documentId } = ctx.params;
122
116
  const { body } = ctx.request;
123
117
  const { user: admin, userAbility } = ctx.state;
124
118
 
@@ -128,13 +122,14 @@ module.exports = {
128
122
 
129
123
  const { email, username, password } = body;
130
124
 
131
- const { pm, entity } = await findEntityAndCheckPermissions(
125
+ const { pm, doc } = await findEntityAndCheckPermissions(
132
126
  userAbility,
133
127
  ACTIONS.edit,
134
128
  userModel,
135
- id
129
+ documentId
136
130
  );
137
- const user = entity;
131
+
132
+ const user = doc;
138
133
 
139
134
  await validateUpdateUserBody(ctx.request.body);
140
135
 
@@ -143,23 +138,24 @@ module.exports = {
143
138
  }
144
139
 
145
140
  if (_.has(body, 'username')) {
146
- const userWithSameUsername = await strapi
141
+ const userWithSameUsername = await strapi.db
147
142
  .query('plugin::users-permissions.user')
148
143
  .findOne({ where: { username } });
149
144
 
150
- if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(id)) {
145
+ if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(user.id)) {
151
146
  throw new ApplicationError('Username already taken');
152
147
  }
153
148
  }
154
149
 
155
150
  if (_.has(body, 'email') && advancedConfigs.unique_email) {
156
- const userWithSameEmail = await strapi
151
+ const userWithSameEmail = await strapi.db
157
152
  .query('plugin::users-permissions.user')
158
153
  .findOne({ where: { email: _.toLower(email) } });
159
154
 
160
- if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(id)) {
155
+ if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(user.id)) {
161
156
  throw new ApplicationError('Email already taken');
162
157
  }
158
+
163
159
  body.email = _.toLower(body.email);
164
160
  }
165
161
 
@@ -167,8 +163,10 @@ module.exports = {
167
163
  const updateData = _.omit({ ...sanitizedData, updatedBy: admin.id }, 'createdBy');
168
164
 
169
165
  const data = await strapi
170
- .service('plugin::content-manager.entity-manager')
171
- .update({ id }, updateData, userModel);
166
+ .service('plugin::content-manager.document-manager')
167
+ .update(documentId, userModel, {
168
+ data: updateData,
169
+ });
172
170
 
173
171
  ctx.body = await pm.sanitizeOutput(data, { action: ACTIONS.read });
174
172
  },