@strapi/plugin-users-permissions 5.48.1 → 5.50.0
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/.eslintrc.cjs +1 -0
- package/admin/src/pages/AdvancedSettings/index.jsx +1 -1
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +1 -1
- package/admin/src/translations/ja.json +46 -7
- package/dist/admin/components/BoundRoute/index.js +12 -6
- package/dist/admin/components/BoundRoute/index.js.map +1 -1
- package/dist/admin/components/FormModal/Input/index.js +25 -21
- package/dist/admin/components/FormModal/Input/index.js.map +1 -1
- package/dist/admin/components/FormModal/index.js +14 -10
- package/dist/admin/components/FormModal/index.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +8 -3
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.js +9 -4
- package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
- package/dist/admin/components/Policies/index.js +9 -3
- package/dist/admin/components/Policies/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/index.js +6 -2
- package/dist/admin/components/UsersPermissions/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/reducer.js +10 -4
- package/dist/admin/components/UsersPermissions/reducer.js.map +1 -1
- package/dist/admin/contexts/UsersPermissionsContext/index.js +6 -2
- package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.js +1 -1
- package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.mjs +1 -1
- package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
- package/dist/admin/pages/AdvancedSettings/utils/schema.js +3 -2
- package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js +17 -13
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailTable.js +6 -2
- package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/index.js +3 -2
- package/dist/admin/pages/EmailTemplates/index.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/utils/schema.js +3 -2
- package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -1
- package/dist/admin/pages/Providers/index.js +7 -3
- package/dist/admin/pages/Providers/index.js.map +1 -1
- package/dist/admin/pages/Providers/utils/forms.js +3 -2
- package/dist/admin/pages/Providers/utils/forms.js.map +1 -1
- package/dist/admin/pages/Roles/constants.js +3 -2
- package/dist/admin/pages/Roles/constants.js.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js +3 -2
- package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js +3 -2
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +9 -5
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +46 -7
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +46 -7
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/utils/cleanPermissions.js +6 -2
- package/dist/admin/utils/cleanPermissions.js.map +1 -1
- package/dist/admin/utils/formatPluginName.js +5 -1
- package/dist/admin/utils/formatPluginName.js.map +1 -1
- package/dist/server/bootstrap/index.js +7 -2
- package/dist/server/bootstrap/index.js.map +1 -1
- package/dist/server/controllers/auth.js +144 -117
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +132 -113
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/controllers/content-manager-user.js +8 -3
- package/dist/server/controllers/content-manager-user.js.map +1 -1
- package/dist/server/controllers/permissions.js +5 -1
- package/dist/server/controllers/permissions.js.map +1 -1
- package/dist/server/controllers/role.js +7 -2
- package/dist/server/controllers/role.js.map +1 -1
- package/dist/server/controllers/settings.js +7 -2
- package/dist/server/controllers/settings.js.map +1 -1
- package/dist/server/controllers/user.js +7 -2
- package/dist/server/controllers/user.js.map +1 -1
- package/dist/server/controllers/validation/auth.js +5 -1
- package/dist/server/controllers/validation/auth.js.map +1 -1
- package/dist/server/controllers/validation/email-template.js +7 -2
- package/dist/server/controllers/validation/email-template.js.map +1 -1
- package/dist/server/controllers/validation/user.js +21 -10
- package/dist/server/controllers/validation/user.js.map +1 -1
- package/dist/server/controllers/validation/user.mjs +16 -9
- package/dist/server/controllers/validation/user.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.js +5 -1
- package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.js +5 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js +5 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/login.js +5 -1
- package/dist/server/graphql/mutations/auth/login.js.map +1 -1
- package/dist/server/graphql/mutations/auth/register.js +5 -1
- package/dist/server/graphql/mutations/auth/register.js.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.js +5 -1
- package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
- package/dist/server/graphql/mutations/crud/role/create-role.js +5 -1
- package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/create-user.js +5 -1
- package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/update-user.js +5 -1
- package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -1
- package/dist/server/graphql/utils.js +5 -1
- package/dist/server/graphql/utils.js.map +1 -1
- package/dist/server/middlewares/rateLimit.js +11 -4
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/register.js +7 -2
- package/dist/server/register.js.map +1 -1
- package/dist/server/routes/content-api/auth.js +16 -0
- package/dist/server/routes/content-api/auth.js.map +1 -1
- package/dist/server/routes/content-api/auth.mjs +16 -0
- package/dist/server/routes/content-api/auth.mjs.map +1 -1
- package/dist/server/routes/content-api/index.js +5 -1
- package/dist/server/routes/content-api/index.js.map +1 -1
- package/dist/server/routes/content-api/user.js +5 -1
- package/dist/server/routes/content-api/user.js.map +1 -1
- package/dist/server/routes/content-api/validation.js +36 -4
- package/dist/server/routes/content-api/validation.js.map +1 -1
- package/dist/server/routes/content-api/validation.mjs +29 -2
- package/dist/server/routes/content-api/validation.mjs.map +1 -1
- package/dist/server/services/jwt.js +15 -8
- package/dist/server/services/jwt.js.map +1 -1
- package/dist/server/services/jwt.mjs +8 -6
- package/dist/server/services/jwt.mjs.map +1 -1
- package/dist/server/services/providers-registry.js +13 -5
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers.js +7 -2
- package/dist/server/services/providers.js.map +1 -1
- package/dist/server/services/role.js +7 -2
- package/dist/server/services/role.js.map +1 -1
- package/dist/server/services/user.js +13 -5
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/users-permissions.js +19 -4
- package/dist/server/services/users-permissions.js.map +1 -1
- package/dist/server/services/users-permissions.mjs +8 -0
- package/dist/server/services/users-permissions.mjs.map +1 -1
- package/dist/server/strategies/users-permissions.js +15 -3
- package/dist/server/strategies/users-permissions.js.map +1 -1
- package/dist/server/strategies/users-permissions.mjs +8 -1
- package/dist/server/strategies/users-permissions.mjs.map +1 -1
- package/dist/server/utils/index.js +5 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/refresh-cookie-options.js +27 -0
- package/dist/server/utils/refresh-cookie-options.js.map +1 -0
- package/dist/server/utils/refresh-cookie-options.mjs +25 -0
- package/dist/server/utils/refresh-cookie-options.mjs.map +1 -0
- package/dist/server/utils/sanitize/sanitizers.js +7 -2
- package/dist/server/utils/sanitize/sanitizers.js.map +1 -1
- package/lint-staged.config.mjs +1 -0
- package/package.json +5 -5
- package/rollup.config.mjs +3 -3
- package/server/controllers/auth.js +162 -141
- package/server/controllers/validation/user.js +22 -9
- package/server/routes/content-api/auth.js +12 -0
- package/server/routes/content-api/validation.js +32 -2
- package/server/services/jwt.js +4 -3
- package/server/services/users-permissions.js +2 -0
- package/server/strategies/users-permissions.js +6 -1
- package/server/utils/refresh-cookie-options.js +20 -0
package/.eslintrc.cjs
CHANGED
|
@@ -89,7 +89,7 @@ export const RolesListPage = () => {
|
|
|
89
89
|
} catch (error) {
|
|
90
90
|
toggleNotification({
|
|
91
91
|
type: 'danger',
|
|
92
|
-
message: formatMessage({ id: 'notification.error', defaultMessage: 'An error
|
|
92
|
+
message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
};
|
|
@@ -1,44 +1,83 @@
|
|
|
1
1
|
{
|
|
2
|
-
"BoundRoute.title": "
|
|
2
|
+
"BoundRoute.title": "バインドされたルート",
|
|
3
|
+
"components.Input.error.validation.email": "有効なメールアドレスではありません",
|
|
4
|
+
"components.Input.error.validation.json": "JSON形式と一致しません",
|
|
5
|
+
"components.Input.error.validation.max": "値が大きすぎます。",
|
|
6
|
+
"components.Input.error.validation.maxLength": "値が長すぎます。",
|
|
7
|
+
"components.Input.error.validation.min": "値が小さすぎます。",
|
|
8
|
+
"components.Input.error.validation.minLength": "値が短すぎます。",
|
|
9
|
+
"components.Input.error.validation.minSupMax": "最大値を超えることはできません。",
|
|
10
|
+
"components.Input.error.validation.regex": "値が正規表現と一致しません。",
|
|
11
|
+
"components.Input.error.validation.required": "この値は必須です。",
|
|
12
|
+
"components.Input.error.validation.unique": "この値はすでに使用されています。",
|
|
3
13
|
"EditForm.inputSelect.description.role": "新しい認証されたユーザーが選択された役割にアタッチされます。",
|
|
4
14
|
"EditForm.inputSelect.label.role": "認証されたユーザーのデフォルトの役割",
|
|
5
15
|
"EditForm.inputToggle.description.email": "ユーザーが異なる認証プロバイダで同じ電子メールアドレスを使用して複数のアカウントを作成できないようにします。",
|
|
6
16
|
"EditForm.inputToggle.description.email-confirmation": "有効(ON)にすると、新しい登録ユーザーに確認メールが送信されます。",
|
|
7
17
|
"EditForm.inputToggle.description.email-confirmation-redirection": "あなたのEメールを確認したら、リダイレクト先を選択してください。",
|
|
18
|
+
"EditForm.inputToggle.description.email-reset-password": "アプリケーションのパスワードリセットページのURL",
|
|
8
19
|
"EditForm.inputToggle.description.sign-up": "あなたの電子メールを確認した後、リダイレクト先を選択しました。",
|
|
9
20
|
"EditForm.inputToggle.label.email": "メールアドレスごとに1つのアカウント",
|
|
10
21
|
"EditForm.inputToggle.label.email-confirmation": "Eメールの確認を有効にする",
|
|
11
22
|
"EditForm.inputToggle.label.email-confirmation-redirection": "リダイレクトURL",
|
|
23
|
+
"EditForm.inputToggle.label.email-reset-password": "パスワードリセットページ",
|
|
12
24
|
"EditForm.inputToggle.label.sign-up": "申し込みを有効にする",
|
|
25
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "例: https://yourfrontend.com/email-confirmation-redirection",
|
|
26
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "例: https://yourfrontend.com/reset-password",
|
|
27
|
+
"EditPage.form.roles": "ロールの詳細",
|
|
28
|
+
"Email.template.data.loaded": "メールテンプレートを読み込みました",
|
|
29
|
+
"Email.template.email_confirmation": "メールアドレスの確認",
|
|
30
|
+
"Email.template.form.edit.label": "テンプレートを編集",
|
|
31
|
+
"Email.template.reset_password": "パスワードリセット",
|
|
32
|
+
"Email.template.table.action.label": "操作",
|
|
33
|
+
"Email.template.table.icon.label": "アイコン",
|
|
34
|
+
"Email.template.table.name.label": "名前",
|
|
35
|
+
"Form.advancedSettings.data.loaded": "高度な設定データを読み込みました",
|
|
13
36
|
"HeaderNav.link.advancedSettings": "高度な設定",
|
|
14
37
|
"HeaderNav.link.emailTemplates": "メールテンプレート",
|
|
15
38
|
"HeaderNav.link.providers": "プロバイダー",
|
|
39
|
+
"notification.success.submit": "設定が更新されました",
|
|
40
|
+
"page.title": "設定 - ロール",
|
|
41
|
+
"plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。",
|
|
42
|
+
"plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する",
|
|
43
|
+
"plugin.name": "ロールと権限",
|
|
16
44
|
"Plugin.permissions.plugins.description": "{name} 個のプラグインに対して許可されたすべてのアクションを定義する",
|
|
17
45
|
"Plugins.header.description": "ルートにバインドされたアクションのみが以下にリストされています",
|
|
18
46
|
"Plugins.header.title": "権限",
|
|
19
47
|
"Policies.header.hint": "アプリケーションのアクションまたはプラグインのアクションを選択し、コグアイコンをクリックしてバインドされたルートを表示します",
|
|
20
48
|
"Policies.header.title": "高度な設定",
|
|
21
49
|
"PopUpForm.Email.email_templates.inputDescription": "変数の使用方法がわからない場合は、{link}",
|
|
50
|
+
"PopUpForm.Email.link.documentation": "ドキュメントをご覧ください。",
|
|
22
51
|
"PopUpForm.Email.options.from.email.label": "送信者Eメール",
|
|
23
52
|
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
24
53
|
"PopUpForm.Email.options.from.name.label": "送信者名",
|
|
25
54
|
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
26
55
|
"PopUpForm.Email.options.message.label": "メッセージ",
|
|
27
56
|
"PopUpForm.Email.options.object.label": "件名",
|
|
57
|
+
"PopUpForm.Email.options.object.placeholder": "%APP_NAME% のメールアドレスを確認してください",
|
|
28
58
|
"PopUpForm.Email.options.response_email.label": "応答メール",
|
|
29
59
|
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
60
|
+
"PopUpForm.header.edit.email-templates": "メールテンプレートの編集",
|
|
61
|
+
"PopUpForm.header.edit.providers": "プロバイダーの編集",
|
|
30
62
|
"PopUpForm.Providers.enabled.description": "無効にすると、ユーザーはこのプロバイダを使用できなくなります。",
|
|
31
63
|
"PopUpForm.Providers.enabled.label": "有効にする",
|
|
32
64
|
"PopUpForm.Providers.key.label": "クライアントID",
|
|
33
65
|
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
34
66
|
"PopUpForm.Providers.redirectURL.front-end.label": "フロントエンドアプリへのリダイレクトURL",
|
|
67
|
+
"PopUpForm.Providers.redirectURL.label": "{provider}アプリケーションの設定に追加するリダイレクトURL",
|
|
35
68
|
"PopUpForm.Providers.secret.label": "クライアントの秘密",
|
|
36
69
|
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
37
|
-
"PopUpForm.Providers.subdomain.label": "
|
|
70
|
+
"PopUpForm.Providers.subdomain.label": "ホストURI(サブドメイン)",
|
|
38
71
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
72
|
+
"popUpWarning.button.cancel": "キャンセル",
|
|
73
|
+
"popUpWarning.button.confirm": "確認",
|
|
74
|
+
"popUpWarning.title": "確認してください",
|
|
75
|
+
"popUpWarning.warning.cancel": "変更をキャンセルしてもよろしいですか?",
|
|
76
|
+
"Providers.data.loaded": "プロバイダーを読み込みました",
|
|
77
|
+
"Providers.status": "ステータス",
|
|
78
|
+
"Roles.empty": "ロールがまだありません。",
|
|
79
|
+
"Roles.empty.search": "検索に一致するロールがありません。",
|
|
80
|
+
"Settings.roles.deleted": "ロールを削除しました",
|
|
81
|
+
"Settings.roles.edited": "ロールを編集しました",
|
|
82
|
+
"Settings.section-label": "ユーザーと権限プラグイン"
|
|
44
83
|
}
|
|
@@ -10,6 +10,12 @@ var reactIntl = require('react-intl');
|
|
|
10
10
|
var styledComponents = require('styled-components');
|
|
11
11
|
var getMethodColor = require('./getMethodColor.js');
|
|
12
12
|
|
|
13
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var map__default = /*#__PURE__*/_interopDefault(map);
|
|
16
|
+
var tail__default = /*#__PURE__*/_interopDefault(tail);
|
|
17
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
18
|
+
|
|
13
19
|
const MethodBox = styledComponents.styled(designSystem.Box)`
|
|
14
20
|
margin: -1px;
|
|
15
21
|
border-radius: ${({ theme })=>theme.spaces[1]} 0 0 ${({ theme })=>theme.spaces[1]};
|
|
@@ -17,7 +23,7 @@ const MethodBox = styledComponents.styled(designSystem.Box)`
|
|
|
17
23
|
function BoundRoute({ route }) {
|
|
18
24
|
const { formatMessage } = reactIntl.useIntl();
|
|
19
25
|
const { method, handler: title, path } = route;
|
|
20
|
-
const formattedRoute = path ?
|
|
26
|
+
const formattedRoute = path ? tail__default.default(path.split('/')) : [];
|
|
21
27
|
const [controller = '', action = ''] = title ? title.split('.') : [];
|
|
22
28
|
const colors = getMethodColor(route.method);
|
|
23
29
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
@@ -66,7 +72,7 @@ function BoundRoute({ route }) {
|
|
|
66
72
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
67
73
|
paddingLeft: 2,
|
|
68
74
|
paddingRight: 2,
|
|
69
|
-
children:
|
|
75
|
+
children: map__default.default(formattedRoute, (value)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Typography, {
|
|
70
76
|
textColor: value.includes(':') ? 'neutral600' : 'neutral900',
|
|
71
77
|
children: [
|
|
72
78
|
"/",
|
|
@@ -87,10 +93,10 @@ BoundRoute.defaultProps = {
|
|
|
87
93
|
}
|
|
88
94
|
};
|
|
89
95
|
BoundRoute.propTypes = {
|
|
90
|
-
route:
|
|
91
|
-
handler:
|
|
92
|
-
method:
|
|
93
|
-
path:
|
|
96
|
+
route: PropTypes__default.default.shape({
|
|
97
|
+
handler: PropTypes__default.default.string,
|
|
98
|
+
method: PropTypes__default.default.string,
|
|
99
|
+
path: PropTypes__default.default.string
|
|
94
100
|
})
|
|
95
101
|
};
|
|
96
102
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../admin/src/components/BoundRoute/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport getMethodColor from './getMethodColor';\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\nfunction BoundRoute({ route }) {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'users-permissions.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n}\n\nBoundRoute.defaultProps = {\n route: {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n};\n\nBoundRoute.propTypes = {\n route: PropTypes.shape({\n handler: PropTypes.string,\n method: PropTypes.string,\n path: PropTypes.string,\n }),\n};\n\nexport default BoundRoute;\n"],"names":["MethodBox","styled","Box","theme","spaces","BoundRoute","route","formatMessage","useIntl","method","handler","title","path","formattedRoute","tail","split","controller","action","colors","getMethodColor","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","id","defaultMessage","_jsx","span","textColor","hasRadius","background","borderColor","border","padding","fontWeight","text","paddingLeft","paddingRight","map","value","includes","defaultProps","propTypes","PropTypes","shape","string"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../admin/src/components/BoundRoute/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport getMethodColor from './getMethodColor';\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\nfunction BoundRoute({ route }) {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'users-permissions.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n}\n\nBoundRoute.defaultProps = {\n route: {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n};\n\nBoundRoute.propTypes = {\n route: PropTypes.shape({\n handler: PropTypes.string,\n method: PropTypes.string,\n path: PropTypes.string,\n }),\n};\n\nexport default BoundRoute;\n"],"names":["MethodBox","styled","Box","theme","spaces","BoundRoute","route","formatMessage","useIntl","method","handler","title","path","formattedRoute","tail","split","controller","action","colors","getMethodColor","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","id","defaultMessage","_jsx","span","textColor","hasRadius","background","borderColor","border","padding","fontWeight","text","paddingLeft","paddingRight","map","value","includes","defaultProps","propTypes","PropTypes","shape","string"],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ var designSystem = require('@strapi/design-system');
|
|
|
6
6
|
var PropTypes = require('prop-types');
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
12
|
+
|
|
9
13
|
const Input = ({ description, disabled, intlLabel, error, name, onChange, placeholder, providerToEditName, type, value })=>{
|
|
10
14
|
const { formatMessage } = reactIntl.useIntl();
|
|
11
15
|
const inputValue = name === 'noName' ? `${window.strapi.backendURL}/api/connect/${providerToEditName}/callback` : value;
|
|
@@ -92,30 +96,30 @@ Input.defaultProps = {
|
|
|
92
96
|
value: ''
|
|
93
97
|
};
|
|
94
98
|
Input.propTypes = {
|
|
95
|
-
description:
|
|
96
|
-
id:
|
|
97
|
-
defaultMessage:
|
|
98
|
-
values:
|
|
99
|
+
description: PropTypes__default.default.shape({
|
|
100
|
+
id: PropTypes__default.default.string.isRequired,
|
|
101
|
+
defaultMessage: PropTypes__default.default.string.isRequired,
|
|
102
|
+
values: PropTypes__default.default.object
|
|
99
103
|
}),
|
|
100
|
-
disabled:
|
|
101
|
-
error:
|
|
102
|
-
intlLabel:
|
|
103
|
-
id:
|
|
104
|
-
defaultMessage:
|
|
105
|
-
values:
|
|
104
|
+
disabled: PropTypes__default.default.bool,
|
|
105
|
+
error: PropTypes__default.default.string,
|
|
106
|
+
intlLabel: PropTypes__default.default.shape({
|
|
107
|
+
id: PropTypes__default.default.string.isRequired,
|
|
108
|
+
defaultMessage: PropTypes__default.default.string.isRequired,
|
|
109
|
+
values: PropTypes__default.default.object
|
|
106
110
|
}).isRequired,
|
|
107
|
-
name:
|
|
108
|
-
onChange:
|
|
109
|
-
placeholder:
|
|
110
|
-
id:
|
|
111
|
-
defaultMessage:
|
|
112
|
-
values:
|
|
111
|
+
name: PropTypes__default.default.string.isRequired,
|
|
112
|
+
onChange: PropTypes__default.default.func.isRequired,
|
|
113
|
+
placeholder: PropTypes__default.default.shape({
|
|
114
|
+
id: PropTypes__default.default.string.isRequired,
|
|
115
|
+
defaultMessage: PropTypes__default.default.string.isRequired,
|
|
116
|
+
values: PropTypes__default.default.object
|
|
113
117
|
}),
|
|
114
|
-
providerToEditName:
|
|
115
|
-
type:
|
|
116
|
-
value:
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
providerToEditName: PropTypes__default.default.string.isRequired,
|
|
119
|
+
type: PropTypes__default.default.string.isRequired,
|
|
120
|
+
value: PropTypes__default.default.oneOfType([
|
|
121
|
+
PropTypes__default.default.bool,
|
|
122
|
+
PropTypes__default.default.string
|
|
119
123
|
])
|
|
120
124
|
};
|
|
121
125
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../admin/src/components/FormModal/Input/index.jsx"],"sourcesContent":["/**\n *\n * Input\n *\n */\n\nimport * as React from 'react';\n\nimport { TextInput, Toggle, Field } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst Input = ({\n description,\n disabled,\n intlLabel,\n error,\n name,\n onChange,\n placeholder,\n providerToEditName,\n type,\n value,\n}) => {\n const { formatMessage } = useIntl();\n const inputValue =\n name === 'noName'\n ? `${window.strapi.backendURL}/api/connect/${providerToEditName}/callback`\n : value;\n\n const label = formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { provider: providerToEditName, ...intlLabel.values }\n );\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { provider: providerToEditName, ...description.values }\n )\n : '';\n\n if (type === 'bool') {\n return (\n <Field.Root hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <Toggle\n aria-label={name}\n checked={value}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n <Field.Hint />\n </Field.Root>\n );\n }\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n placeholder={formattedPlaceholder}\n type={type}\n value={inputValue}\n />\n <Field.Error />\n </Field.Root>\n );\n};\n\nInput.defaultProps = {\n description: null,\n disabled: false,\n error: '',\n placeholder: null,\n value: '',\n};\n\nInput.propTypes = {\n description: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }),\n disabled: PropTypes.bool,\n error: PropTypes.string,\n intlLabel: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }).isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n placeholder: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }),\n providerToEditName: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n};\n\nexport default Input;\n"],"names":["Input","description","disabled","intlLabel","error","name","onChange","placeholder","providerToEditName","type","value","formatMessage","useIntl","inputValue","window","strapi","backendURL","label","id","defaultMessage","provider","values","hint","_jsxs","Field","Root","_jsx","Label","Toggle","aria-label","checked","offLabel","onLabel","e","target","Hint","formattedPlaceholder","errorMessage","TextInput","Error","defaultProps","propTypes","PropTypes","shape","string","isRequired","object","bool","func","oneOfType"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../admin/src/components/FormModal/Input/index.jsx"],"sourcesContent":["/**\n *\n * Input\n *\n */\n\nimport * as React from 'react';\n\nimport { TextInput, Toggle, Field } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst Input = ({\n description,\n disabled,\n intlLabel,\n error,\n name,\n onChange,\n placeholder,\n providerToEditName,\n type,\n value,\n}) => {\n const { formatMessage } = useIntl();\n const inputValue =\n name === 'noName'\n ? `${window.strapi.backendURL}/api/connect/${providerToEditName}/callback`\n : value;\n\n const label = formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { provider: providerToEditName, ...intlLabel.values }\n );\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { provider: providerToEditName, ...description.values }\n )\n : '';\n\n if (type === 'bool') {\n return (\n <Field.Root hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <Toggle\n aria-label={name}\n checked={value}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n <Field.Hint />\n </Field.Root>\n );\n }\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n placeholder={formattedPlaceholder}\n type={type}\n value={inputValue}\n />\n <Field.Error />\n </Field.Root>\n );\n};\n\nInput.defaultProps = {\n description: null,\n disabled: false,\n error: '',\n placeholder: null,\n value: '',\n};\n\nInput.propTypes = {\n description: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }),\n disabled: PropTypes.bool,\n error: PropTypes.string,\n intlLabel: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }).isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n placeholder: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }),\n providerToEditName: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n};\n\nexport default Input;\n"],"names":["Input","description","disabled","intlLabel","error","name","onChange","placeholder","providerToEditName","type","value","formatMessage","useIntl","inputValue","window","strapi","backendURL","label","id","defaultMessage","provider","values","hint","_jsxs","Field","Root","_jsx","Label","Toggle","aria-label","checked","offLabel","onLabel","e","target","Hint","formattedPlaceholder","errorMessage","TextInput","Error","defaultProps","propTypes","PropTypes","shape","string","isRequired","object","bool","func","oneOfType"],"mappings":"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"}
|
|
@@ -8,6 +8,10 @@ var PropTypes = require('prop-types');
|
|
|
8
8
|
var reactIntl = require('react-intl');
|
|
9
9
|
var index = require('./Input/index.js');
|
|
10
10
|
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
14
|
+
|
|
11
15
|
const FormModal = ({ headerBreadcrumbs, initialData, isSubmiting, layout, isOpen, onSubmit, onToggle, providerToEditName })=>{
|
|
12
16
|
const { formatMessage } = reactIntl.useIntl();
|
|
13
17
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Root, {
|
|
@@ -93,17 +97,17 @@ FormModal.defaultProps = {
|
|
|
93
97
|
providerToEditName: null
|
|
94
98
|
};
|
|
95
99
|
FormModal.propTypes = {
|
|
96
|
-
headerBreadcrumbs:
|
|
97
|
-
initialData:
|
|
98
|
-
layout:
|
|
99
|
-
form:
|
|
100
|
-
schema:
|
|
100
|
+
headerBreadcrumbs: PropTypes__default.default.arrayOf(PropTypes__default.default.string).isRequired,
|
|
101
|
+
initialData: PropTypes__default.default.object,
|
|
102
|
+
layout: PropTypes__default.default.shape({
|
|
103
|
+
form: PropTypes__default.default.arrayOf(PropTypes__default.default.array),
|
|
104
|
+
schema: PropTypes__default.default.object
|
|
101
105
|
}).isRequired,
|
|
102
|
-
isOpen:
|
|
103
|
-
isSubmiting:
|
|
104
|
-
onSubmit:
|
|
105
|
-
onToggle:
|
|
106
|
-
providerToEditName:
|
|
106
|
+
isOpen: PropTypes__default.default.bool.isRequired,
|
|
107
|
+
isSubmiting: PropTypes__default.default.bool.isRequired,
|
|
108
|
+
onSubmit: PropTypes__default.default.func.isRequired,
|
|
109
|
+
onToggle: PropTypes__default.default.func.isRequired,
|
|
110
|
+
providerToEditName: PropTypes__default.default.string
|
|
107
111
|
};
|
|
108
112
|
|
|
109
113
|
module.exports = FormModal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../admin/src/components/FormModal/index.jsx"],"sourcesContent":["/**\n *\n * FormModal\n *\n */\n\nimport * as React from 'react';\n\nimport { Button, Flex, Grid, Modal, Breadcrumbs, Crumb } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport Input from './Input';\n\nconst FormModal = ({\n headerBreadcrumbs,\n initialData,\n isSubmiting,\n layout,\n isOpen,\n onSubmit,\n onToggle,\n providerToEditName,\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={isOpen} onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs label={headerBreadcrumbs.join(', ')}>\n {headerBreadcrumbs.map((crumb, index, arr) => (\n <Crumb isCurrent={index === arr.length - 1} key={crumb}>\n {crumb}\n </Crumb>\n ))}\n </Breadcrumbs>\n </Modal.Header>\n <Formik\n onSubmit={(values) => onSubmit(values)}\n initialValues={initialData}\n validationSchema={layout.schema}\n validateOnChange={false}\n >\n {({ errors, handleChange, values }) => {\n return (\n <Form>\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={5}>\n {layout.form.map((row) => {\n return row.map((input) => {\n return (\n <Grid.Item\n key={input.name}\n col={input.size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Input\n {...input}\n error={errors[input.name]}\n onChange={handleChange}\n value={values[input.name]}\n providerToEditName={providerToEditName}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmiting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n </Modal.Footer>\n </Form>\n );\n }}\n </Formik>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nFormModal.defaultProps = {\n initialData: null,\n providerToEditName: null,\n};\n\nFormModal.propTypes = {\n headerBreadcrumbs: PropTypes.arrayOf(PropTypes.string).isRequired,\n initialData: PropTypes.object,\n layout: PropTypes.shape({\n form: PropTypes.arrayOf(PropTypes.array),\n schema: PropTypes.object,\n }).isRequired,\n isOpen: PropTypes.bool.isRequired,\n isSubmiting: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n providerToEditName: PropTypes.string,\n};\n\nexport default FormModal;\n"],"names":["FormModal","headerBreadcrumbs","initialData","isSubmiting","layout","isOpen","onSubmit","onToggle","providerToEditName","formatMessage","useIntl","_jsx","Modal","Root","open","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","join","map","crumb","index","arr","Crumb","isCurrent","length","Formik","values","initialValues","validationSchema","schema","validateOnChange","errors","handleChange","Form","Body","Flex","direction","alignItems","gap","Grid","form","row","input","Item","col","size","xs","Input","error","name","onChange","value","Footer","Button","variant","onClick","type","id","defaultMessage","loading","defaultProps","propTypes","PropTypes","arrayOf","string","isRequired","object","shape","array","bool","func"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../admin/src/components/FormModal/index.jsx"],"sourcesContent":["/**\n *\n * FormModal\n *\n */\n\nimport * as React from 'react';\n\nimport { Button, Flex, Grid, Modal, Breadcrumbs, Crumb } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport Input from './Input';\n\nconst FormModal = ({\n headerBreadcrumbs,\n initialData,\n isSubmiting,\n layout,\n isOpen,\n onSubmit,\n onToggle,\n providerToEditName,\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={isOpen} onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs label={headerBreadcrumbs.join(', ')}>\n {headerBreadcrumbs.map((crumb, index, arr) => (\n <Crumb isCurrent={index === arr.length - 1} key={crumb}>\n {crumb}\n </Crumb>\n ))}\n </Breadcrumbs>\n </Modal.Header>\n <Formik\n onSubmit={(values) => onSubmit(values)}\n initialValues={initialData}\n validationSchema={layout.schema}\n validateOnChange={false}\n >\n {({ errors, handleChange, values }) => {\n return (\n <Form>\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={5}>\n {layout.form.map((row) => {\n return row.map((input) => {\n return (\n <Grid.Item\n key={input.name}\n col={input.size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Input\n {...input}\n error={errors[input.name]}\n onChange={handleChange}\n value={values[input.name]}\n providerToEditName={providerToEditName}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmiting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n </Modal.Footer>\n </Form>\n );\n }}\n </Formik>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nFormModal.defaultProps = {\n initialData: null,\n providerToEditName: null,\n};\n\nFormModal.propTypes = {\n headerBreadcrumbs: PropTypes.arrayOf(PropTypes.string).isRequired,\n initialData: PropTypes.object,\n layout: PropTypes.shape({\n form: PropTypes.arrayOf(PropTypes.array),\n schema: PropTypes.object,\n }).isRequired,\n isOpen: PropTypes.bool.isRequired,\n isSubmiting: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n providerToEditName: PropTypes.string,\n};\n\nexport default FormModal;\n"],"names":["FormModal","headerBreadcrumbs","initialData","isSubmiting","layout","isOpen","onSubmit","onToggle","providerToEditName","formatMessage","useIntl","_jsx","Modal","Root","open","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","join","map","crumb","index","arr","Crumb","isCurrent","length","Formik","values","initialValues","validationSchema","schema","validateOnChange","errors","handleChange","Form","Body","Flex","direction","alignItems","gap","Grid","form","row","input","Item","col","size","xs","Input","error","name","onChange","value","Footer","Button","variant","onClick","type","id","defaultMessage","loading","defaultProps","propTypes","PropTypes","arrayOf","string","isRequired","object","shape","array","bool","func"],"mappings":"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"}
|
|
@@ -11,6 +11,11 @@ var styledComponents = require('styled-components');
|
|
|
11
11
|
var index = require('../../../contexts/UsersPermissionsContext/index.js');
|
|
12
12
|
var CheckboxWrapper = require('./CheckboxWrapper.js');
|
|
13
13
|
|
|
14
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
|
|
16
|
+
var get__default = /*#__PURE__*/_interopDefault(get);
|
|
17
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
18
|
+
|
|
14
19
|
const Border = styledComponents.styled.div`
|
|
15
20
|
flex: 1;
|
|
16
21
|
align-self: center;
|
|
@@ -20,7 +25,7 @@ const SubCategory = ({ subCategory })=>{
|
|
|
20
25
|
const { formatMessage } = reactIntl.useIntl();
|
|
21
26
|
const { onChange, onChangeSelectAll, onSelectedAction, selectedAction, modifiedData } = index.useUsersPermissions();
|
|
22
27
|
const currentScopedModifiedData = React.useMemo(()=>{
|
|
23
|
-
return
|
|
28
|
+
return get__default.default(modifiedData, subCategory.name, {});
|
|
24
29
|
}, [
|
|
25
30
|
modifiedData,
|
|
26
31
|
subCategory
|
|
@@ -108,7 +113,7 @@ const SubCategory = ({ subCategory })=>{
|
|
|
108
113
|
hasRadius: true,
|
|
109
114
|
children: [
|
|
110
115
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Checkbox, {
|
|
111
|
-
checked:
|
|
116
|
+
checked: get__default.default(modifiedData, name, false),
|
|
112
117
|
name: name,
|
|
113
118
|
onCheckedChange: (value)=>onChange({
|
|
114
119
|
target: {
|
|
@@ -151,7 +156,7 @@ const SubCategory = ({ subCategory })=>{
|
|
|
151
156
|
});
|
|
152
157
|
};
|
|
153
158
|
SubCategory.propTypes = {
|
|
154
|
-
subCategory:
|
|
159
|
+
subCategory: PropTypes__default.default.object.isRequired
|
|
155
160
|
};
|
|
156
161
|
|
|
157
162
|
module.exports = SubCategory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubCategory.js","sources":["../../../../../admin/src/components/Permissions/PermissionRow/SubCategory.jsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\n\nimport { Box, Checkbox, Flex, Typography, Grid, VisuallyHidden } from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUsersPermissions } from '../../../contexts/UsersPermissionsContext';\n\nimport CheckboxWrapper from './CheckboxWrapper';\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst SubCategory = ({ subCategory }) => {\n const { formatMessage } = useIntl();\n const { onChange, onChangeSelectAll, onSelectedAction, selectedAction, modifiedData } =\n useUsersPermissions();\n\n const currentScopedModifiedData = useMemo(() => {\n return get(modifiedData, subCategory.name, {});\n }, [modifiedData, subCategory]);\n\n const hasAllActionsSelected = useMemo(() => {\n return Object.values(currentScopedModifiedData).every((action) => action.enabled === true);\n }, [currentScopedModifiedData]);\n\n const hasSomeActionsSelected = useMemo(() => {\n return (\n Object.values(currentScopedModifiedData).some((action) => action.enabled === true) &&\n !hasAllActionsSelected\n );\n }, [currentScopedModifiedData, hasAllActionsSelected]);\n\n const handleChangeSelectAll = useCallback(\n ({ target: { name } }) => {\n onChangeSelectAll({ target: { name, value: !hasAllActionsSelected } });\n },\n [hasAllActionsSelected, onChangeSelectAll]\n );\n\n const isActionSelected = useCallback(\n (actionName) => {\n return selectedAction === actionName;\n },\n [selectedAction]\n );\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategory.label}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n name={subCategory.name}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n onCheckedChange={(value) =>\n handleChangeSelectAll({ target: { name: subCategory.name, value } })\n }\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {subCategory.actions.map((action) => {\n const name = `${action.name}.enabled`;\n\n return (\n <Grid.Item\n col={4}\n xs={12}\n s={6}\n key={action.name}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper isActive={isActionSelected(action.name)} padding={2} hasRadius>\n <Checkbox\n checked={get(modifiedData, name, false)}\n name={name}\n onCheckedChange={(value) => onChange({ target: { name, value } })}\n >\n {action.label}\n </Checkbox>\n <button\n type=\"button\"\n onClick={() => onSelectedAction(action.name)}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <VisuallyHidden tag=\"span\">\n {formatMessage(\n {\n id: 'app.utils.show-bound-route',\n defaultMessage: 'Show bound route for {route}',\n },\n {\n route: action.name,\n }\n )}\n </VisuallyHidden>\n <Cog id=\"cog\" cursor=\"pointer\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nSubCategory.propTypes = {\n subCategory: PropTypes.object.isRequired,\n};\n\nexport default SubCategory;\n"],"names":["Border","styled","div","theme","colors","neutral150","SubCategory","subCategory","formatMessage","useIntl","onChange","onChangeSelectAll","onSelectedAction","selectedAction","modifiedData","useUsersPermissions","currentScopedModifiedData","useMemo","get","name","hasAllActionsSelected","Object","values","every","action","enabled","hasSomeActionsSelected","some","handleChangeSelectAll","useCallback","target","value","isActionSelected","actionName","_jsxs","Box","Flex","justifyContent","alignItems","_jsx","paddingRight","Typography","variant","textColor","label","paddingLeft","Checkbox","checked","onCheckedChange","id","defaultMessage","paddingTop","paddingBottom","Grid","Root","gap","style","flex","actions","map","Item","col","xs","s","direction","CheckboxWrapper","isActive","padding","hasRadius","button","type","onClick","display","VisuallyHidden","tag","route","Cog","cursor","propTypes","PropTypes","object","isRequired"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SubCategory.js","sources":["../../../../../admin/src/components/Permissions/PermissionRow/SubCategory.jsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\n\nimport { Box, Checkbox, Flex, Typography, Grid, VisuallyHidden } from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUsersPermissions } from '../../../contexts/UsersPermissionsContext';\n\nimport CheckboxWrapper from './CheckboxWrapper';\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst SubCategory = ({ subCategory }) => {\n const { formatMessage } = useIntl();\n const { onChange, onChangeSelectAll, onSelectedAction, selectedAction, modifiedData } =\n useUsersPermissions();\n\n const currentScopedModifiedData = useMemo(() => {\n return get(modifiedData, subCategory.name, {});\n }, [modifiedData, subCategory]);\n\n const hasAllActionsSelected = useMemo(() => {\n return Object.values(currentScopedModifiedData).every((action) => action.enabled === true);\n }, [currentScopedModifiedData]);\n\n const hasSomeActionsSelected = useMemo(() => {\n return (\n Object.values(currentScopedModifiedData).some((action) => action.enabled === true) &&\n !hasAllActionsSelected\n );\n }, [currentScopedModifiedData, hasAllActionsSelected]);\n\n const handleChangeSelectAll = useCallback(\n ({ target: { name } }) => {\n onChangeSelectAll({ target: { name, value: !hasAllActionsSelected } });\n },\n [hasAllActionsSelected, onChangeSelectAll]\n );\n\n const isActionSelected = useCallback(\n (actionName) => {\n return selectedAction === actionName;\n },\n [selectedAction]\n );\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategory.label}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n name={subCategory.name}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n onCheckedChange={(value) =>\n handleChangeSelectAll({ target: { name: subCategory.name, value } })\n }\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {subCategory.actions.map((action) => {\n const name = `${action.name}.enabled`;\n\n return (\n <Grid.Item\n col={4}\n xs={12}\n s={6}\n key={action.name}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <CheckboxWrapper isActive={isActionSelected(action.name)} padding={2} hasRadius>\n <Checkbox\n checked={get(modifiedData, name, false)}\n name={name}\n onCheckedChange={(value) => onChange({ target: { name, value } })}\n >\n {action.label}\n </Checkbox>\n <button\n type=\"button\"\n onClick={() => onSelectedAction(action.name)}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <VisuallyHidden tag=\"span\">\n {formatMessage(\n {\n id: 'app.utils.show-bound-route',\n defaultMessage: 'Show bound route for {route}',\n },\n {\n route: action.name,\n }\n )}\n </VisuallyHidden>\n <Cog id=\"cog\" cursor=\"pointer\" />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nSubCategory.propTypes = {\n subCategory: PropTypes.object.isRequired,\n};\n\nexport default SubCategory;\n"],"names":["Border","styled","div","theme","colors","neutral150","SubCategory","subCategory","formatMessage","useIntl","onChange","onChangeSelectAll","onSelectedAction","selectedAction","modifiedData","useUsersPermissions","currentScopedModifiedData","useMemo","get","name","hasAllActionsSelected","Object","values","every","action","enabled","hasSomeActionsSelected","some","handleChangeSelectAll","useCallback","target","value","isActionSelected","actionName","_jsxs","Box","Flex","justifyContent","alignItems","_jsx","paddingRight","Typography","variant","textColor","label","paddingLeft","Checkbox","checked","onCheckedChange","id","defaultMessage","paddingTop","paddingBottom","Grid","Root","gap","style","flex","actions","map","Item","col","xs","s","direction","CheckboxWrapper","isActive","padding","hasRadius","button","type","onClick","display","VisuallyHidden","tag","route","Cog","cursor","propTypes","PropTypes","object","isRequired"],"mappings":"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"}
|
|
@@ -7,11 +7,16 @@ var sortBy = require('lodash/sortBy');
|
|
|
7
7
|
var PropTypes = require('prop-types');
|
|
8
8
|
var SubCategory = require('./SubCategory.js');
|
|
9
9
|
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var sortBy__default = /*#__PURE__*/_interopDefault(sortBy);
|
|
13
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
14
|
+
|
|
10
15
|
const PermissionRow = ({ name, permissions })=>{
|
|
11
16
|
const subCategories = React.useMemo(()=>{
|
|
12
|
-
return
|
|
17
|
+
return sortBy__default.default(Object.values(permissions.controllers).reduce((acc, curr, index)=>{
|
|
13
18
|
const currentName = `${name}.controllers.${Object.keys(permissions.controllers)[index]}`;
|
|
14
|
-
const actions =
|
|
19
|
+
const actions = sortBy__default.default(Object.keys(curr).reduce((acc, current)=>{
|
|
15
20
|
return [
|
|
16
21
|
...acc,
|
|
17
22
|
{
|
|
@@ -42,8 +47,8 @@ const PermissionRow = ({ name, permissions })=>{
|
|
|
42
47
|
});
|
|
43
48
|
};
|
|
44
49
|
PermissionRow.propTypes = {
|
|
45
|
-
name:
|
|
46
|
-
permissions:
|
|
50
|
+
name: PropTypes__default.default.string.isRequired,
|
|
51
|
+
permissions: PropTypes__default.default.object.isRequired
|
|
47
52
|
};
|
|
48
53
|
|
|
49
54
|
module.exports = PermissionRow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../admin/src/components/Permissions/PermissionRow/index.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport sortBy from 'lodash/sortBy';\nimport PropTypes from 'prop-types';\n\nimport SubCategory from './SubCategory';\n\nconst PermissionRow = ({ name, permissions }) => {\n const subCategories = useMemo(() => {\n return sortBy(\n Object.values(permissions.controllers).reduce((acc, curr, index) => {\n const currentName = `${name}.controllers.${Object.keys(permissions.controllers)[index]}`;\n const actions = sortBy(\n Object.keys(curr).reduce((acc, current) => {\n return [\n ...acc,\n {\n ...curr[current],\n label: current,\n name: `${currentName}.${current}`,\n },\n ];\n }, []),\n 'label'\n );\n\n return [\n ...acc,\n {\n actions,\n label: Object.keys(permissions.controllers)[index],\n name: currentName,\n },\n ];\n }, []),\n 'label'\n );\n }, [name, permissions]);\n\n return (\n <Box padding={6}>\n {subCategories.map((subCategory) => (\n <SubCategory key={subCategory.name} subCategory={subCategory} />\n ))}\n </Box>\n );\n};\n\nPermissionRow.propTypes = {\n name: PropTypes.string.isRequired,\n permissions: PropTypes.object.isRequired,\n};\n\nexport default PermissionRow;\n"],"names":["PermissionRow","name","permissions","subCategories","useMemo","sortBy","Object","values","controllers","reduce","acc","curr","index","currentName","keys","actions","current","label","_jsx","Box","padding","map","subCategory","SubCategory","propTypes","PropTypes","string","isRequired","object"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../admin/src/components/Permissions/PermissionRow/index.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport sortBy from 'lodash/sortBy';\nimport PropTypes from 'prop-types';\n\nimport SubCategory from './SubCategory';\n\nconst PermissionRow = ({ name, permissions }) => {\n const subCategories = useMemo(() => {\n return sortBy(\n Object.values(permissions.controllers).reduce((acc, curr, index) => {\n const currentName = `${name}.controllers.${Object.keys(permissions.controllers)[index]}`;\n const actions = sortBy(\n Object.keys(curr).reduce((acc, current) => {\n return [\n ...acc,\n {\n ...curr[current],\n label: current,\n name: `${currentName}.${current}`,\n },\n ];\n }, []),\n 'label'\n );\n\n return [\n ...acc,\n {\n actions,\n label: Object.keys(permissions.controllers)[index],\n name: currentName,\n },\n ];\n }, []),\n 'label'\n );\n }, [name, permissions]);\n\n return (\n <Box padding={6}>\n {subCategories.map((subCategory) => (\n <SubCategory key={subCategory.name} subCategory={subCategory} />\n ))}\n </Box>\n );\n};\n\nPermissionRow.propTypes = {\n name: PropTypes.string.isRequired,\n permissions: PropTypes.object.isRequired,\n};\n\nexport default PermissionRow;\n"],"names":["PermissionRow","name","permissions","subCategories","useMemo","sortBy","Object","values","controllers","reduce","acc","curr","index","currentName","keys","actions","current","label","_jsx","Box","padding","map","subCategory","SubCategory","propTypes","PropTypes","string","isRequired","object"],"mappings":";;;;;;;;;;;;;;AAQA,MAAMA,gBAAgB,CAAC,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAA;AAC1C,IAAA,MAAMC,gBAAgBC,aAAAA,CAAQ,IAAA;QAC5B,OAAOC,uBAAAA,CACLC,MAAAA,CAAOC,MAAM,CAACL,WAAAA,CAAYM,WAAW,CAAA,CAAEC,MAAM,CAAC,CAACC,GAAAA,EAAKC,IAAAA,EAAMC,KAAAA,GAAAA;AACxD,YAAA,MAAMC,WAAAA,GAAc,CAAA,EAAGZ,IAAAA,CAAK,aAAa,EAAEK,MAAAA,CAAOQ,IAAI,CAACZ,WAAAA,CAAYM,WAAW,CAAC,CAACI,MAAM,CAAA,CAAE;YACxF,MAAMG,OAAAA,GAAUV,wBACdC,MAAAA,CAAOQ,IAAI,CAACH,IAAAA,CAAAA,CAAMF,MAAM,CAAC,CAACC,GAAAA,EAAKM,OAAAA,GAAAA;gBAC7B,OAAO;AACFN,oBAAAA,GAAAA,GAAAA;AACH,oBAAA;wBACE,GAAGC,IAAI,CAACK,OAAAA,CAAQ;wBAChBC,KAAAA,EAAOD,OAAAA;AACPf,wBAAAA,IAAAA,EAAM,CAAA,EAAGY,WAAAA,CAAY,CAAC,EAAEG,OAAAA,CAAAA;AAC1B;AACD,iBAAA;AACH,YAAA,CAAA,EAAG,EAAE,CAAA,EACL,OAAA,CAAA;YAGF,OAAO;AACFN,gBAAAA,GAAAA,GAAAA;AACH,gBAAA;AACEK,oBAAAA,OAAAA;AACAE,oBAAAA,KAAAA,EAAOX,OAAOQ,IAAI,CAACZ,YAAYM,WAAW,CAAC,CAACI,KAAAA,CAAM;oBAClDX,IAAAA,EAAMY;AACR;AACD,aAAA;AACH,QAAA,CAAA,EAAG,EAAE,CAAA,EACL,OAAA,CAAA;IAEJ,CAAA,EAAG;AAACZ,QAAAA,IAAAA;AAAMC,QAAAA;AAAY,KAAA,CAAA;AAEtB,IAAA,qBACEgB,cAAA,CAACC,gBAAAA,EAAAA;QAAIC,OAAAA,EAAS,CAAA;AACXjB,QAAAA,QAAAA,EAAAA,aAAAA,CAAckB,GAAG,CAAC,CAACC,WAAAA,iBAClBJ,cAAA,CAACK,WAAAA,EAAAA;gBAAmCD,WAAAA,EAAaA;AAA/BA,aAAAA,EAAAA,WAAAA,CAAYrB,IAAI,CAAA;;AAI1C;AAEAD,aAAAA,CAAcwB,SAAS,GAAG;IACxBvB,IAAAA,EAAMwB,0BAAAA,CAAUC,MAAM,CAACC,UAAU;IACjCzB,WAAAA,EAAauB,0BAAAA,CAAUG,MAAM,CAACD;AAChC,CAAA;;;;"}
|
|
@@ -10,13 +10,19 @@ var reactIntl = require('react-intl');
|
|
|
10
10
|
var index = require('../../contexts/UsersPermissionsContext/index.js');
|
|
11
11
|
var index$1 = require('../BoundRoute/index.js');
|
|
12
12
|
|
|
13
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var get__default = /*#__PURE__*/_interopDefault(get);
|
|
16
|
+
var isEmpty__default = /*#__PURE__*/_interopDefault(isEmpty);
|
|
17
|
+
var without__default = /*#__PURE__*/_interopDefault(without);
|
|
18
|
+
|
|
13
19
|
const Policies = ()=>{
|
|
14
20
|
const { formatMessage } = reactIntl.useIntl();
|
|
15
21
|
const { selectedAction, routes } = index.useUsersPermissions();
|
|
16
|
-
const path =
|
|
17
|
-
const controllerRoutes =
|
|
22
|
+
const path = without__default.default(selectedAction.split('.'), 'controllers');
|
|
23
|
+
const controllerRoutes = get__default.default(routes, path[0]);
|
|
18
24
|
const pathResolved = path.slice(1).join('.');
|
|
19
|
-
const displayedRoutes =
|
|
25
|
+
const displayedRoutes = isEmpty__default.default(controllerRoutes) ? [] : controllerRoutes.filter((o)=>o.handler.endsWith(pathResolved));
|
|
20
26
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
|
|
21
27
|
col: 5,
|
|
22
28
|
xs: 12,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../admin/src/components/Policies/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Grid, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport without from 'lodash/without';\nimport { useIntl } from 'react-intl';\n\nimport { useUsersPermissions } from '../../contexts/UsersPermissionsContext';\nimport BoundRoute from '../BoundRoute';\n\nconst Policies = () => {\n const { formatMessage } = useIntl();\n const { selectedAction, routes } = useUsersPermissions();\n\n const path = without(selectedAction.split('.'), 'controllers');\n const controllerRoutes = get(routes, path[0]);\n const pathResolved = path.slice(1).join('.');\n\n const displayedRoutes = isEmpty(controllerRoutes)\n ? []\n : controllerRoutes.filter((o) => o.handler.endsWith(pathResolved));\n\n return (\n <Grid.Item\n col={5}\n xs={12}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {displayedRoutes.map((route, key) => (\n // eslint-disable-next-line react/no-array-index-key\n <BoundRoute key={key} route={route} />\n ))}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'users-permissions.Policies.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'users-permissions.Policies.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n\nexport default Policies;\n"],"names":["Policies","formatMessage","useIntl","selectedAction","routes","useUsersPermissions","path","without","split","controllerRoutes","get","pathResolved","slice","join","displayedRoutes","isEmpty","filter","o","handler","endsWith","_jsx","Grid","Item","col","xs","background","paddingTop","paddingBottom","paddingLeft","paddingRight","style","minHeight","direction","alignItems","Flex","gap","map","route","key","BoundRoute","_jsxs","Typography","variant","tag","id","defaultMessage","textColor"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../admin/src/components/Policies/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Grid, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport without from 'lodash/without';\nimport { useIntl } from 'react-intl';\n\nimport { useUsersPermissions } from '../../contexts/UsersPermissionsContext';\nimport BoundRoute from '../BoundRoute';\n\nconst Policies = () => {\n const { formatMessage } = useIntl();\n const { selectedAction, routes } = useUsersPermissions();\n\n const path = without(selectedAction.split('.'), 'controllers');\n const controllerRoutes = get(routes, path[0]);\n const pathResolved = path.slice(1).join('.');\n\n const displayedRoutes = isEmpty(controllerRoutes)\n ? []\n : controllerRoutes.filter((o) => o.handler.endsWith(pathResolved));\n\n return (\n <Grid.Item\n col={5}\n xs={12}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {displayedRoutes.map((route, key) => (\n // eslint-disable-next-line react/no-array-index-key\n <BoundRoute key={key} route={route} />\n ))}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'users-permissions.Policies.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'users-permissions.Policies.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n\nexport default Policies;\n"],"names":["Policies","formatMessage","useIntl","selectedAction","routes","useUsersPermissions","path","without","split","controllerRoutes","get","pathResolved","slice","join","displayedRoutes","isEmpty","filter","o","handler","endsWith","_jsx","Grid","Item","col","xs","background","paddingTop","paddingBottom","paddingLeft","paddingRight","style","minHeight","direction","alignItems","Flex","gap","map","route","key","BoundRoute","_jsxs","Typography","variant","tag","id","defaultMessage","textColor"],"mappings":";;;;;;;;;;;;;;;;;;AAWA,MAAMA,QAAAA,GAAW,IAAA;IACf,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,cAAc,EAAEC,MAAM,EAAE,GAAGC,yBAAAA,EAAAA;AAEnC,IAAA,MAAMC,IAAAA,GAAOC,wBAAAA,CAAQJ,cAAAA,CAAeK,KAAK,CAAC,GAAA,CAAA,EAAM,aAAA,CAAA;AAChD,IAAA,MAAMC,gBAAAA,GAAmBC,oBAAAA,CAAIN,MAAAA,EAAQE,IAAI,CAAC,CAAA,CAAE,CAAA;AAC5C,IAAA,MAAMK,eAAeL,IAAAA,CAAKM,KAAK,CAAC,CAAA,CAAA,CAAGC,IAAI,CAAC,GAAA,CAAA;AAExC,IAAA,MAAMC,eAAAA,GAAkBC,wBAAAA,CAAQN,gBAAAA,CAAAA,GAC5B,EAAE,GACFA,gBAAAA,CAAiBO,MAAM,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAEC,OAAO,CAACC,QAAQ,CAACR,YAAAA,CAAAA,CAAAA;IAEtD,qBACES,cAAA,CAACC,kBAAKC,IAAI,EAAA;QACRC,GAAAA,EAAK,CAAA;QACLC,EAAAA,EAAI,EAAA;QACJC,UAAAA,EAAW,YAAA;QACXC,UAAAA,EAAY,CAAA;QACZC,aAAAA,EAAe,CAAA;QACfC,WAAAA,EAAa,CAAA;QACbC,YAAAA,EAAc,CAAA;QACdC,KAAAA,EAAO;YAAEC,SAAAA,EAAW;AAAO,SAAA;QAC3BC,SAAAA,EAAU,QAAA;QACVC,UAAAA,EAAW,SAAA;AAEV9B,QAAAA,QAAAA,EAAAA,cAAAA,iBACCiB,cAAA,CAACc,iBAAAA,EAAAA;YAAKF,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUE,GAAAA,EAAK,CAAA;AAChDrB,YAAAA,QAAAA,EAAAA,eAAAA,CAAgBsB,GAAG,CAAC,CAACC,KAAAA,EAAOC;8BAE3BlB,cAAA,CAACmB,OAAAA,EAAAA;oBAAqBF,KAAAA,EAAOA;AAAZC,iBAAAA,EAAAA,GAAAA,CAAAA;2BAIrBE,eAAA,CAACN,iBAAAA,EAAAA;YAAKF,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUE,GAAAA,EAAK,CAAA;;8BACjDf,cAAA,CAACqB,uBAAAA,EAAAA;oBAAWC,OAAAA,EAAQ,OAAA;oBAAQC,GAAAA,EAAI,IAAA;8BAC7B1C,aAAAA,CAAc;wBACb2C,EAAAA,EAAI,yCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;8BAEFzB,cAAA,CAACqB,uBAAAA,EAAAA;oBAAWE,GAAAA,EAAI,GAAA;oBAAIG,SAAAA,EAAU,YAAA;8BAC3B7C,aAAAA,CAAc;wBACb2C,EAAAA,EAAI,wCAAA;wBACJC,cAAAA,EACE;AACJ,qBAAA;;;;;AAMZ;;;;"}
|
|
@@ -12,6 +12,10 @@ var index$2 = require('../Policies/index.js');
|
|
|
12
12
|
var init = require('./init.js');
|
|
13
13
|
var reducer = require('./reducer.js');
|
|
14
14
|
|
|
15
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
|
|
17
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
18
|
+
|
|
15
19
|
const UsersPermissions = /*#__PURE__*/ React.forwardRef(({ permissions, routes }, ref)=>{
|
|
16
20
|
const { formatMessage } = reactIntl.useIntl();
|
|
17
21
|
const [state, dispatch] = React.useReducer(reducer.default, reducer.initialState, (state)=>init(state, permissions, routes));
|
|
@@ -107,8 +111,8 @@ const UsersPermissions = /*#__PURE__*/ React.forwardRef(({ permissions, routes }
|
|
|
107
111
|
});
|
|
108
112
|
});
|
|
109
113
|
UsersPermissions.propTypes = {
|
|
110
|
-
permissions:
|
|
111
|
-
routes:
|
|
114
|
+
permissions: PropTypes__default.default.object.isRequired,
|
|
115
|
+
routes: PropTypes__default.default.object.isRequired
|
|
112
116
|
};
|
|
113
117
|
var UsersPermissions$1 = /*#__PURE__*/ React.memo(UsersPermissions);
|
|
114
118
|
|