@strapi/plugin-users-permissions 0.0.0-next.ce51df0e18404afc8a1aa7f504c1006a7a221459 → 0.0.0-next.ce5699024a72ea224891438d5bbe39f904ec6774

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 (636) 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 +16 -25
  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.js → index.jsx} +36 -62
  21. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  22. package/admin/src/pages/Providers/{index.js → index.jsx} +98 -113
  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/pages/Roles/hooks/usePlugins.js +4 -4
  26. package/admin/src/pages/Roles/index.jsx +24 -0
  27. package/admin/src/pages/Roles/pages/{CreatePage.js → CreatePage.jsx} +64 -60
  28. package/admin/src/pages/Roles/pages/{EditPage.js → EditPage.jsx} +73 -69
  29. package/admin/src/pages/Roles/pages/ListPage/components/{TableBody.js → TableBody.jsx} +28 -32
  30. package/admin/src/pages/Roles/pages/ListPage/{index.js → index.jsx} +79 -55
  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/utils/prefixPluginTranslations.js +13 -0
  35. package/dist/admin/components/BoundRoute/getMethodColor.js +49 -0
  36. package/dist/admin/components/BoundRoute/getMethodColor.js.map +1 -0
  37. package/dist/admin/components/BoundRoute/getMethodColor.mjs +47 -0
  38. package/dist/admin/components/BoundRoute/getMethodColor.mjs.map +1 -0
  39. package/dist/admin/components/BoundRoute/index.js +98 -0
  40. package/dist/admin/components/BoundRoute/index.js.map +1 -0
  41. package/dist/admin/components/BoundRoute/index.mjs +96 -0
  42. package/dist/admin/components/BoundRoute/index.mjs.map +1 -0
  43. package/dist/admin/components/FormModal/Input/index.js +123 -0
  44. package/dist/admin/components/FormModal/Input/index.js.map +1 -0
  45. package/dist/admin/components/FormModal/Input/index.mjs +121 -0
  46. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -0
  47. package/dist/admin/components/FormModal/index.js +110 -0
  48. package/dist/admin/components/FormModal/index.js.map +1 -0
  49. package/dist/admin/components/FormModal/index.mjs +108 -0
  50. package/dist/admin/components/FormModal/index.mjs.map +1 -0
  51. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js +33 -0
  52. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.js.map +1 -0
  53. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs +31 -0
  54. package/dist/admin/components/Permissions/PermissionRow/CheckboxWrapper.mjs.map +1 -0
  55. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +156 -0
  56. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -0
  57. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +154 -0
  58. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -0
  59. package/dist/admin/components/Permissions/PermissionRow/index.js +50 -0
  60. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -0
  61. package/dist/admin/components/Permissions/PermissionRow/index.mjs +48 -0
  62. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -0
  63. package/dist/admin/components/Permissions/index.js +52 -0
  64. package/dist/admin/components/Permissions/index.js.map +1 -0
  65. package/dist/admin/components/Permissions/index.mjs +50 -0
  66. package/dist/admin/components/Permissions/index.mjs.map +1 -0
  67. package/dist/admin/components/Permissions/init.js +15 -0
  68. package/dist/admin/components/Permissions/init.js.map +1 -0
  69. package/dist/admin/components/Permissions/init.mjs +13 -0
  70. package/dist/admin/components/Permissions/init.mjs.map +1 -0
  71. package/dist/admin/components/Permissions/reducer.js +34 -0
  72. package/dist/admin/components/Permissions/reducer.js.map +1 -0
  73. package/dist/admin/components/Permissions/reducer.mjs +31 -0
  74. package/dist/admin/components/Permissions/reducer.mjs.map +1 -0
  75. package/dist/admin/components/Policies/index.js +67 -0
  76. package/dist/admin/components/Policies/index.js.map +1 -0
  77. package/dist/admin/components/Policies/index.mjs +65 -0
  78. package/dist/admin/components/Policies/index.mjs.map +1 -0
  79. package/dist/admin/components/UsersPermissions/index.js +115 -0
  80. package/dist/admin/components/UsersPermissions/index.js.map +1 -0
  81. package/dist/admin/components/UsersPermissions/index.mjs +113 -0
  82. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -0
  83. package/dist/admin/components/UsersPermissions/init.js +13 -0
  84. package/dist/admin/components/UsersPermissions/init.js.map +1 -0
  85. package/dist/admin/components/UsersPermissions/init.mjs +11 -0
  86. package/dist/admin/components/UsersPermissions/init.mjs.map +1 -0
  87. package/dist/admin/components/UsersPermissions/reducer.js +73 -0
  88. package/dist/admin/components/UsersPermissions/reducer.js.map +1 -0
  89. package/dist/admin/components/UsersPermissions/reducer.mjs +68 -0
  90. package/dist/admin/components/UsersPermissions/reducer.mjs.map +1 -0
  91. package/dist/admin/constants.js +81 -0
  92. package/dist/admin/constants.js.map +1 -0
  93. package/dist/admin/constants.mjs +79 -0
  94. package/dist/admin/constants.mjs.map +1 -0
  95. package/dist/admin/contexts/UsersPermissionsContext/index.js +23 -0
  96. package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -0
  97. package/dist/admin/contexts/UsersPermissionsContext/index.mjs +19 -0
  98. package/dist/admin/contexts/UsersPermissionsContext/index.mjs.map +1 -0
  99. package/dist/admin/index.js +125 -0
  100. package/dist/admin/index.js.map +1 -0
  101. package/dist/admin/index.mjs +121 -0
  102. package/dist/admin/index.mjs.map +1 -0
  103. package/dist/admin/package.json.js +14 -0
  104. package/dist/admin/package.json.js.map +1 -0
  105. package/dist/admin/package.json.mjs +11 -0
  106. package/dist/admin/package.json.mjs.map +1 -0
  107. package/dist/admin/pages/AdvancedSettings/index.js +194 -0
  108. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -0
  109. package/dist/admin/pages/AdvancedSettings/index.mjs +191 -0
  110. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -0
  111. package/dist/admin/pages/AdvancedSettings/utils/layout.js +83 -0
  112. package/dist/admin/pages/AdvancedSettings/utils/layout.js.map +1 -0
  113. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs +81 -0
  114. package/dist/admin/pages/AdvancedSettings/utils/layout.mjs.map +1 -0
  115. package/dist/admin/pages/AdvancedSettings/utils/schema.js +40 -0
  116. package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -0
  117. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs +19 -0
  118. package/dist/admin/pages/AdvancedSettings/utils/schema.mjs.map +1 -0
  119. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +171 -0
  120. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -0
  121. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +169 -0
  122. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -0
  123. package/dist/admin/pages/EmailTemplates/components/EmailTable.js +145 -0
  124. package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -0
  125. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs +143 -0
  126. package/dist/admin/pages/EmailTemplates/components/EmailTable.mjs.map +1 -0
  127. package/dist/admin/pages/EmailTemplates/index.js +157 -0
  128. package/dist/admin/pages/EmailTemplates/index.js.map +1 -0
  129. package/dist/admin/pages/EmailTemplates/index.mjs +135 -0
  130. package/dist/admin/pages/EmailTemplates/index.mjs.map +1 -0
  131. package/dist/admin/pages/EmailTemplates/utils/schema.js +50 -0
  132. package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -0
  133. package/dist/admin/pages/EmailTemplates/utils/schema.mjs +29 -0
  134. package/dist/admin/pages/EmailTemplates/utils/schema.mjs.map +1 -0
  135. package/dist/admin/pages/Providers/index.js +278 -0
  136. package/dist/admin/pages/Providers/index.js.map +1 -0
  137. package/dist/admin/pages/Providers/index.mjs +254 -0
  138. package/dist/admin/pages/Providers/index.mjs.map +1 -0
  139. package/dist/admin/pages/Providers/utils/forms.js +281 -0
  140. package/dist/admin/pages/Providers/utils/forms.js.map +1 -0
  141. package/dist/admin/pages/Providers/utils/forms.mjs +260 -0
  142. package/dist/admin/pages/Providers/utils/forms.mjs.map +1 -0
  143. package/dist/admin/pages/Roles/constants.js +31 -0
  144. package/dist/admin/pages/Roles/constants.js.map +1 -0
  145. package/dist/admin/pages/Roles/constants.mjs +10 -0
  146. package/dist/admin/pages/Roles/constants.mjs.map +1 -0
  147. package/dist/admin/pages/Roles/hooks/usePlugins.js +78 -0
  148. package/dist/admin/pages/Roles/hooks/usePlugins.js.map +1 -0
  149. package/dist/admin/pages/Roles/hooks/usePlugins.mjs +76 -0
  150. package/dist/admin/pages/Roles/hooks/usePlugins.mjs.map +1 -0
  151. package/dist/admin/pages/Roles/index.js +35 -0
  152. package/dist/admin/pages/Roles/index.js.map +1 -0
  153. package/dist/admin/pages/Roles/index.mjs +33 -0
  154. package/dist/admin/pages/Roles/index.mjs.map +1 -0
  155. package/dist/admin/pages/Roles/pages/CreatePage.js +225 -0
  156. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -0
  157. package/dist/admin/pages/Roles/pages/CreatePage.mjs +203 -0
  158. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -0
  159. package/dist/admin/pages/Roles/pages/EditPage.js +229 -0
  160. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -0
  161. package/dist/admin/pages/Roles/pages/EditPage.mjs +207 -0
  162. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -0
  163. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +125 -0
  164. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -0
  165. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs +123 -0
  166. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -0
  167. package/dist/admin/pages/Roles/pages/ListPage/index.js +237 -0
  168. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -0
  169. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +234 -0
  170. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -0
  171. package/dist/admin/pluginId.js +8 -0
  172. package/dist/admin/pluginId.js.map +1 -0
  173. package/dist/admin/pluginId.mjs +6 -0
  174. package/dist/admin/pluginId.mjs.map +1 -0
  175. package/dist/admin/translations/ar.json.js +45 -0
  176. package/dist/admin/translations/ar.json.js.map +1 -0
  177. package/dist/admin/translations/ar.json.mjs +43 -0
  178. package/dist/admin/translations/ar.json.mjs.map +1 -0
  179. package/dist/admin/translations/cs.json.js +51 -0
  180. package/dist/admin/translations/cs.json.js.map +1 -0
  181. package/dist/admin/translations/cs.json.mjs +49 -0
  182. package/dist/admin/translations/cs.json.mjs.map +1 -0
  183. package/dist/admin/translations/de.json.js +63 -0
  184. package/dist/admin/translations/de.json.js.map +1 -0
  185. package/dist/admin/translations/de.json.mjs +61 -0
  186. package/dist/admin/translations/de.json.mjs.map +1 -0
  187. package/dist/admin/translations/dk.json.js +87 -0
  188. package/dist/admin/translations/dk.json.js.map +1 -0
  189. package/dist/admin/translations/dk.json.mjs +85 -0
  190. package/dist/admin/translations/dk.json.mjs.map +1 -0
  191. package/dist/admin/translations/en.json.js +87 -0
  192. package/dist/admin/translations/en.json.js.map +1 -0
  193. package/dist/admin/translations/en.json.mjs +85 -0
  194. package/dist/admin/translations/en.json.mjs.map +1 -0
  195. package/dist/admin/translations/es.json.js +87 -0
  196. package/dist/admin/translations/es.json.js.map +1 -0
  197. package/dist/admin/translations/es.json.mjs +85 -0
  198. package/dist/admin/translations/es.json.mjs.map +1 -0
  199. package/dist/admin/translations/fr.json.js +51 -0
  200. package/dist/admin/translations/fr.json.js.map +1 -0
  201. package/dist/admin/translations/fr.json.mjs +49 -0
  202. package/dist/admin/translations/fr.json.mjs.map +1 -0
  203. package/dist/admin/translations/id.json.js +63 -0
  204. package/dist/admin/translations/id.json.js.map +1 -0
  205. package/dist/admin/translations/id.json.mjs +61 -0
  206. package/dist/admin/translations/id.json.mjs.map +1 -0
  207. package/dist/admin/translations/it.json.js +63 -0
  208. package/dist/admin/translations/it.json.js.map +1 -0
  209. package/dist/admin/translations/it.json.mjs +61 -0
  210. package/dist/admin/translations/it.json.mjs.map +1 -0
  211. package/dist/admin/translations/ja.json.js +49 -0
  212. package/dist/admin/translations/ja.json.js.map +1 -0
  213. package/dist/admin/translations/ja.json.mjs +47 -0
  214. package/dist/admin/translations/ja.json.mjs.map +1 -0
  215. package/dist/admin/translations/ko.json.js +87 -0
  216. package/dist/admin/translations/ko.json.js.map +1 -0
  217. package/dist/admin/translations/ko.json.mjs +85 -0
  218. package/dist/admin/translations/ko.json.mjs.map +1 -0
  219. package/dist/admin/translations/ms.json.js +50 -0
  220. package/dist/admin/translations/ms.json.js.map +1 -0
  221. package/dist/admin/translations/ms.json.mjs +48 -0
  222. package/dist/admin/translations/ms.json.mjs.map +1 -0
  223. package/dist/admin/translations/nl.json.js +49 -0
  224. package/dist/admin/translations/nl.json.js.map +1 -0
  225. package/dist/admin/translations/nl.json.mjs +47 -0
  226. package/dist/admin/translations/nl.json.mjs.map +1 -0
  227. package/dist/admin/translations/pl.json.js +87 -0
  228. package/dist/admin/translations/pl.json.js.map +1 -0
  229. package/dist/admin/translations/pl.json.mjs +85 -0
  230. package/dist/admin/translations/pl.json.mjs.map +1 -0
  231. package/dist/admin/translations/pt-BR.json.js +45 -0
  232. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  233. package/dist/admin/translations/pt-BR.json.mjs +43 -0
  234. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  235. package/dist/admin/translations/pt.json.js +49 -0
  236. package/dist/admin/translations/pt.json.js.map +1 -0
  237. package/dist/admin/translations/pt.json.mjs +47 -0
  238. package/dist/admin/translations/pt.json.mjs.map +1 -0
  239. package/dist/admin/translations/ru.json.js +87 -0
  240. package/dist/admin/translations/ru.json.js.map +1 -0
  241. package/dist/admin/translations/ru.json.mjs +85 -0
  242. package/dist/admin/translations/ru.json.mjs.map +1 -0
  243. package/dist/admin/translations/sk.json.js +51 -0
  244. package/dist/admin/translations/sk.json.js.map +1 -0
  245. package/dist/admin/translations/sk.json.mjs +49 -0
  246. package/dist/admin/translations/sk.json.mjs.map +1 -0
  247. package/dist/admin/translations/sv.json.js +87 -0
  248. package/dist/admin/translations/sv.json.js.map +1 -0
  249. package/dist/admin/translations/sv.json.mjs +85 -0
  250. package/dist/admin/translations/sv.json.mjs.map +1 -0
  251. package/dist/admin/translations/th.json.js +61 -0
  252. package/dist/admin/translations/th.json.js.map +1 -0
  253. package/dist/admin/translations/th.json.mjs +59 -0
  254. package/dist/admin/translations/th.json.mjs.map +1 -0
  255. package/dist/admin/translations/tr.json.js +86 -0
  256. package/dist/admin/translations/tr.json.js.map +1 -0
  257. package/dist/admin/translations/tr.json.mjs +84 -0
  258. package/dist/admin/translations/tr.json.mjs.map +1 -0
  259. package/dist/admin/translations/uk.json.js +87 -0
  260. package/dist/admin/translations/uk.json.js.map +1 -0
  261. package/dist/admin/translations/uk.json.mjs +85 -0
  262. package/dist/admin/translations/uk.json.mjs.map +1 -0
  263. package/dist/admin/translations/vi.json.js +51 -0
  264. package/dist/admin/translations/vi.json.js.map +1 -0
  265. package/dist/admin/translations/vi.json.mjs +49 -0
  266. package/dist/admin/translations/vi.json.mjs.map +1 -0
  267. package/dist/admin/translations/zh-Hans.json.js +87 -0
  268. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  269. package/dist/admin/translations/zh-Hans.json.mjs +85 -0
  270. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  271. package/dist/admin/translations/zh.json.js +87 -0
  272. package/dist/admin/translations/zh.json.js.map +1 -0
  273. package/dist/admin/translations/zh.json.mjs +85 -0
  274. package/dist/admin/translations/zh.json.mjs.map +1 -0
  275. package/dist/admin/utils/cleanPermissions.js +24 -0
  276. package/dist/admin/utils/cleanPermissions.js.map +1 -0
  277. package/dist/admin/utils/cleanPermissions.mjs +22 -0
  278. package/dist/admin/utils/cleanPermissions.mjs.map +1 -0
  279. package/dist/admin/utils/formatPluginName.js +29 -0
  280. package/dist/admin/utils/formatPluginName.js.map +1 -0
  281. package/dist/admin/utils/formatPluginName.mjs +27 -0
  282. package/dist/admin/utils/formatPluginName.mjs.map +1 -0
  283. package/dist/admin/utils/getTrad.js +8 -0
  284. package/dist/admin/utils/getTrad.js.map +1 -0
  285. package/dist/admin/utils/getTrad.mjs +6 -0
  286. package/dist/admin/utils/getTrad.mjs.map +1 -0
  287. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  288. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  289. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  290. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  291. package/dist/server/_virtual/_commonjsHelpers.js +8 -0
  292. package/dist/server/_virtual/_commonjsHelpers.js.map +1 -0
  293. package/dist/server/_virtual/_commonjsHelpers.mjs +6 -0
  294. package/dist/server/_virtual/_commonjsHelpers.mjs.map +1 -0
  295. package/dist/server/bootstrap/index.js +145 -0
  296. package/dist/server/bootstrap/index.js.map +1 -0
  297. package/dist/server/bootstrap/index.mjs +143 -0
  298. package/dist/server/bootstrap/index.mjs.map +1 -0
  299. package/dist/server/bootstrap/users-permissions-actions.js +98 -0
  300. package/dist/server/bootstrap/users-permissions-actions.js.map +1 -0
  301. package/dist/server/bootstrap/users-permissions-actions.mjs +96 -0
  302. package/dist/server/bootstrap/users-permissions-actions.mjs.map +1 -0
  303. package/dist/server/config.js +54 -0
  304. package/dist/server/config.js.map +1 -0
  305. package/dist/server/config.mjs +52 -0
  306. package/dist/server/config.mjs.map +1 -0
  307. package/dist/server/content-types/index.js +30 -0
  308. package/dist/server/content-types/index.js.map +1 -0
  309. package/dist/server/content-types/index.mjs +28 -0
  310. package/dist/server/content-types/index.mjs.map +1 -0
  311. package/dist/server/content-types/permission/index.js +44 -0
  312. package/dist/server/content-types/permission/index.js.map +1 -0
  313. package/dist/server/content-types/permission/index.mjs +42 -0
  314. package/dist/server/content-types/permission/index.mjs.map +1 -0
  315. package/dist/server/content-types/role/index.js +61 -0
  316. package/dist/server/content-types/role/index.js.map +1 -0
  317. package/dist/server/content-types/role/index.mjs +59 -0
  318. package/dist/server/content-types/role/index.mjs.map +1 -0
  319. package/dist/server/content-types/user/index.js +84 -0
  320. package/dist/server/content-types/user/index.js.map +1 -0
  321. package/dist/server/content-types/user/index.mjs +82 -0
  322. package/dist/server/content-types/user/index.mjs.map +1 -0
  323. package/dist/server/content-types/user/schema-config.js +25 -0
  324. package/dist/server/content-types/user/schema-config.js.map +1 -0
  325. package/dist/server/content-types/user/schema-config.mjs +23 -0
  326. package/dist/server/content-types/user/schema-config.mjs.map +1 -0
  327. package/dist/server/controllers/auth.js +429 -0
  328. package/dist/server/controllers/auth.js.map +1 -0
  329. package/dist/server/controllers/auth.mjs +427 -0
  330. package/dist/server/controllers/auth.mjs.map +1 -0
  331. package/dist/server/controllers/content-manager-user.js +168 -0
  332. package/dist/server/controllers/content-manager-user.js.map +1 -0
  333. package/dist/server/controllers/content-manager-user.mjs +166 -0
  334. package/dist/server/controllers/content-manager-user.mjs.map +1 -0
  335. package/dist/server/controllers/index.js +33 -0
  336. package/dist/server/controllers/index.js.map +1 -0
  337. package/dist/server/controllers/index.mjs +31 -0
  338. package/dist/server/controllers/index.mjs.map +1 -0
  339. package/dist/server/controllers/permissions.js +37 -0
  340. package/dist/server/controllers/permissions.js.map +1 -0
  341. package/dist/server/controllers/permissions.mjs +35 -0
  342. package/dist/server/controllers/permissions.mjs.map +1 -0
  343. package/dist/server/controllers/role.js +91 -0
  344. package/dist/server/controllers/role.js.map +1 -0
  345. package/dist/server/controllers/role.mjs +89 -0
  346. package/dist/server/controllers/role.mjs.map +1 -0
  347. package/dist/server/controllers/settings.js +107 -0
  348. package/dist/server/controllers/settings.js.map +1 -0
  349. package/dist/server/controllers/settings.mjs +105 -0
  350. package/dist/server/controllers/settings.mjs.map +1 -0
  351. package/dist/server/controllers/user.js +201 -0
  352. package/dist/server/controllers/user.js.map +1 -0
  353. package/dist/server/controllers/user.mjs +199 -0
  354. package/dist/server/controllers/user.mjs.map +1 -0
  355. package/dist/server/controllers/validation/auth.js +131 -0
  356. package/dist/server/controllers/validation/auth.js.map +1 -0
  357. package/dist/server/controllers/validation/auth.mjs +129 -0
  358. package/dist/server/controllers/validation/auth.mjs.map +1 -0
  359. package/dist/server/controllers/validation/email-template.js +72 -0
  360. package/dist/server/controllers/validation/email-template.js.map +1 -0
  361. package/dist/server/controllers/validation/email-template.mjs +70 -0
  362. package/dist/server/controllers/validation/email-template.mjs.map +1 -0
  363. package/dist/server/controllers/validation/user.js +49 -0
  364. package/dist/server/controllers/validation/user.js.map +1 -0
  365. package/dist/server/controllers/validation/user.mjs +47 -0
  366. package/dist/server/controllers/validation/user.mjs.map +1 -0
  367. package/dist/server/graphql/index.js +66 -0
  368. package/dist/server/graphql/index.js.map +1 -0
  369. package/dist/server/graphql/index.mjs +64 -0
  370. package/dist/server/graphql/index.mjs.map +1 -0
  371. package/dist/server/graphql/mutations/auth/change-password.js +40 -0
  372. package/dist/server/graphql/mutations/auth/change-password.js.map +1 -0
  373. package/dist/server/graphql/mutations/auth/change-password.mjs +38 -0
  374. package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -0
  375. package/dist/server/graphql/mutations/auth/email-confirmation.js +38 -0
  376. package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -0
  377. package/dist/server/graphql/mutations/auth/email-confirmation.mjs +36 -0
  378. package/dist/server/graphql/mutations/auth/email-confirmation.mjs.map +1 -0
  379. package/dist/server/graphql/mutations/auth/forgot-password.js +37 -0
  380. package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -0
  381. package/dist/server/graphql/mutations/auth/forgot-password.mjs +35 -0
  382. package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -0
  383. package/dist/server/graphql/mutations/auth/login.js +40 -0
  384. package/dist/server/graphql/mutations/auth/login.js.map +1 -0
  385. package/dist/server/graphql/mutations/auth/login.mjs +38 -0
  386. package/dist/server/graphql/mutations/auth/login.mjs.map +1 -0
  387. package/dist/server/graphql/mutations/auth/register.js +38 -0
  388. package/dist/server/graphql/mutations/auth/register.js.map +1 -0
  389. package/dist/server/graphql/mutations/auth/register.mjs +36 -0
  390. package/dist/server/graphql/mutations/auth/register.mjs.map +1 -0
  391. package/dist/server/graphql/mutations/auth/reset-password.js +40 -0
  392. package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -0
  393. package/dist/server/graphql/mutations/auth/reset-password.mjs +38 -0
  394. package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -0
  395. package/dist/server/graphql/mutations/crud/role/create-role.js +37 -0
  396. package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -0
  397. package/dist/server/graphql/mutations/crud/role/create-role.mjs +35 -0
  398. package/dist/server/graphql/mutations/crud/role/create-role.mjs.map +1 -0
  399. package/dist/server/graphql/mutations/crud/role/delete-role.js +32 -0
  400. package/dist/server/graphql/mutations/crud/role/delete-role.js.map +1 -0
  401. package/dist/server/graphql/mutations/crud/role/delete-role.mjs +30 -0
  402. package/dist/server/graphql/mutations/crud/role/delete-role.mjs.map +1 -0
  403. package/dist/server/graphql/mutations/crud/role/update-role.js +39 -0
  404. package/dist/server/graphql/mutations/crud/role/update-role.js.map +1 -0
  405. package/dist/server/graphql/mutations/crud/role/update-role.mjs +37 -0
  406. package/dist/server/graphql/mutations/crud/role/update-role.mjs.map +1 -0
  407. package/dist/server/graphql/mutations/crud/user/create-user.js +46 -0
  408. package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -0
  409. package/dist/server/graphql/mutations/crud/user/create-user.mjs +44 -0
  410. package/dist/server/graphql/mutations/crud/user/create-user.mjs.map +1 -0
  411. package/dist/server/graphql/mutations/crud/user/delete-user.js +44 -0
  412. package/dist/server/graphql/mutations/crud/user/delete-user.js.map +1 -0
  413. package/dist/server/graphql/mutations/crud/user/delete-user.mjs +42 -0
  414. package/dist/server/graphql/mutations/crud/user/delete-user.mjs.map +1 -0
  415. package/dist/server/graphql/mutations/crud/user/update-user.js +49 -0
  416. package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -0
  417. package/dist/server/graphql/mutations/crud/user/update-user.mjs +47 -0
  418. package/dist/server/graphql/mutations/crud/user/update-user.mjs.map +1 -0
  419. package/dist/server/graphql/mutations/index.js +58 -0
  420. package/dist/server/graphql/mutations/index.js.map +1 -0
  421. package/dist/server/graphql/mutations/index.mjs +56 -0
  422. package/dist/server/graphql/mutations/index.mjs.map +1 -0
  423. package/dist/server/graphql/queries/index.js +25 -0
  424. package/dist/server/graphql/queries/index.js.map +1 -0
  425. package/dist/server/graphql/queries/index.mjs +23 -0
  426. package/dist/server/graphql/queries/index.mjs.map +1 -0
  427. package/dist/server/graphql/queries/me.js +23 -0
  428. package/dist/server/graphql/queries/me.js.map +1 -0
  429. package/dist/server/graphql/queries/me.mjs +21 -0
  430. package/dist/server/graphql/queries/me.mjs.map +1 -0
  431. package/dist/server/graphql/resolvers-configs.js +93 -0
  432. package/dist/server/graphql/resolvers-configs.js.map +1 -0
  433. package/dist/server/graphql/resolvers-configs.mjs +91 -0
  434. package/dist/server/graphql/resolvers-configs.mjs.map +1 -0
  435. package/dist/server/graphql/types/create-role-payload.js +20 -0
  436. package/dist/server/graphql/types/create-role-payload.js.map +1 -0
  437. package/dist/server/graphql/types/create-role-payload.mjs +18 -0
  438. package/dist/server/graphql/types/create-role-payload.mjs.map +1 -0
  439. package/dist/server/graphql/types/delete-role-payload.js +20 -0
  440. package/dist/server/graphql/types/delete-role-payload.js.map +1 -0
  441. package/dist/server/graphql/types/delete-role-payload.mjs +18 -0
  442. package/dist/server/graphql/types/delete-role-payload.mjs.map +1 -0
  443. package/dist/server/graphql/types/index.js +41 -0
  444. package/dist/server/graphql/types/index.js.map +1 -0
  445. package/dist/server/graphql/types/index.mjs +39 -0
  446. package/dist/server/graphql/types/index.mjs.map +1 -0
  447. package/dist/server/graphql/types/login-input.js +24 -0
  448. package/dist/server/graphql/types/login-input.js.map +1 -0
  449. package/dist/server/graphql/types/login-input.mjs +22 -0
  450. package/dist/server/graphql/types/login-input.mjs.map +1 -0
  451. package/dist/server/graphql/types/login-payload.js +23 -0
  452. package/dist/server/graphql/types/login-payload.js.map +1 -0
  453. package/dist/server/graphql/types/login-payload.mjs +21 -0
  454. package/dist/server/graphql/types/login-payload.mjs.map +1 -0
  455. package/dist/server/graphql/types/me-role.js +23 -0
  456. package/dist/server/graphql/types/me-role.js.map +1 -0
  457. package/dist/server/graphql/types/me-role.mjs +21 -0
  458. package/dist/server/graphql/types/me-role.mjs.map +1 -0
  459. package/dist/server/graphql/types/me.js +28 -0
  460. package/dist/server/graphql/types/me.js.map +1 -0
  461. package/dist/server/graphql/types/me.mjs +26 -0
  462. package/dist/server/graphql/types/me.mjs.map +1 -0
  463. package/dist/server/graphql/types/password-payload.js +20 -0
  464. package/dist/server/graphql/types/password-payload.js.map +1 -0
  465. package/dist/server/graphql/types/password-payload.mjs +18 -0
  466. package/dist/server/graphql/types/password-payload.mjs.map +1 -0
  467. package/dist/server/graphql/types/register-input.js +22 -0
  468. package/dist/server/graphql/types/register-input.js.map +1 -0
  469. package/dist/server/graphql/types/register-input.mjs +20 -0
  470. package/dist/server/graphql/types/register-input.mjs.map +1 -0
  471. package/dist/server/graphql/types/update-role-payload.js +20 -0
  472. package/dist/server/graphql/types/update-role-payload.js.map +1 -0
  473. package/dist/server/graphql/types/update-role-payload.mjs +18 -0
  474. package/dist/server/graphql/types/update-role-payload.mjs.map +1 -0
  475. package/dist/server/graphql/types/user-input.js +26 -0
  476. package/dist/server/graphql/types/user-input.js.map +1 -0
  477. package/dist/server/graphql/types/user-input.mjs +24 -0
  478. package/dist/server/graphql/types/user-input.mjs.map +1 -0
  479. package/dist/server/graphql/utils.js +32 -0
  480. package/dist/server/graphql/utils.js.map +1 -0
  481. package/dist/server/graphql/utils.mjs +30 -0
  482. package/dist/server/graphql/utils.mjs.map +1 -0
  483. package/dist/server/index.js +10 -0
  484. package/dist/server/index.js.map +1 -0
  485. package/dist/server/index.mjs +8 -0
  486. package/dist/server/index.mjs.map +1 -0
  487. package/dist/server/index2.js +39 -0
  488. package/dist/server/index2.js.map +1 -0
  489. package/dist/server/index2.mjs +37 -0
  490. package/dist/server/index2.mjs.map +1 -0
  491. package/dist/server/middlewares/index.js +18 -0
  492. package/dist/server/middlewares/index.js.map +1 -0
  493. package/dist/server/middlewares/index.mjs +16 -0
  494. package/dist/server/middlewares/index.mjs.map +1 -0
  495. package/dist/server/middlewares/rateLimit.js +51 -0
  496. package/dist/server/middlewares/rateLimit.js.map +1 -0
  497. package/dist/server/middlewares/rateLimit.mjs +49 -0
  498. package/dist/server/middlewares/rateLimit.mjs.map +1 -0
  499. package/dist/server/register.js +41 -0
  500. package/dist/server/register.js.map +1 -0
  501. package/dist/server/register.mjs +39 -0
  502. package/dist/server/register.mjs.map +1 -0
  503. package/dist/server/routes/admin/index.js +27 -0
  504. package/dist/server/routes/admin/index.js.map +1 -0
  505. package/dist/server/routes/admin/index.mjs +25 -0
  506. package/dist/server/routes/admin/index.mjs.map +1 -0
  507. package/dist/server/routes/admin/permissions.js +29 -0
  508. package/dist/server/routes/admin/permissions.js.map +1 -0
  509. package/dist/server/routes/admin/permissions.mjs +27 -0
  510. package/dist/server/routes/admin/permissions.mjs.map +1 -0
  511. package/dist/server/routes/admin/role.js +99 -0
  512. package/dist/server/routes/admin/role.js.map +1 -0
  513. package/dist/server/routes/admin/role.mjs +97 -0
  514. package/dist/server/routes/admin/role.mjs.map +1 -0
  515. package/dist/server/routes/admin/settings.js +116 -0
  516. package/dist/server/routes/admin/settings.js.map +1 -0
  517. package/dist/server/routes/admin/settings.mjs +114 -0
  518. package/dist/server/routes/admin/settings.mjs.map +1 -0
  519. package/dist/server/routes/content-api/auth.js +104 -0
  520. package/dist/server/routes/content-api/auth.js.map +1 -0
  521. package/dist/server/routes/content-api/auth.mjs +102 -0
  522. package/dist/server/routes/content-api/auth.mjs.map +1 -0
  523. package/dist/server/routes/content-api/index.js +30 -0
  524. package/dist/server/routes/content-api/index.js.map +1 -0
  525. package/dist/server/routes/content-api/index.mjs +28 -0
  526. package/dist/server/routes/content-api/index.mjs.map +1 -0
  527. package/dist/server/routes/content-api/permissions.js +19 -0
  528. package/dist/server/routes/content-api/permissions.js.map +1 -0
  529. package/dist/server/routes/content-api/permissions.mjs +17 -0
  530. package/dist/server/routes/content-api/permissions.mjs.map +1 -0
  531. package/dist/server/routes/content-api/role.js +39 -0
  532. package/dist/server/routes/content-api/role.js.map +1 -0
  533. package/dist/server/routes/content-api/role.mjs +37 -0
  534. package/dist/server/routes/content-api/role.mjs.map +1 -0
  535. package/dist/server/routes/content-api/user.js +70 -0
  536. package/dist/server/routes/content-api/user.js.map +1 -0
  537. package/dist/server/routes/content-api/user.mjs +68 -0
  538. package/dist/server/routes/content-api/user.mjs.map +1 -0
  539. package/dist/server/routes/index.js +19 -0
  540. package/dist/server/routes/index.js.map +1 -0
  541. package/dist/server/routes/index.mjs +17 -0
  542. package/dist/server/routes/index.mjs.map +1 -0
  543. package/dist/server/services/index.js +36 -0
  544. package/dist/server/services/index.js.map +1 -0
  545. package/dist/server/services/index.mjs +34 -0
  546. package/dist/server/services/index.mjs.map +1 -0
  547. package/dist/server/services/jwt.js +50 -0
  548. package/dist/server/services/jwt.js.map +1 -0
  549. package/dist/server/services/jwt.mjs +48 -0
  550. package/dist/server/services/jwt.mjs.map +1 -0
  551. package/dist/server/services/permission.js +52 -0
  552. package/dist/server/services/permission.js.map +1 -0
  553. package/dist/server/services/permission.mjs +50 -0
  554. package/dist/server/services/permission.mjs.map +1 -0
  555. package/dist/server/services/providers-registry.js +555 -0
  556. package/dist/server/services/providers-registry.js.map +1 -0
  557. package/dist/server/services/providers-registry.mjs +553 -0
  558. package/dist/server/services/providers-registry.mjs.map +1 -0
  559. package/dist/server/services/providers.js +111 -0
  560. package/dist/server/services/providers.js.map +1 -0
  561. package/dist/server/services/providers.mjs +109 -0
  562. package/dist/server/services/providers.mjs.map +1 -0
  563. package/dist/server/services/role.js +186 -0
  564. package/dist/server/services/role.js.map +1 -0
  565. package/dist/server/services/role.mjs +184 -0
  566. package/dist/server/services/role.mjs.map +1 -0
  567. package/dist/server/services/user.js +179 -0
  568. package/dist/server/services/user.js.map +1 -0
  569. package/dist/server/services/user.mjs +177 -0
  570. package/dist/server/services/user.mjs.map +1 -0
  571. package/dist/server/services/users-permissions.js +247 -0
  572. package/dist/server/services/users-permissions.js.map +1 -0
  573. package/dist/server/services/users-permissions.mjs +245 -0
  574. package/dist/server/services/users-permissions.mjs.map +1 -0
  575. package/dist/server/strategies/users-permissions.js +114 -0
  576. package/dist/server/strategies/users-permissions.js.map +1 -0
  577. package/dist/server/strategies/users-permissions.mjs +112 -0
  578. package/dist/server/strategies/users-permissions.mjs.map +1 -0
  579. package/dist/server/utils/index.js +22 -0
  580. package/dist/server/utils/index.js.map +1 -0
  581. package/dist/server/utils/index.mjs +20 -0
  582. package/dist/server/utils/index.mjs.map +1 -0
  583. package/dist/server/utils/sanitize/index.js +21 -0
  584. package/dist/server/utils/sanitize/index.js.map +1 -0
  585. package/dist/server/utils/sanitize/index.mjs +19 -0
  586. package/dist/server/utils/sanitize/index.mjs.map +1 -0
  587. package/dist/server/utils/sanitize/sanitizers.js +32 -0
  588. package/dist/server/utils/sanitize/sanitizers.js.map +1 -0
  589. package/dist/server/utils/sanitize/sanitizers.mjs +30 -0
  590. package/dist/server/utils/sanitize/sanitizers.mjs.map +1 -0
  591. package/dist/server/utils/sanitize/visitors/index.js +17 -0
  592. package/dist/server/utils/sanitize/visitors/index.js.map +1 -0
  593. package/dist/server/utils/sanitize/visitors/index.mjs +15 -0
  594. package/dist/server/utils/sanitize/visitors/index.mjs.map +1 -0
  595. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +17 -0
  596. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js.map +1 -0
  597. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs +15 -0
  598. package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.mjs.map +1 -0
  599. package/package.json +48 -29
  600. package/rollup.config.mjs +19 -0
  601. package/server/bootstrap/index.js +18 -50
  602. package/server/bootstrap/users-permissions-actions.js +6 -0
  603. package/server/config.js +29 -0
  604. package/server/content-types/user/index.js +0 -1
  605. package/server/controllers/auth.js +68 -65
  606. package/server/controllers/content-manager-user.js +28 -30
  607. package/server/controllers/role.js +17 -4
  608. package/server/controllers/user.js +8 -9
  609. package/server/controllers/validation/auth.js +104 -25
  610. package/server/graphql/types/index.js +1 -0
  611. package/server/graphql/types/me.js +1 -0
  612. package/server/graphql/types/user-input.js +20 -0
  613. package/server/middlewares/rateLimit.js +1 -1
  614. package/server/register.js +2 -2
  615. package/server/services/jwt.js +3 -3
  616. package/server/services/permission.js +3 -7
  617. package/server/services/providers-registry.js +469 -261
  618. package/server/services/providers.js +10 -5
  619. package/server/services/role.js +15 -13
  620. package/server/services/user.js +56 -19
  621. package/server/services/users-permissions.js +15 -13
  622. package/server/utils/index.d.ts +2 -1
  623. package/server/utils/sanitize/sanitizers.js +7 -3
  624. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  625. package/.eslintrc.js +0 -14
  626. package/admin/src/components/FormModal/index.js +0 -126
  627. package/admin/src/components/Permissions/index.js +0 -55
  628. package/admin/src/pages/AdvancedSettings/index.js +0 -259
  629. package/admin/src/pages/EmailTemplates/components/EmailForm.js +0 -176
  630. package/admin/src/pages/Roles/index.js +0 -33
  631. package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
  632. package/server/bootstrap/grant-config.js +0 -131
  633. package/strapi-admin.js +0 -3
  634. package/strapi-server.js +0 -3
  635. /package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +0 -0
  636. /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.ce51df0e18404afc8a1aa7f504c1006a7a221459",
