@strapi/plugin-users-permissions 0.0.0-4fc90398602f

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 (168) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1 -0
  3. package/admin/src/components/BoundRoute/getMethodColor.js +41 -0
  4. package/admin/src/components/BoundRoute/index.js +72 -0
  5. package/admin/src/components/FormModal/Input/index.js +121 -0
  6. package/admin/src/components/FormModal/index.js +121 -0
  7. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js +30 -0
  8. package/admin/src/components/Permissions/PermissionRow/SubCategory.js +114 -0
  9. package/admin/src/components/Permissions/PermissionRow/index.js +53 -0
  10. package/admin/src/components/Permissions/index.js +56 -0
  11. package/admin/src/components/Permissions/init.js +9 -0
  12. package/admin/src/components/Permissions/reducer.js +27 -0
  13. package/admin/src/components/Policies/index.js +60 -0
  14. package/admin/src/components/UsersPermissions/index.js +94 -0
  15. package/admin/src/components/UsersPermissions/init.js +10 -0
  16. package/admin/src/components/UsersPermissions/reducer.js +60 -0
  17. package/admin/src/contexts/UsersPermissionsContext/index.js +17 -0
  18. package/admin/src/hooks/index.js +5 -0
  19. package/admin/src/hooks/useFetchRole/index.js +64 -0
  20. package/admin/src/hooks/useFetchRole/reducer.js +31 -0
  21. package/admin/src/hooks/useForm/index.js +70 -0
  22. package/admin/src/hooks/useForm/reducer.js +40 -0
  23. package/admin/src/hooks/usePlugins/index.js +65 -0
  24. package/admin/src/hooks/usePlugins/init.js +5 -0
  25. package/admin/src/hooks/usePlugins/reducer.js +34 -0
  26. package/admin/src/hooks/useRolesList/index.js +63 -0
  27. package/admin/src/hooks/useRolesList/init.js +5 -0
  28. package/admin/src/hooks/useRolesList/reducer.js +31 -0
  29. package/admin/src/index.js +123 -0
  30. package/admin/src/pages/AdvancedSettings/index.js +238 -0
  31. package/admin/src/pages/AdvancedSettings/utils/api.js +13 -0
  32. package/admin/src/pages/AdvancedSettings/utils/layout.js +96 -0
  33. package/admin/src/pages/AdvancedSettings/utils/schema.js +19 -0
  34. package/admin/src/pages/EmailTemplates/components/EmailForm.js +173 -0
  35. package/admin/src/pages/EmailTemplates/components/EmailTable.js +121 -0
  36. package/admin/src/pages/EmailTemplates/index.js +162 -0
  37. package/admin/src/pages/EmailTemplates/utils/api.js +13 -0
  38. package/admin/src/pages/EmailTemplates/utils/schema.js +22 -0
  39. package/admin/src/pages/Providers/index.js +274 -0
  40. package/admin/src/pages/Providers/reducer.js +54 -0
  41. package/admin/src/pages/Providers/utils/api.js +21 -0
  42. package/admin/src/pages/Providers/utils/createProvidersArray.js +21 -0
  43. package/admin/src/pages/Providers/utils/forms.js +244 -0
  44. package/admin/src/pages/Roles/CreatePage/index.js +177 -0
  45. package/admin/src/pages/Roles/CreatePage/utils/schema.js +9 -0
  46. package/admin/src/pages/Roles/EditPage/index.js +190 -0
  47. package/admin/src/pages/Roles/EditPage/utils/schema.js +9 -0
  48. package/admin/src/pages/Roles/ListPage/components/TableBody.js +96 -0
  49. package/admin/src/pages/Roles/ListPage/index.js +216 -0
  50. package/admin/src/pages/Roles/ListPage/utils/api.js +28 -0
  51. package/admin/src/pages/Roles/ProtectedCreatePage/index.js +12 -0
  52. package/admin/src/pages/Roles/ProtectedEditPage/index.js +12 -0
  53. package/admin/src/pages/Roles/ProtectedListPage/index.js +15 -0
  54. package/admin/src/pages/Roles/index.js +27 -0
  55. package/admin/src/permissions.js +31 -0
  56. package/admin/src/pluginId.js +5 -0
  57. package/admin/src/translations/ar.json +40 -0
  58. package/admin/src/translations/cs.json +46 -0
  59. package/admin/src/translations/de.json +58 -0
  60. package/admin/src/translations/dk.json +83 -0
  61. package/admin/src/translations/en.json +83 -0
  62. package/admin/src/translations/es.json +83 -0
  63. package/admin/src/translations/fr.json +46 -0
  64. package/admin/src/translations/id.json +58 -0
  65. package/admin/src/translations/it.json +58 -0
  66. package/admin/src/translations/ja.json +44 -0
  67. package/admin/src/translations/ko.json +83 -0
  68. package/admin/src/translations/ms.json +45 -0
  69. package/admin/src/translations/nl.json +44 -0
  70. package/admin/src/translations/pl.json +83 -0
  71. package/admin/src/translations/pt-BR.json +40 -0
  72. package/admin/src/translations/pt.json +44 -0
  73. package/admin/src/translations/ru.json +58 -0
  74. package/admin/src/translations/sk.json +46 -0
  75. package/admin/src/translations/sv.json +58 -0
  76. package/admin/src/translations/th.json +56 -0
  77. package/admin/src/translations/tr.json +44 -0
  78. package/admin/src/translations/uk.json +45 -0
  79. package/admin/src/translations/vi.json +46 -0
  80. package/admin/src/translations/zh-Hans.json +62 -0
  81. package/admin/src/translations/zh.json +44 -0
  82. package/admin/src/utils/axiosInstance.js +36 -0
  83. package/admin/src/utils/cleanPermissions.js +25 -0
  84. package/admin/src/utils/formatPluginName.js +26 -0
  85. package/admin/src/utils/formatPolicies.js +8 -0
  86. package/admin/src/utils/getRequestURL.js +5 -0
  87. package/admin/src/utils/getTrad.js +5 -0
  88. package/admin/src/utils/index.js +5 -0
  89. package/documentation/content-api.yaml +848 -0
  90. package/jest.config.front.js +10 -0
  91. package/package.json +60 -0
  92. package/server/bootstrap/grant-config.js +123 -0
  93. package/server/bootstrap/index.js +133 -0
  94. package/server/bootstrap/users-permissions-actions.js +80 -0
  95. package/server/config.js +23 -0
  96. package/server/content-types/index.js +11 -0
  97. package/server/content-types/permission/index.js +34 -0
  98. package/server/content-types/role/index.js +51 -0
  99. package/server/content-types/user/index.js +72 -0
  100. package/server/content-types/user/schema-config.js +15 -0
  101. package/server/controllers/auth.js +398 -0
  102. package/server/controllers/content-manager-user.js +175 -0
  103. package/server/controllers/index.js +17 -0
  104. package/server/controllers/permissions.js +26 -0
  105. package/server/controllers/role.js +77 -0
  106. package/server/controllers/settings.js +85 -0
  107. package/server/controllers/user.js +198 -0
  108. package/server/controllers/validation/auth.js +57 -0
  109. package/server/controllers/validation/email-template.js +50 -0
  110. package/server/controllers/validation/user.js +26 -0
  111. package/server/graphql/index.js +44 -0
  112. package/server/graphql/mutations/auth/change-password.js +38 -0
  113. package/server/graphql/mutations/auth/email-confirmation.js +39 -0
  114. package/server/graphql/mutations/auth/forgot-password.js +35 -0
  115. package/server/graphql/mutations/auth/login.js +35 -0
  116. package/server/graphql/mutations/auth/register.js +36 -0
  117. package/server/graphql/mutations/auth/reset-password.js +38 -0
  118. package/server/graphql/mutations/crud/role/create-role.js +34 -0
  119. package/server/graphql/mutations/crud/role/delete-role.js +25 -0
  120. package/server/graphql/mutations/crud/role/update-role.js +35 -0
  121. package/server/graphql/mutations/crud/user/create-user.js +45 -0
  122. package/server/graphql/mutations/crud/user/delete-user.js +39 -0
  123. package/server/graphql/mutations/crud/user/update-user.js +46 -0
  124. package/server/graphql/mutations/index.js +43 -0
  125. package/server/graphql/queries/index.js +13 -0
  126. package/server/graphql/queries/me.js +17 -0
  127. package/server/graphql/resolvers-configs.js +42 -0
  128. package/server/graphql/types/create-role-payload.js +11 -0
  129. package/server/graphql/types/delete-role-payload.js +11 -0
  130. package/server/graphql/types/index.js +21 -0
  131. package/server/graphql/types/login-input.js +13 -0
  132. package/server/graphql/types/login-payload.js +12 -0
  133. package/server/graphql/types/me-role.js +14 -0
  134. package/server/graphql/types/me.js +16 -0
  135. package/server/graphql/types/password-payload.js +11 -0
  136. package/server/graphql/types/register-input.js +13 -0
  137. package/server/graphql/types/update-role-payload.js +11 -0
  138. package/server/graphql/utils.js +27 -0
  139. package/server/index.js +21 -0
  140. package/server/middlewares/index.js +7 -0
  141. package/server/middlewares/rateLimit.js +27 -0
  142. package/server/register.js +23 -0
  143. package/server/routes/admin/index.js +10 -0
  144. package/server/routes/admin/permissions.js +20 -0
  145. package/server/routes/admin/role.js +79 -0
  146. package/server/routes/admin/settings.js +95 -0
  147. package/server/routes/content-api/auth.js +82 -0
  148. package/server/routes/content-api/index.js +11 -0
  149. package/server/routes/content-api/permissions.js +9 -0
  150. package/server/routes/content-api/role.js +29 -0
  151. package/server/routes/content-api/user.js +60 -0
  152. package/server/routes/index.js +6 -0
  153. package/server/services/index.js +17 -0
  154. package/server/services/jwt.js +55 -0
  155. package/server/services/providers-registry.js +292 -0
  156. package/server/services/providers.js +115 -0
  157. package/server/services/role.js +177 -0
  158. package/server/services/user.js +140 -0
  159. package/server/services/users-permissions.js +236 -0
  160. package/server/strategies/users-permissions.js +102 -0
  161. package/server/utils/index.d.ts +16 -0
  162. package/server/utils/index.js +12 -0
  163. package/server/utils/sanitize/index.js +9 -0
  164. package/server/utils/sanitize/sanitizers.js +19 -0
  165. package/server/utils/sanitize/visitors/index.js +5 -0
  166. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +11 -0
  167. package/strapi-admin.js +3 -0
  168. package/strapi-server.js +3 -0
