@strapi/plugin-users-permissions 0.0.0-next.f45143c5e2a8a9d85691d0abf79a3f42024a0c71 → 0.0.0-next.f5b09a8e61e059f02784478e27c310c6290be088
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.
- package/.eslintignore +1 -2
- package/.eslintrc +14 -0
- package/admin/src/components/BoundRoute/index.js +5 -3
- package/admin/src/components/FormModal/Input/index.js +6 -3
- package/admin/src/components/FormModal/index.js +13 -10
- package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js +1 -1
- package/admin/src/components/Permissions/PermissionRow/SubCategory.js +26 -5
- package/admin/src/components/Permissions/PermissionRow/index.js +4 -2
- package/admin/src/components/Permissions/index.js +6 -5
- package/admin/src/components/Policies/index.js +3 -2
- package/admin/src/components/UsersPermissions/index.js +8 -5
- package/admin/src/{permissions.js → constants.js} +1 -3
- package/admin/src/contexts/UsersPermissionsContext/index.js +1 -0
- package/admin/src/index.js +19 -28
- package/admin/src/pages/AdvancedSettings/index.js +68 -52
- package/admin/src/pages/AdvancedSettings/utils/schema.js +1 -1
- package/admin/src/pages/EmailTemplates/components/EmailForm.js +14 -13
- package/admin/src/pages/EmailTemplates/components/EmailTable.js +9 -7
- package/admin/src/pages/EmailTemplates/index.js +77 -63
- package/admin/src/pages/EmailTemplates/utils/schema.js +1 -1
- package/admin/src/pages/Providers/index.js +91 -86
- package/admin/src/pages/Providers/utils/forms.js +1 -1
- package/admin/src/pages/Roles/{CreatePage/utils/schema.js → constants.js} +2 -4
- package/admin/src/pages/Roles/hooks/usePlugins.js +78 -0
- package/admin/src/pages/Roles/index.js +17 -11
- package/admin/src/pages/Roles/pages/CreatePage.js +199 -0
- package/admin/src/pages/Roles/pages/EditPage.js +220 -0
- package/admin/src/pages/Roles/{ListPage → pages/ListPage}/components/TableBody.js +46 -15
- package/admin/src/pages/Roles/{ListPage → pages/ListPage}/index.js +48 -47
- package/admin/src/pages/Roles/{ListPage → pages/ListPage}/utils/api.js +3 -4
- package/admin/src/translations/ru.json +50 -26
- package/admin/src/translations/zh-Hans.json +80 -80
- package/admin/src/utils/index.js +1 -2
- package/documentation/content-api.yaml +23 -15
- package/jest.config.front.js +2 -0
- package/package.json +47 -30
- package/packup.config.ts +42 -0
- package/server/bootstrap/index.js +36 -0
- package/server/controllers/auth.js +51 -14
- package/server/controllers/user.js +12 -1
- package/server/middlewares/rateLimit.js +41 -21
- package/server/register.js +7 -1
- package/server/services/providers-registry.js +1 -1
- package/server/strategies/users-permissions.js +1 -8
- package/.eslintrc.js +0 -14
- package/admin/src/hooks/index.js +0 -5
- package/admin/src/hooks/useFetchRole/index.js +0 -64
- package/admin/src/hooks/useFetchRole/reducer.js +0 -31
- package/admin/src/hooks/useForm/index.js +0 -70
- package/admin/src/hooks/useForm/reducer.js +0 -40
- package/admin/src/hooks/usePlugins/index.js +0 -67
- package/admin/src/hooks/usePlugins/init.js +0 -5
- package/admin/src/hooks/usePlugins/reducer.js +0 -34
- package/admin/src/hooks/useRolesList/index.js +0 -63
- package/admin/src/hooks/useRolesList/init.js +0 -5
- package/admin/src/hooks/useRolesList/reducer.js +0 -31
- package/admin/src/pages/AdvancedSettings/utils/api.js +0 -17
- package/admin/src/pages/EmailTemplates/utils/api.js +0 -17
- package/admin/src/pages/Providers/reducer.js +0 -54
- package/admin/src/pages/Providers/utils/api.js +0 -25
- package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
- package/admin/src/pages/Roles/CreatePage/index.js +0 -182
- package/admin/src/pages/Roles/EditPage/index.js +0 -194
- package/admin/src/pages/Roles/EditPage/utils/schema.js +0 -9
- package/admin/src/pages/Roles/ProtectedCreatePage/index.js +0 -12
- package/admin/src/pages/Roles/ProtectedEditPage/index.js +0 -12
- package/admin/src/pages/Roles/ProtectedListPage/index.js +0 -15
- package/admin/src/utils/getRequestURL.js +0 -5
- package/strapi-admin.js +0 -3
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { getFetchClient } from '@strapi/helper-plugin';
|
|
2
|
-
import { getRequestURL } from '../../../../utils';
|
|
3
2
|
|
|
4
3
|
export const fetchData = async (toggleNotification, notifyStatus) => {
|
|
5
4
|
try {
|
|
6
5
|
const { get } = getFetchClient();
|
|
7
|
-
const { data } = await get(
|
|
6
|
+
const { data } = await get('/users-permissions/roles');
|
|
8
7
|
notifyStatus('The roles have loaded successfully');
|
|
9
8
|
|
|
10
9
|
return data;
|
|
@@ -14,14 +13,14 @@ export const fetchData = async (toggleNotification, notifyStatus) => {
|
|
|
14
13
|
message: { id: 'notification.error' },
|
|
15
14
|
});
|
|
16
15
|
|
|
17
|
-
throw new Error(
|
|
16
|
+
throw new Error(err);
|
|
18
17
|
}
|
|
19
18
|
};
|
|
20
19
|
|
|
21
20
|
export const deleteData = async (id, toggleNotification) => {
|
|
22
21
|
try {
|
|
23
22
|
const { del } = getFetchClient();
|
|
24
|
-
await del(
|
|
23
|
+
await del(`/users-permissions/roles/${id}`);
|
|
25
24
|
} catch (error) {
|
|
26
25
|
toggleNotification({
|
|
27
26
|
type: 'warning',
|
|
@@ -2,55 +2,79 @@
|
|
|
2
2
|
"BoundRoute.title": "Связать путь с",
|
|
3
3
|
"EditForm.inputSelect.description.role": "При регистрации пользователи будут иметь выбранную роль.",
|
|
4
4
|
"EditForm.inputSelect.label.role": "Роль по умолчанию для новых пользователей",
|
|
5
|
-
"EditForm.inputToggle.description.email": "Запретить пользователю создавать несколько
|
|
5
|
+
"EditForm.inputToggle.description.email": "Запретить пользователю создавать несколько учётных записей, используя один и тот же адрес электронной почты, у разных поставщиков аутентификации.",
|
|
6
6
|
"EditForm.inputToggle.description.email-confirmation": "Если включено (ON), при регистрации пользователи будут получать письмо для подтверждения адреса электронной почты.",
|
|
7
|
-
"EditForm.inputToggle.description.email-confirmation-redirection": "Укажите URL-адрес для перенаправления после подтверждения адреса электронной почты.",
|
|
8
|
-
"EditForm.inputToggle.description.email-reset-password": "URL-адрес страницы сброса пароля
|
|
9
|
-
"EditForm.inputToggle.description.sign-up": "
|
|
10
|
-
"EditForm.inputToggle.label.email": "Одна
|
|
7
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "Укажите URL-адрес для перенаправления пользователей после подтверждения адреса электронной почты.",
|
|
8
|
+
"EditForm.inputToggle.description.email-reset-password": "URL-адрес страницы для сброса пароля учётной записи пользователя",
|
|
9
|
+
"EditForm.inputToggle.description.sign-up": "Если выключено (OFF), процесс регистрации пользователей запрещен. Никто не может зарегистрироваться, независимо от провайдера.",
|
|
10
|
+
"EditForm.inputToggle.label.email": "Одна учётная запись на один адрес электронной почты",
|
|
11
11
|
"EditForm.inputToggle.label.email-confirmation": "Включить подтверждение по электронной почте",
|
|
12
12
|
"EditForm.inputToggle.label.email-confirmation-redirection": "URL-адрес для перенаправления",
|
|
13
13
|
"EditForm.inputToggle.label.email-reset-password": "Страница сброса пароля",
|
|
14
|
-
"EditForm.inputToggle.label.sign-up": "Включить
|
|
15
|
-
"
|
|
14
|
+
"EditForm.inputToggle.label.sign-up": "Включить регистрации",
|
|
15
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "например: https://yourfrontend.com/email-confirmation-redirection",
|
|
16
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "например: https://yourfrontend.com/reset-password",
|
|
17
|
+
"EditPage.form.roles": "Сведения о роли",
|
|
18
|
+
"Email.template.data.loaded": "Шаблоны автоматических писем для электронной почты были загружены",
|
|
19
|
+
"Email.template.email_confirmation": "Адреса электронной почты с письмом о подтверждении",
|
|
20
|
+
"Email.template.form.edit.label": "Редактировать шаблон",
|
|
21
|
+
"Email.template.table.action.label": "действие",
|
|
22
|
+
"Email.template.table.icon.label": "иконка",
|
|
23
|
+
"Email.template.table.name.label": "название",
|
|
24
|
+
"Form.advancedSettings.data.loaded": "Данные расширенных настроек были загружены",
|
|
16
25
|
"HeaderNav.link.advancedSettings": "Расширенные настройки",
|
|
17
26
|
"HeaderNav.link.emailTemplates": "Шаблоны писем",
|
|
18
27
|
"HeaderNav.link.providers": "Провайдеры",
|
|
19
|
-
"Plugin.permissions.plugins.description": "
|
|
20
|
-
"Plugins.header.description": "
|
|
21
|
-
"Plugins.header.title": "
|
|
22
|
-
"Policies.header.hint": "Выберите действия приложения или плагина и
|
|
28
|
+
"Plugin.permissions.plugins.description": "Определите все разрешенные действия для плагина {name}.",
|
|
29
|
+
"Plugins.header.description": "Ниже перечислены только действия, связанные с путём.",
|
|
30
|
+
"Plugins.header.title": "Разрешения",
|
|
31
|
+
"Policies.header.hint": "Выберите действия приложения или плагина и нажмите на значок шестерёнки, чтобы отобразить связанный путь",
|
|
23
32
|
"Policies.header.title": "Расширенные настройки",
|
|
24
|
-
"PopUpForm.Email.email_templates.inputDescription": "Если вы не
|
|
33
|
+
"PopUpForm.Email.email_templates.inputDescription": "Если вы не уверены, как использовать переменные — {link}",
|
|
25
34
|
"PopUpForm.Email.link.documentation": "ознакомьтесь с нашей документацией.",
|
|
26
|
-
"PopUpForm.Email.options.from.email.label": "
|
|
35
|
+
"PopUpForm.Email.options.from.email.label": "Электронная почта отправителя",
|
|
27
36
|
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
28
37
|
"PopUpForm.Email.options.from.name.label": "Имя отправителя",
|
|
29
38
|
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
30
39
|
"PopUpForm.Email.options.message.label": "Сообщение",
|
|
31
40
|
"PopUpForm.Email.options.object.label": "Тема",
|
|
32
41
|
"PopUpForm.Email.options.object.placeholder": "Пожалуйста, подтвердите свой адрес электронной почты для %APP_NAME%",
|
|
33
|
-
"PopUpForm.Email.options.response_email.label": "
|
|
34
|
-
"PopUpForm.Email.options.response_email.placeholder": "
|
|
35
|
-
"PopUpForm.Providers.enabled.description": "Если
|
|
36
|
-
"PopUpForm.Providers.enabled.label": "
|
|
37
|
-
"PopUpForm.Providers.key.label": "
|
|
42
|
+
"PopUpForm.Email.options.response_email.label": "Электронная почта для ответов",
|
|
43
|
+
"PopUpForm.Email.options.response_email.placeholder": "paul@example.com",
|
|
44
|
+
"PopUpForm.Providers.enabled.description": "Если этот параметр отключен, пользователи не смогут использовать этого поставщика.",
|
|
45
|
+
"PopUpForm.Providers.enabled.label": "Включено",
|
|
46
|
+
"PopUpForm.Providers.key.label": "ID клиента",
|
|
38
47
|
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
39
|
-
"PopUpForm.Providers.redirectURL.front-end.label": "URL-адрес перенаправления
|
|
40
|
-
"PopUpForm.Providers.redirectURL.label": "URL перенаправления, который нужно добавить в {provider} конфигурации приложения",
|
|
48
|
+
"PopUpForm.Providers.redirectURL.front-end.label": "URL-адрес перенаправления на ваше приложение",
|
|
49
|
+
"PopUpForm.Providers.redirectURL.label": "URL-адрес перенаправления, который нужно добавить в {provider} конфигурации приложения",
|
|
41
50
|
"PopUpForm.Providers.secret.label": "Client Secret",
|
|
42
51
|
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
43
|
-
"PopUpForm.Providers.subdomain.label": "
|
|
52
|
+
"PopUpForm.Providers.subdomain.label": "Хост URI (Поддомен)",
|
|
44
53
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
45
54
|
"PopUpForm.header.edit.email-templates": "Редактировать шаблон письма",
|
|
46
55
|
"PopUpForm.header.edit.providers": "Редактировать провайдера",
|
|
56
|
+
"Providers.data.loaded": "Провайдеры были загружены",
|
|
57
|
+
"Providers.status": "Статус",
|
|
58
|
+
"Roles.empty": "У вас пока нет никаких ролей.",
|
|
59
|
+
"Roles.empty.search": "Ни одна роль не соответствует поисковому запросу.",
|
|
47
60
|
"Settings.roles.deleted": "Роль удалена",
|
|
48
61
|
"Settings.roles.edited": "Роль отредактирована",
|
|
49
|
-
"Settings.section-label": "Плагин
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
62
|
+
"Settings.section-label": "Плагин «Пользователи и Разрешения»",
|
|
63
|
+
"components.Input.error.validation.email": "Неверный адрес электронной почты",
|
|
64
|
+
"components.Input.error.validation.json": "Это не соответствует формату JSON",
|
|
65
|
+
"components.Input.error.validation.max": "Значение слишком велико.",
|
|
66
|
+
"components.Input.error.validation.maxLength": "Значение слишком длинное.",
|
|
67
|
+
"components.Input.error.validation.min": "Значение слишком мало.",
|
|
68
|
+
"components.Input.error.validation.minLength": "Значение слишком короткое.",
|
|
69
|
+
"components.Input.error.validation.minSupMax": "Не может быть выше",
|
|
70
|
+
"components.Input.error.validation.regex": "Значение не соответствует регулярному выражению.",
|
|
71
|
+
"components.Input.error.validation.required": "Это значение является обязательным.",
|
|
72
|
+
"components.Input.error.validation.unique": "Это значение уже используется.",
|
|
73
|
+
"notification.success.submit": "Настройки были обновлены",
|
|
74
|
+
"page.title": "Настройки — Роли",
|
|
75
|
+
"plugin.description.long": "Защитите свой API с помощью полноценного процесса аутентификации, основанного на JWT. Этот плагин также имеет настройки стратегии ACL, которые позволяют вам управлять разрешениями между группами пользователей.",
|
|
76
|
+
"plugin.description.short": "Защитите свой API с помощью полноценного процесса аутентификации, основанного на JWT.",
|
|
77
|
+
"plugin.name": "Пользователи и Разрешения",
|
|
54
78
|
"popUpWarning.button.cancel": "Отменить",
|
|
55
79
|
"popUpWarning.button.confirm": "Подтвердить",
|
|
56
80
|
"popUpWarning.title": "Пожалуйста подтвердите",
|
|
@@ -1,82 +1,82 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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.email-reset-password": "应用程序的重置密码页面的网址",
|
|
9
|
+
"EditForm.inputToggle.description.sign-up": "当禁用(关)时,注册过程将被禁止。任何人无论使用任何的供应商都不可以订阅。",
|
|
10
|
+
"EditForm.inputToggle.label.email": "每个电子邮件地址对应一个账户",
|
|
11
|
+
"EditForm.inputToggle.label.email-confirmation": "启用电子邮件确认",
|
|
12
|
+
"EditForm.inputToggle.label.email-confirmation-redirection": "重定向网址",
|
|
13
|
+
"EditForm.inputToggle.label.email-reset-password": "重置密码页面网址",
|
|
14
|
+
"EditForm.inputToggle.label.sign-up": "启用注册",
|
|
15
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如: https://yourfrontend.com/email-confirmation-redirection",
|
|
16
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "例如: https://yourfrontend.com/reset-password",
|
|
17
|
+
"EditPage.form.roles": "角色详情",
|
|
18
|
+
"Email.template.data.loaded": "电子邮件模板已加载",
|
|
19
|
+
"Email.template.email_confirmation": "邮箱地址确认",
|
|
20
|
+
"Email.template.form.edit.label": "编辑模板",
|
|
21
|
+
"Email.template.table.action.label": "操作",
|
|
22
|
+
"Email.template.table.icon.label": "图标",
|
|
23
|
+
"Email.template.table.name.label": "名称",
|
|
24
|
+
"Form.advancedSettings.data.loaded": "高级设置数据已加载",
|
|
25
|
+
"HeaderNav.link.advancedSettings": "高级设置",
|
|
26
|
+
"HeaderNav.link.emailTemplates": "电子邮件模板",
|
|
27
|
+
"HeaderNav.link.providers": "提供商",
|
|
28
|
+
"Plugin.permissions.plugins.description": "定义 {name} 插件所有允许的操作。",
|
|
29
|
+
"Plugins.header.description": "下面只列出路由绑定的操作。",
|
|
30
|
+
"Plugins.header.title": "权限",
|
|
31
|
+
"Policies.header.hint": "选择应用程序或插件对应的操作,然后点击齿轮图标显示绑定的路由",
|
|
32
|
+
"Policies.header.title": "高级设置",
|
|
33
|
+
"PopUpForm.Email.email_templates.inputDescription": "如果你不确定如何使用变量, {link}",
|
|
34
|
+
"PopUpForm.Email.link.documentation": "查看我们的文档",
|
|
35
|
+
"PopUpForm.Email.options.from.email.label": "发件人地址",
|
|
36
|
+
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
37
|
+
"PopUpForm.Email.options.from.name.label": "发件人名称",
|
|
38
|
+
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
39
|
+
"PopUpForm.Email.options.message.label": "消息",
|
|
40
|
+
"PopUpForm.Email.options.object.label": "主题",
|
|
41
|
+
"PopUpForm.Email.options.object.placeholder": "请为%APP_NAME%确认邮箱地址",
|
|
42
|
+
"PopUpForm.Email.options.response_email.label": "回复邮件",
|
|
43
|
+
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
44
|
+
"PopUpForm.Providers.enabled.description": "如果禁用,用户将无法使用此供应商。",
|
|
45
|
+
"PopUpForm.Providers.enabled.label": "启用",
|
|
46
|
+
"PopUpForm.Providers.key.label": "客户端 ID",
|
|
47
|
+
"PopUpForm.Providers.key.placeholder": "文本",
|
|
48
|
+
"PopUpForm.Providers.redirectURL.front-end.label": "重定向网址",
|
|
49
|
+
"PopUpForm.Providers.redirectURL.label": "添加到{provider}应用配置的跳转网址",
|
|
50
|
+
"PopUpForm.Providers.secret.label": "客户端秘钥",
|
|
51
|
+
"PopUpForm.Providers.secret.placeholder": "文本",
|
|
52
|
+
"PopUpForm.Providers.subdomain.label": "主机URI(子域名)",
|
|
53
|
+
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
54
|
+
"PopUpForm.header.edit.email-templates": "编辑电子邮件模版",
|
|
55
|
+
"PopUpForm.header.edit.providers": "编辑提供商",
|
|
56
|
+
"Providers.data.loaded": "提供商已加载",
|
|
57
|
+
"Providers.status": "状态",
|
|
58
|
+
"Roles.empty": "您还没有任何角色。",
|
|
59
|
+
"Roles.empty.search": "没有与搜索相匹配的角色。",
|
|
60
|
+
"Settings.roles.deleted": "角色已被删除",
|
|
61
|
+
"Settings.roles.edited": "角色编辑完成",
|
|
62
|
+
"Settings.section-label": "用户及权限插件",
|
|
63
|
+
"components.Input.error.validation.email": "这是一个无效的电子邮件",
|
|
64
|
+
"components.Input.error.validation.json": "这不符合JSON格式",
|
|
65
|
+
"components.Input.error.validation.max": "值过高。",
|
|
66
|
+
"components.Input.error.validation.maxLength": "值过长。",
|
|
67
|
+
"components.Input.error.validation.min": "值太低。",
|
|
68
|
+
"components.Input.error.validation.minLength": "值太短。",
|
|
69
|
+
"components.Input.error.validation.minSupMax": "不能超过上限",
|
|
70
|
+
"components.Input.error.validation.regex": "该值不符合正则表达式。",
|
|
71
|
+
"components.Input.error.validation.required": "该值为必填项。",
|
|
72
|
+
"components.Input.error.validation.unique": "该值已被使用。",
|
|
73
|
+
"notification.success.submit": "设置已被更新",
|
|
74
|
+
"page.title": "设置 - 角色",
|
|
75
|
+
"plugin.description.long": "使用基于 JWT 的完整身份验证过程来保护 API。这个插件还有一个 ACL 策略,允许你管理用户组之间的权限。",
|
|
76
|
+
"plugin.description.short": "使用基于 JWT 的完整身份验证过程保护 API",
|
|
77
|
+
"plugin.name": "用户及权限插件",
|
|
78
|
+
"popUpWarning.button.cancel": "取消",
|
|
79
|
+
"popUpWarning.button.confirm": "确认",
|
|
80
|
+
"popUpWarning.title": "请确认",
|
|
81
|
+
"popUpWarning.warning.cancel": "你确定你要取消你的修改?"
|
|
82
82
|
}
|
package/admin/src/utils/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { default as cleanPermissions } from './cleanPermissions';
|
|
2
|
-
export { default as getRequestURL } from './getRequestURL';
|
|
3
|
-
export { default as getTrad } from './getTrad';
|
|
4
2
|
export { default as formatPolicies } from './formatPolicies';
|
|
3
|
+
export { default as getTrad } from './getTrad';
|
|
@@ -12,8 +12,16 @@ tags:
|
|
|
12
12
|
url: 'https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html'
|
|
13
13
|
|
|
14
14
|
paths:
|
|
15
|
-
|
|
15
|
+
/connect/{provider}:
|
|
16
16
|
get:
|
|
17
|
+
parameters:
|
|
18
|
+
- name: provider
|
|
19
|
+
in: path
|
|
20
|
+
required: true
|
|
21
|
+
description: Provider name
|
|
22
|
+
schema:
|
|
23
|
+
type: string
|
|
24
|
+
pattern: '.*'
|
|
17
25
|
tags:
|
|
18
26
|
- Users-Permissions - Auth
|
|
19
27
|
summary: Login with a provider
|
|
@@ -85,7 +93,7 @@ paths:
|
|
|
85
93
|
required: true
|
|
86
94
|
responses:
|
|
87
95
|
200:
|
|
88
|
-
description:
|
|
96
|
+
description: Successful registration
|
|
89
97
|
content:
|
|
90
98
|
application/json:
|
|
91
99
|
schema:
|
|
@@ -148,7 +156,7 @@ paths:
|
|
|
148
156
|
type: object
|
|
149
157
|
properties:
|
|
150
158
|
ok:
|
|
151
|
-
type:
|
|
159
|
+
type: string
|
|
152
160
|
enum: [true]
|
|
153
161
|
default:
|
|
154
162
|
description: Error
|
|
@@ -273,7 +281,7 @@ paths:
|
|
|
273
281
|
email:
|
|
274
282
|
type: string
|
|
275
283
|
sent:
|
|
276
|
-
type:
|
|
284
|
+
type: string
|
|
277
285
|
enum: [true]
|
|
278
286
|
default:
|
|
279
287
|
description: Error
|
|
@@ -381,7 +389,7 @@ paths:
|
|
|
381
389
|
type: object
|
|
382
390
|
properties:
|
|
383
391
|
ok:
|
|
384
|
-
type:
|
|
392
|
+
type: string
|
|
385
393
|
enum: [true]
|
|
386
394
|
default:
|
|
387
395
|
description: Error
|
|
@@ -456,7 +464,7 @@ paths:
|
|
|
456
464
|
type: object
|
|
457
465
|
properties:
|
|
458
466
|
ok:
|
|
459
|
-
type:
|
|
467
|
+
type: string
|
|
460
468
|
enum: [true]
|
|
461
469
|
default:
|
|
462
470
|
description: Error
|
|
@@ -485,7 +493,7 @@ paths:
|
|
|
485
493
|
type: object
|
|
486
494
|
properties:
|
|
487
495
|
ok:
|
|
488
|
-
type:
|
|
496
|
+
type: string
|
|
489
497
|
enum: [true]
|
|
490
498
|
default:
|
|
491
499
|
description: Error
|
|
@@ -779,9 +787,11 @@ components:
|
|
|
779
787
|
type:
|
|
780
788
|
type: string
|
|
781
789
|
createdAt:
|
|
782
|
-
type:
|
|
790
|
+
type: string
|
|
791
|
+
format: date-time
|
|
783
792
|
updatedAt:
|
|
784
|
-
type:
|
|
793
|
+
type: string
|
|
794
|
+
format: date-time
|
|
785
795
|
|
|
786
796
|
Users-Permissions-User:
|
|
787
797
|
type: object
|
|
@@ -805,10 +815,12 @@ components:
|
|
|
805
815
|
type: boolean
|
|
806
816
|
example: false
|
|
807
817
|
createdAt:
|
|
808
|
-
type:
|
|
818
|
+
type: string
|
|
819
|
+
format: date-time
|
|
809
820
|
example: '2022-06-02T08:32:06.258Z'
|
|
810
821
|
updatedAt:
|
|
811
|
-
type:
|
|
822
|
+
type: string
|
|
823
|
+
format: date-time
|
|
812
824
|
example: '2022-06-02T08:32:06.267Z'
|
|
813
825
|
|
|
814
826
|
Users-Permissions-UserRegistration:
|
|
@@ -839,10 +851,6 @@ components:
|
|
|
839
851
|
type: boolean
|
|
840
852
|
policy:
|
|
841
853
|
type: string
|
|
842
|
-
|
|
843
|
-
parameters:
|
|
844
|
-
responses:
|
|
845
|
-
examples:
|
|
846
854
|
requestBodies:
|
|
847
855
|
Users-Permissions-RoleRequest:
|
|
848
856
|
required: true
|
package/jest.config.front.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/plugin-users-permissions",
|
|
3
|
-
"version": "0.0.0-next.
|
|
3
|
+
"version": "0.0.0-next.f5b09a8e61e059f02784478e27c310c6290be088",
|
|
4
4
|
"description": "Protect your API with a full-authentication process based on JWT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,58 +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": "./strapi-server.js",
|
|
31
|
+
"require": "./strapi-server.js",
|
|
32
|
+
"default": "./strapi-server.js"
|
|
33
|
+
},
|
|
34
|
+
"./package.json": "./package.json"
|
|
35
|
+
},
|
|
22
36
|
"scripts": {
|
|
23
|
-
"
|
|
24
|
-
"
|
|
37
|
+
"build": "pack-up build",
|
|
38
|
+
"clean": "run -T rimraf dist",
|
|
39
|
+
"lint": "run -T eslint .",
|
|
25
40
|
"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
41
|
"test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
|
|
42
|
+
"test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
|
|
28
43
|
"test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
|
|
29
|
-
"
|
|
44
|
+
"test:unit": "run -T jest",
|
|
45
|
+
"test:unit:watch": "run -T jest --watch",
|
|
46
|
+
"watch": "pack-up watch"
|
|
30
47
|
},
|
|
31
48
|
"dependencies": {
|
|
32
|
-
"@strapi/design-system": "1.
|
|
33
|
-
"@strapi/helper-plugin": "0.0.0-next.
|
|
34
|
-
"@strapi/icons": "1.
|
|
35
|
-
"@strapi/utils": "0.0.0-next.
|
|
49
|
+
"@strapi/design-system": "1.13.0",
|
|
50
|
+
"@strapi/helper-plugin": "0.0.0-next.f5b09a8e61e059f02784478e27c310c6290be088",
|
|
51
|
+
"@strapi/icons": "1.13.0",
|
|
52
|
+
"@strapi/utils": "0.0.0-next.f5b09a8e61e059f02784478e27c310c6290be088",
|
|
36
53
|
"bcryptjs": "2.4.3",
|
|
37
|
-
"formik": "2.
|
|
54
|
+
"formik": "2.4.0",
|
|
38
55
|
"grant-koa": "5.4.8",
|
|
39
56
|
"immer": "9.0.19",
|
|
40
57
|
"jsonwebtoken": "9.0.0",
|
|
41
58
|
"jwk-to-pem": "2.0.5",
|
|
42
|
-
"koa": "
|
|
59
|
+
"koa": "2.13.4",
|
|
43
60
|
"koa2-ratelimit": "^1.1.2",
|
|
44
61
|
"lodash": "4.17.21",
|
|
45
|
-
"prop-types": "^15.
|
|
62
|
+
"prop-types": "^15.8.1",
|
|
46
63
|
"purest": "4.0.2",
|
|
47
|
-
"react-intl": "6.
|
|
48
|
-
"react-query": "3.
|
|
49
|
-
"react-redux": "8.
|
|
64
|
+
"react-intl": "6.4.1",
|
|
65
|
+
"react-query": "3.39.3",
|
|
66
|
+
"react-redux": "8.1.1",
|
|
50
67
|
"url-join": "4.0.1",
|
|
51
|
-
"yup": "
|
|
68
|
+
"yup": "0.32.9"
|
|
52
69
|
},
|
|
53
70
|
"devDependencies": {
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@testing-library/
|
|
71
|
+
"@strapi/pack-up": "0.0.0-next.f5b09a8e61e059f02784478e27c310c6290be088",
|
|
72
|
+
"@strapi/strapi": "0.0.0-next.f5b09a8e61e059f02784478e27c310c6290be088",
|
|
73
|
+
"@testing-library/dom": "9.2.0",
|
|
74
|
+
"@testing-library/react": "14.0.0",
|
|
57
75
|
"@testing-library/user-event": "14.4.3",
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"react": "^
|
|
61
|
-
"react-dom": "^17.0.2",
|
|
76
|
+
"msw": "1.3.0",
|
|
77
|
+
"react": "^18.2.0",
|
|
78
|
+
"react-dom": "^18.2.0",
|
|
62
79
|
"react-router-dom": "5.3.4",
|
|
63
|
-
"react-test-renderer": "^17.0.2",
|
|
64
80
|
"styled-components": "5.3.3"
|
|
65
81
|
},
|
|
66
82
|
"peerDependencies": {
|
|
67
|
-
"
|
|
68
|
-
"react
|
|
69
|
-
"react-
|
|
70
|
-
"
|
|
83
|
+
"@strapi/strapi": "4.0.0",
|
|
84
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
85
|
+
"react-dom": "^17.0.0 || ^18.0.0",
|
|
86
|
+
"react-router-dom": "5.3.4",
|
|
87
|
+
"styled-components": "5.3.3"
|
|
71
88
|
},
|
|
72
89
|
"engines": {
|
|
73
|
-
"node": ">=
|
|
90
|
+
"node": ">=18.0.0 <=20.x.x",
|
|
74
91
|
"npm": ">=6.0.0"
|
|
75
92
|
},
|
|
76
93
|
"strapi": {
|
|
@@ -80,5 +97,5 @@
|
|
|
80
97
|
"required": true,
|
|
81
98
|
"kind": "plugin"
|
|
82
99
|
},
|
|
83
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "f5b09a8e61e059f02784478e27c310c6290be088"
|
|
84
101
|
}
|
package/packup.config.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Config, defineConfig } from '@strapi/pack-up';
|
|
2
|
+
import { transformWithEsbuild } from 'vite';
|
|
3
|
+
|
|
4
|
+
const config: Config = defineConfig({
|
|
5
|
+
bundles: [
|
|
6
|
+
{
|
|
7
|
+
source: './admin/src/index.js',
|
|
8
|
+
import: './dist/admin/index.mjs',
|
|
9
|
+
require: './dist/admin/index.js',
|
|
10
|
+
runtime: 'web',
|
|
11
|
+
},
|
|
12
|
+
],
|
|
13
|
+
dist: './dist',
|
|
14
|
+
/**
|
|
15
|
+
* Because we're exporting a server & client package
|
|
16
|
+
* which have different runtimes we want to ignore
|
|
17
|
+
* what they look like in the package.json
|
|
18
|
+
*/
|
|
19
|
+
exports: {},
|
|
20
|
+
plugins: [
|
|
21
|
+
{
|
|
22
|
+
name: 'treat-js-files-as-jsx',
|
|
23
|
+
async transform(code, id) {
|
|
24
|
+
/**
|
|
25
|
+
* Matches all files in src/ and ee/ that end with .js
|
|
26
|
+
*/
|
|
27
|
+
if (!id.match(/src\/.*\.js$/) && !id.match(/ee\/.*\.js$/)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Use the exposed transform from vite, instead of directly
|
|
32
|
+
// transforming with esbuild
|
|
33
|
+
return transformWithEsbuild(code, id, {
|
|
34
|
+
loader: 'tsx',
|
|
35
|
+
jsx: 'automatic',
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export default config;
|