3
+ "version": "0.0.0-next.ce5699024a72ea224891438d5bbe39f904ec6774",
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.9.0",
33
- "@strapi/helper-plugin": "0.0.0-next.ce51df0e18404afc8a1aa7f504c1006a7a221459",
34
- "@strapi/icons": "1.9.0",
35
- "@strapi/utils": "0.0.0-next.ce51df0e18404afc8a1aa7f504c1006a7a221459",
51
+ "@strapi/design-system": "2.0.0-rc.21",
52
+ "@strapi/icons": "2.0.0-rc.21",
53
+ "@strapi/utils": "0.0.0-next.ce5699024a72ea224891438d5bbe39f904ec6774",
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.ce5699024a72ea224891438d5bbe39f904ec6774",
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": "ce51df0e18404afc8a1aa7f504c1006a7a221459"
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,25 +9,26 @@
9
9
  */
10
10
  const crypto = require('crypto');
11
11
  const _ = require('lodash');
12
- const urljoin = require('url-join');
13
- const { isArray } = require('lodash/fp');
14
12
  const { getService } = require('../utils');
15
- const getGrantConfig = require('./grant-config');
16
-
17
13
  const usersPermissionsActions = require('./users-permissions-actions');
18
- const userSchema = require('../content-types/user');
19
14
 