@@ -0,0 +1,62 @@
1
+ {
2
+ "BoundRoute.title": "绑定路由到",
3
+ "EditForm.inputSelect.description.role": "新验证身份的用户将被赋予所选角色。",
4
+ "EditForm.inputSelect.label.role": "认证用户的默认角色",
5
+ "EditForm.inputToggle.description.email": "不允许用户使用不同的认证提供者(绑定的相同的电子邮件地址)来创建多个帐户。",
6
+ "EditForm.inputToggle.description.email-confirmation": "启用(ON)后,新注册的用户会收到一封确认电子邮件。",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "确认您的电子邮件后,选择将您重定向到的位置。",
8
+ "EditForm.inputToggle.description.email-reset-password": "应用程序的重置密码页面的 URL",
9
+ "EditForm.inputToggle.description.sign-up": "当禁用(OFF)时,注册过程将被禁止。任何人无论使用任何的供应商都不可以订阅。",
10
+ "EditForm.inputToggle.label.email": "每个电子邮件地址一个帐户",
11
+ "EditForm.inputToggle.label.email-confirmation": "启用电子邮件确认",
12
+ "EditForm.inputToggle.label.email-confirmation-redirection": "重定向 URL",
13
+ "EditForm.inputToggle.label.email-reset-password": "重置密码页面 URL",
14
+ "EditForm.inputToggle.label.sign-up": "启用注册",
15
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如: https://yourfrontend.com/reset-password",
16
+ "EditForm.inputToggle.placeholder.email-reset-password": "例如: https://yourfrontend.com/reset-password",
17
+ "EditPage.form.roles": "角色详情",
18
+ "Email.template.email_confirmation": "邮箱地址确认",
19
+ "HeaderNav.link.advancedSettings": "高级设置",
20
+ "HeaderNav.link.emailTemplates": "电子邮件模板",
21
+ "HeaderNav.link.providers": "提供者",
22
+ "Plugin.permissions.plugins.description": "定义 {name} 插件所有允许的操作。",
23
+ "Plugins.header.description": "下面只列出路由绑定的操作。",
24
+ "Plugins.header.title": "权限",
25
+ "Policies.header.hint": "选择应用程序或插件的操作,然后点击 COG 图标显示绑定的路由",
26
+ "Policies.header.title": "高级设置",
27
+ "PopUpForm.Email.email_templates.inputDescription": "如果你不确定如何使用变量, {link}",
28
+ "PopUpForm.Email.link.documentation": "查看我们的文档",
29
+ "PopUpForm.Email.options.from.email.label": "发件人地址",
30
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
31
+ "PopUpForm.Email.options.from.name.label": "发件人名称",
32
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
33
+ "PopUpForm.Email.options.message.label": "消息",
34
+ "PopUpForm.Email.options.object.label": "主题",
35
+ "PopUpForm.Email.options.object.placeholder": "请为%APP_NAME%确认邮箱地址",
36
+ "PopUpForm.Email.options.response_email.label": "回复邮件",
37
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
38
+ "PopUpForm.Providers.enabled.description": "如果禁用,用户将无法使用此供应商。",
39
+ "PopUpForm.Providers.enabled.label": "启用",
40
+ "PopUpForm.Providers.key.label": "客户端 ID",
41
+ "PopUpForm.Providers.key.placeholder": "文本",
42
+ "PopUpForm.Providers.redirectURL.front-end.label": "重定向 URL",
43
+ "PopUpForm.Providers.redirectURL.label": "添加到{provider}应用配置的跳转URL",
44
+ "PopUpForm.Providers.secret.label": "客户端秘钥",
45
+ "PopUpForm.Providers.secret.placeholder": "文本",
46
+ "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
47
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
48
+ "PopUpForm.header.edit.email-templates": "编辑电子邮件模版",
49
+ "PopUpForm.header.edit.providers": "编辑提供商",
50
+ "Settings.roles.deleted": "角色已被删除",
51
+ "Settings.roles.edited": "角色编辑完成",
52
+ "Settings.section-label": "用户及权限插件",
53
+ "notification.success.submit": "设置已被更新",
54
+ "page.title": "设置 - 角色",
55
+ "plugin.description.long": "使用基于 JWT 的完整身份验证过程来保护 API。这个插件还有一个 ACL 策略,允许你管理用户组之间的权限。",
56
+ "plugin.description.short": "使用基于 JWT 的完整身份验证过程保护 API",
57
+ "plugin.name": "角色及权限",
58
+ "popUpWarning.button.cancel": "取消",
59
+ "popUpWarning.button.confirm": "确认",
60
+ "popUpWarning.title": "请确认",
61
+ "popUpWarning.warning.cancel": "你确定你要取消你的修改?"
62
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "BoundRoute.title": "綁定路徑到",
3
+ "EditForm.inputSelect.description.role": "將新的驗證使用者加入此身份。",
4
+ "EditForm.inputSelect.label.role": "驗證使用者預設身份",
5
+ "EditForm.inputToggle.description.email": "禁止使用者使用同一個電子郵件地址 + 不同的驗證方式註冊多個帳號",
6
+ "EditForm.inputToggle.description.email-confirmation": "當啟用後,新註冊的使用者將會收到一封認證郵件。",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "認證完後後,使用者被重新導向的網址。",
8
+ "EditForm.inputToggle.description.sign-up": "當停用後,不論使用任何驗證方式使用者將無法註冊。",
9
+ "EditForm.inputToggle.label.email": "電子郵件地址單一帳號限制",
10
+ "EditForm.inputToggle.label.email-confirmation": "啟用電子郵件地址驗證",
11
+ "EditForm.inputToggle.label.email-confirmation-redirection": "重新導向網址",
12
+ "EditForm.inputToggle.label.sign-up": "啟用註冊",
13
+ "HeaderNav.link.advancedSettings": "進階設定",
14
+ "HeaderNav.link.emailTemplates": "郵件範本",
15
+ "HeaderNav.link.providers": "驗證方式",
16
+ "Plugin.permissions.plugins.description": "為 {name} 擴充功能定義所有可用的操作",
17
+ "Plugins.header.description": "只有綁定路徑的操作會顯示在下方",
18
+ "Plugins.header.title": "權限",
19
+ "Policies.header.hint": "選取應用程式或擴充功能的操作然後點擊齒輪圖示以顯示綁定路徑",
20
+ "Policies.header.title": "進階設定",
21
+ "PopUpForm.Email.email_templates.inputDescription": "如果您不確定要怎麼使用變數,請 {link}",
22
+ "PopUpForm.Email.options.from.email.label": "寄件人地址",
23
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
24
+ "PopUpForm.Email.options.from.name.label": "寄件人名稱",
25
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
26
+ "PopUpForm.Email.options.message.label": "訊息",
27
+ "PopUpForm.Email.options.object.label": "主旨",
28
+ "PopUpForm.Email.options.response_email.label": "回覆地址",
29
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
30
+ "PopUpForm.Providers.enabled.description": "如果停用,使用者將無法使用這個驗證方式",
31
+ "PopUpForm.Providers.enabled.label": "啟用",
32
+ "PopUpForm.Providers.key.label": "客戶端 ID",
33
+ "PopUpForm.Providers.key.placeholder": "TEXT",
34
+ "PopUpForm.Providers.redirectURL.front-end.label": "您應用程式的前端頁面網址",
35
+ "PopUpForm.Providers.secret.label": "客戶端密鑰",
36
+ "PopUpForm.Providers.secret.placeholder": "TEXT",
37
+ "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
38
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
39
+ "PopUpForm.header.edit.email-templates": "編輯郵件範本",
40
+ "notification.success.submit": "設定已更新",
41
+ "plugin.description.long": "使用 JWT 認證保護您的 API。這個擴充功能也使用 ACL 來讓你管理不同群組使用者的權限。",
42
+ "plugin.description.short": "使用 JWT 認證保護您的 API",
43
+ "plugin.name": "身份與權限"
44
+ }
@@ -0,0 +1,36 @@
1
+ import axios from 'axios';
2
+ import { auth } from '@strapi/helper-plugin';
3
+
4
+ const instance = axios.create({
5
+ baseURL: process.env.STRAPI_ADMIN_BACKEND_URL,
6
+ });
7
+
8
+ instance.interceptors.request.use(
9
+ async (config) => {
10
+ config.headers = {
11
+ Authorization: `Bearer ${auth.getToken()}`,
12
+ Accept: 'application/json',
13
+ 'Content-Type': 'application/json',
14
+ };
15
+
16
+ return config;
17
+ },
18
+ (error) => {
19
+ Promise.reject(error);
20
+ }
21
+ );
22
+
23
+ instance.interceptors.response.use(
24
+ (response) => response,
25
+ (error) => {
26
+ // whatever you want to do with the error
27
+ if (error.response?.status === 401) {
28
+ auth.clearAppStorage();
29
+ window.location.reload();
30
+ }
31
+
32
+ throw error;
33
+ }
34
+ );
35
+
36
+ export default instance;
@@ -0,0 +1,25 @@
1
+ import { isEmpty } from 'lodash';
2
+
3
+ const cleanPermissions = (permissions) =>
4
+ Object.keys(permissions).reduce((acc, current) => {
5
+ const currentPermission = permissions[current].controllers;
6
+ const cleanedControllers = Object.keys(currentPermission).reduce((acc2, curr) => {
7
+ if (isEmpty(currentPermission[curr])) {
8
+ return acc2;
9
+ }
10
+
11
+ acc2[curr] = currentPermission[curr];
12
+
13
+ return acc2;
14
+ }, {});
15
+
16
+ if (isEmpty(cleanedControllers)) {
17
+ return acc;
18
+ }
19
+
20
+ acc[current] = { controllers: cleanedControllers };
21
+
22
+ return acc;
23
+ }, {});
24
+
25
+ export default cleanPermissions;
@@ -0,0 +1,26 @@
1
+ import upperFirst from 'lodash/upperFirst';
2
+
3
+ function formatPluginName(pluginSlug) {
4
+ switch (pluginSlug) {
5
+ case 'application':
6
+ return 'Application';
7
+ case 'plugin::content-manager':
8
+ return 'Content manager';
9
+ case 'plugin::content-type-builder':
10
+ return 'Content types builder';
11
+ case 'plugin::documentation':
12
+ return 'Documentation';
13
+ case 'plugin::email':
14
+ return 'Email';
15
+ case 'plugin::i18n':
16
+ return 'i18n';
17
+ case 'plugin::upload':
18
+ return 'Upload';
19
+ case 'plugin::users-permissions':
20
+ return 'Users-permissions';
21
+ default:
22
+ return upperFirst(pluginSlug.replace('api::', '').replace('plugin::', ''));
23
+ }
24
+ }
25
+
26
+ export default formatPluginName;
@@ -0,0 +1,8 @@
1
+ const formatPolicies = (policies) =>
2
+ policies.reduce((acc, current) => {
3
+ acc.push({ label: current, value: current });
4
+
5
+ return acc;
6
+ }, []);
7
+
8
+ export default formatPolicies;
@@ -0,0 +1,5 @@
1
+ import pluginId from '../pluginId';
2
+
3
+ const getRequestURL = (endPoint) => `/${pluginId}/${endPoint}`;
4
+
5
+ export default getRequestURL;
@@ -0,0 +1,5 @@
1
+ import pluginId from '../pluginId';
2
+
3
+ const getTrad = (id) => `${pluginId}.${id}`;
4
+
5
+ export default getTrad;
@@ -0,0 +1,5 @@
1
+ export { default as axiosInstance } from './axiosInstance';
2
+ export { default as cleanPermissions } from './cleanPermissions';
3
+ export { default as getRequestURL } from './getRequestURL';
4
+ export { default as getTrad } from './getTrad';
5
+ export { default as formatPolicies } from './formatPolicies';