20
15
  const initGrant = async (pluginStore) => {
21
- const apiPrefix = strapi.config.get('api.rest.prefix');
22
- 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;
23
20
 
24
- const grantConfig = getGrantConfig(baseURL);
21
+ acc[name] = {
22
+ icon,
23
+ enabled,
24
+ ...grantConfig,
25
+ };
26
+ return acc;
27
+ }, {});
25
28
 
26
29
  const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {};
27
- // store grant auth config to db
28
- // when plugin_users-permissions_grant is not existed in db
29
- // or we have added/deleted provider here.
30
- if (!prevGrantConfig || !_.isEqual(_.keys(prevGrantConfig), _.keys(grantConfig))) {
30
+
31
+ if (!prevGrantConfig || !_.isEqual(prevGrantConfig, grantConfig)) {
31
32
  // merge with the previous provider config.
32
33
  _.keys(grantConfig).forEach((key) => {
33
34
  if (key in prevGrantConfig) {
@@ -99,26 +100,6 @@ const initAdvancedOptions = async (pluginStore) => {
99
100
  }
100
101
  };
101
102
 
102
- const userSchemaAdditions = () => {
103
- const defaultSchema = Object.keys(userSchema.attributes);
104
- const currentSchema = Object.keys(
105
- strapi.contentTypes['plugin::users-permissions.user'].attributes
106
- );
107
-
108
- // Some dynamic fields may not have been initialized yet, so we need to ignore them
109
- // TODO: we should have a global method for finding these
110
- const ignoreDiffs = [
111
- 'createdBy',
112
- 'createdAt',
113
- 'updatedBy',
114
- 'updatedAt',
115
- 'publishedAt',
116
- 'strapi_reviewWorkflows_stage',
117
- ];
118
-
119
- return currentSchema.filter((key) => !(ignoreDiffs.includes(key) || defaultSchema.includes(key)));
120
- };
121
-
122
103
  module.exports = async ({ strapi }) => {
123
104
  const pluginStore = strapi.store({ type: 'plugin', name: 'users-permissions' });
124
105
 
@@ -126,13 +107,13 @@ module.exports = async ({ strapi }) => {
126
107
  await initEmails(pluginStore);
127
108
  await initAdvancedOptions(pluginStore);
128
109
 
129
- await strapi.admin.services.permission.actionProvider.registerMany(
130
- usersPermissionsActions.actions
131
- );
110
+ await strapi
111
+ .service('admin::permission')
112
+ .actionProvider.registerMany(usersPermissionsActions.actions);
132
113
 
133
114
  await getService('users-permissions').initialize();
134
115
 
135
- if (!strapi.config.get('plugin.users-permissions.jwtSecret')) {
116
+ if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {
136
117
  if (process.env.NODE_ENV !== 'development') {
137
118
  throw new Error(
138
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')\`).
@@ -142,7 +123,7 @@ For security reasons, prefer storing the secret in an environment variable and r
142
123
 
143
124
  const jwtSecret = crypto.randomBytes(16).toString('base64');
144
125
 
145
- strapi.config.set('plugin.users-permissions.jwtSecret', jwtSecret);
126
+ strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
146
127
 
147
128
  if (!process.env.JWT_SECRET) {
148
129
  const envPath = process.env.ENV_PATH || '.env';
@@ -152,17 +133,4 @@ For security reasons, prefer storing the secret in an environment variable and r
152
133
  );
153
134
  }
154
135
  }
155
-
156
- // TODO v5: Remove this block of code and default allowedFields to empty array
157
- if (!isArray(strapi.config.get('plugin.users-permissions.register.allowedFields'))) {
158
- const modifications = userSchemaAdditions();
159
- if (modifications.length > 0) {
160
- // if there is a potential vulnerability, show a warning
161
- strapi.log.warn(
162
- `Users-permissions registration has defaulted to accepting the following additional user fields during registration: ${modifications.join(
163
- ','
164
- )}`
165
- );
166
- }
167
- }
168
136
  };
@@ -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: {
@@ -11,9 +11,6 @@ const crypto = require('crypto');
11
11
  const _ = require('lodash');
12
12
  const { concat, compact, isArray } = require('lodash/fp');
13
13
  const utils = require('@strapi/utils');
14
- const {
15
- contentTypes: { getNonWritableAttributes },
16
- } = require('@strapi/utils');
17
14
  const { getService } = require('../utils');
18
15
  const {
19
16
  validateCallbackBody,
@@ -25,17 +22,16 @@ const {
25
22
  validateChangePasswordBody,
26
23
  } = require('./validation/auth');
27
24
 
28
- const { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = utils;
29
- const { ApplicationError, ValidationError } = utils.errors;
25
+ const { ApplicationError, ValidationError, ForbiddenError } = utils.errors;
30
26
 
31
27
  const sanitizeUser = (user, ctx) => {
32
28
  const { auth } = ctx.state;
33
29
  const userSchema = strapi.getModel('plugin::users-permissions.user');
34
30
 
35
- return sanitize.contentAPI.output(user, userSchema, { auth });
31
+ return strapi.contentAPI.sanitize.output(user, userSchema, { auth });
36
32
  };
37
33
 
38
- module.exports = {
34
+ module.exports = ({ strapi }) => ({
39
35
  async callback(ctx) {
40
36
  const provider = ctx.params.provider || 'local';
41
37
  const params = ctx.request.body;
@@ -55,7 +51,7 @@ module.exports = {
55
51
  const { identifier } = params;
56
52
 
57
53
  // Check if the user exists.
58
- const user = await strapi.query('plugin::users-permissions.user').findOne({
54
+ const user = await strapi.db.query('plugin::users-permissions.user').findOne({
59
55
  where: {
60
56
  provider,
61
57
  $or: [{ email: identifier.toLowerCase() }, { username: identifier }],
@@ -100,6 +96,10 @@ module.exports = {
100
96
  try {
101
97
  const user = await getService('providers').connect(provider, ctx.query);
102
98
 
99
+ if (user.blocked) {
100
+ throw new ForbiddenError('Your account has been blocked by an administrator');
101
+ }
102
+
103
103
  return ctx.send({
104
104
  jwt: getService('jwt').issue({ id: user.id }),
105
105
  user: await sanitizeUser(user, ctx),
@@ -114,13 +114,17 @@ module.exports = {
114
114
  throw new ApplicationError('You must be authenticated to reset your password');
115
115
  }
116
116
 
117
- const { currentPassword, password } = await validateChangePasswordBody(ctx.request.body);
117
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
118
118
 
119
- const user = await strapi.entityService.findOne(
120
- 'plugin::users-permissions.user',
121
- ctx.state.user.id
119
+ const { currentPassword, password } = await validateChangePasswordBody(
120
+ ctx.request.body,
121
+ validations
122
122
  );
123
123
 
124
+ const user = await strapi.db
125
+ .query('plugin::users-permissions.user')
126
+ .findOne({ where: { id: ctx.state.user.id } });
127
+
124
128
  const validPassword = await getService('user').validatePassword(currentPassword, user.password);
125
129
 
126
130
  if (!validPassword) {
@@ -140,15 +144,18 @@ module.exports = {
140
144
  },
141
145
 
142
146
  async resetPassword(ctx) {
147
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
148
+
143
149
  const { password, passwordConfirmation, code } = await validateResetPasswordBody(
144
- ctx.request.body
150
+ ctx.request.body,
151
+ validations
145
152
  );
146
153
 
147
154
  if (password !== passwordConfirmation) {
148
155
  throw new ValidationError('Passwords do not match');
149
156
  }
150
157
 
151
- const user = await strapi
158
+ const user = await strapi.db
152
159
  .query('plugin::users-permissions.user')
153
160
  .findOne({ where: { resetPasswordToken: code } });
154
161
 
@@ -169,7 +176,7 @@ module.exports = {
169
176
  },
170
177
 
171
178
  async connect(ctx, next) {
172
- const grant = require('grant-koa');
179
+ const grant = require('grant').koa();
173
180
 
174
181
  const providers = await strapi
175
182
  .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })
@@ -197,10 +204,28 @@ module.exports = {
197
204
  }
198
205
 
199
206
  // Ability to pass OAuth callback dynamically
200
- grantConfig[provider].callback =
201
- _.get(ctx, 'query.callback') ||
202
- _.get(ctx, 'session.grant.dynamic.callback') ||
203
- 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
204
229
  grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider);
205
230
 
206
231
  return grant(grantConfig)(ctx, next);
@@ -215,7 +240,7 @@ module.exports = {
215
240
  const advancedSettings = await pluginStore.get({ key: 'advanced' });
216
241
 
217
242
  // Find the user by email.
218
- const user = await strapi
243
+ const user = await strapi.db
219
244
  .query('plugin::users-permissions.user')
220
245
  .findOne({ where: { email: email.toLowerCase() } });
221
246
 
@@ -233,8 +258,8 @@ module.exports = {
233
258
  resetPasswordSettings.message,
234
259
  {
235
260
  URL: advancedSettings.email_reset_password,
236
- SERVER_URL: getAbsoluteServerUrl(strapi.config),
237
- ADMIN_URL: getAbsoluteAdminUrl(strapi.config),
261
+ SERVER_URL: strapi.config.get('server.absoluteUrl'),
262
+ ADMIN_URL: strapi.config.get('admin.absoluteUrl'),
238
263
  USER: userInfo,
239
264
  TOKEN: resetPasswordToken,
240
265
  }
@@ -277,55 +302,32 @@ module.exports = {
277
302
  throw new ApplicationError('Register action is currently disabled');
278
303
  }
279
304
 
280
- const { register } = strapi.config.get('plugin.users-permissions');
305
+ const { register } = strapi.config.get('plugin::users-permissions');
281
306
  const alwaysAllowedKeys = ['username', 'password', 'email'];
282
- const userModel = strapi.contentTypes['plugin::users-permissions.user'];
283
- const { attributes } = userModel;
284
-
285
- const nonWritable = getNonWritableAttributes(userModel);
286
307
 
308
+ // Note that we intentionally do not filter allowedFields to allow a project to explicitly accept private or other Strapi field on registration
287
309
  const allowedKeys = compact(
288
- concat(
289
- alwaysAllowedKeys,
290
- isArray(register?.allowedFields)
291
- ? // Note that we do not filter allowedFields in case a user explicitly chooses to allow a private or otherwise omitted field on registration
292
- register.allowedFields // if null or undefined, compact will remove it
293
- : // to prevent breaking changes, if allowedFields is not set in config, we only remove private and known dangerous user schema fields
294
- // TODO V5: allowedFields defaults to [] when undefined and remove this case
295
- Object.keys(attributes).filter(
296
- (key) =>
297
- !nonWritable.includes(key) &&
298
- !attributes[key].private &&
299
- ![
300
- // many of these are included in nonWritable, but we'll list them again to be safe and since we're removing this code in v5 anyway
301
- // Strapi user schema fields
302
- 'confirmed',
303
- 'blocked',
304
- 'confirmationToken',
305
- 'resetPasswordToken',
306
- 'provider',
307
- 'id',
308
- 'role',
309
- // other Strapi fields that might be added
310
- 'createdAt',
311
- 'updatedAt',
312
- 'createdBy',
313
- 'updatedBy',
314
- 'publishedAt', // d&p
315
- 'strapi_reviewWorkflows_stage', // review workflows
316
- ].includes(key)
317
- )
318
- )
310
+ concat(alwaysAllowedKeys, isArray(register?.allowedFields) ? register.allowedFields : [])
319
311
  );
320
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
+
321
321
  const params = {
322
322
  ..._.pick(ctx.request.body, allowedKeys),
323
323
  provider: 'local',
324
324
  };
325
325
 
326
- await validateRegisterBody(params);
326
+ const validations = strapi.config.get('plugin::users-permissions.validationRules');
327
327
 
328
- const role = await strapi
328
+ await validateRegisterBody(params, validations);
329
+
330
+ const role = await strapi.db
329
331
  .query('plugin::users-permissions.role')
330
332
  .findOne({ where: { type: settings.default_role } });
331
333
 
@@ -344,7 +346,7 @@ module.exports = {
344
346
  ],
345
347
  };
346
348
 
347
- const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({
349
+ const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({
348
350
  where: { ...identifierFilter, provider },
349
351
  });
350
352
 
@@ -353,7 +355,7 @@ module.exports = {
353
355
  }
354
356
 
355
357
  if (settings.unique_email) {
356
- const conflictingUserCount = await strapi.query('plugin::users-permissions.user').count({
358
+ const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({
357
359
  where: { ...identifierFilter },
358
360
  });
359
361
 
@@ -378,7 +380,8 @@ module.exports = {
378
380
  try {
379
381
  await getService('user').sendConfirmationEmail(sanitizedUser);
380
382
  } catch (err) {
381
- throw new ApplicationError(err.message);
383
+ strapi.log.error(err);
384
+ throw new ApplicationError('Error sending confirmation email');
382
385
  }
383
386
 
384
387
  return ctx.send({ user: sanitizedUser });
@@ -423,7 +426,7 @@ module.exports = {
423
426
  async sendEmailConfirmation(ctx) {
424
427
  const { email } = await validateSendEmailConfirmationBody(ctx.request.body);
425
428
 
426
- const user = await strapi.query('plugin::users-permissions.user').findOne({
429
+ const user = await strapi.db.query('plugin::users-permissions.user').findOne({
427
430
  where: { email: email.toLowerCase() },
428
431
  });
429
432
 
@@ -446,4 +449,4 @@ module.exports = {
446
449
  sent: true,
447
450
  });
448
451
  },
449
- };
452
+ });