@webiny/app-security-access-management 5.27.0 → 5.29.0-beta.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/components/GroupAutocomplete/graphql.js +14 -3
- package/components/GroupAutocomplete/graphql.js.map +1 -1
- package/components/GroupAutocomplete/index.js +23 -8
- package/components/GroupAutocomplete/index.js.map +1 -1
- package/components/NotAuthorizedError/NotAuthorizedError.js +39 -18
- package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
- package/components/NotAuthorizedError/index.js +13 -1
- package/components/NotAuthorizedError/index.js.map +1 -1
- package/index.js +57 -32
- package/index.js.map +1 -1
- package/package.json +12 -12
- package/plugins/constants.js +9 -2
- package/plugins/constants.js.map +1 -1
- package/plugins/index.js +20 -6
- package/plugins/index.js.map +1 -1
- package/plugins/installation.js +47 -25
- package/plugins/installation.js.map +1 -1
- package/plugins/permissionRenderer/SecurityPermissions.js +69 -46
- package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
- package/plugins/permissionRenderer/index.js +33 -15
- package/plugins/permissionRenderer/index.js.map +1 -1
- package/plugins/routes.js +37 -19
- package/plugins/routes.js.map +1 -1
- package/plugins/secureRouteError.js +16 -4
- package/plugins/secureRouteError.js.map +1 -1
- package/types.js +5 -1
- package/types.js.map +1 -1
- package/ui/elements/GroupAutocompleteElement.js +34 -18
- package/ui/elements/GroupAutocompleteElement.js.map +1 -1
- package/ui/views/ApiKeys/ApiKeyForm.js +122 -81
- package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
- package/ui/views/ApiKeys/ApiKeys.js +22 -7
- package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
- package/ui/views/ApiKeys/ApiKeysDataList.js +101 -66
- package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
- package/ui/views/ApiKeys/graphql.js +22 -7
- package/ui/views/ApiKeys/graphql.js.map +1 -1
- package/ui/views/ApiKeys/index.js +18 -1
- package/ui/views/ApiKeys/index.js.map +1 -1
- package/ui/views/ApiKeys/utils.js +18 -5
- package/ui/views/ApiKeys/utils.js.map +1 -1
- package/ui/views/Groups/Groups.js +22 -7
- package/ui/views/Groups/Groups.js.map +1 -1
- package/ui/views/Groups/GroupsDataList.js +107 -71
- package/ui/views/Groups/GroupsDataList.js.map +1 -1
- package/ui/views/Groups/GroupsForm.js +125 -84
- package/ui/views/Groups/GroupsForm.js.map +1 -1
- package/ui/views/Groups/graphql.js +22 -7
- package/ui/views/Groups/graphql.js.map +1 -1
- package/ui/views/Groups/index.js +18 -1
- package/ui/views/Groups/index.js.map +1 -1
- package/ui/views/utils.js +16 -4
- package/ui/views/utils.js.map +1 -1
|
@@ -1,16 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.SecurityPermissions = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
17
|
+
|
|
18
|
+
var _Select = require("@webiny/ui/Select");
|
|
19
|
+
|
|
20
|
+
var _i18n = require("@webiny/app/i18n");
|
|
21
|
+
|
|
22
|
+
var _Permissions = require("@webiny/app-admin/components/Permissions");
|
|
23
|
+
|
|
24
|
+
var _form = require("@webiny/form");
|
|
25
|
+
|
|
26
|
+
var _Elevation = require("@webiny/ui/Elevation");
|
|
27
|
+
|
|
28
|
+
var _Typography = require("@webiny/ui/Typography");
|
|
2
29
|
|
|
3
30
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
|
|
4
31
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { Select } from "@webiny/ui/Select";
|
|
8
|
-
import { i18n } from "@webiny/app/i18n";
|
|
9
|
-
import { PermissionInfo, gridNoPaddingClass } from "@webiny/app-admin/components/Permissions";
|
|
10
|
-
import { Form } from "@webiny/form";
|
|
11
|
-
import { Elevation } from "@webiny/ui/Elevation";
|
|
12
|
-
import { Typography } from "@webiny/ui/Typography";
|
|
13
|
-
var t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
|
|
32
|
+
var t = _i18n.i18n.ns("app-security-admin-users/plugins/permissionRenderer");
|
|
33
|
+
|
|
14
34
|
var SECURITY = "security";
|
|
15
35
|
var SECURITY_FULL_ACCESS = "".concat(SECURITY, ".*");
|
|
16
36
|
var SECURITY_GROUP_ACCESS = "".concat(SECURITY, ".group");
|
|
@@ -18,10 +38,11 @@ var SECURITY_API_KEY_ACCESS = "".concat(SECURITY, ".apiKey");
|
|
|
18
38
|
var FULL_ACCESS = "full";
|
|
19
39
|
var NO_ACCESS = "no";
|
|
20
40
|
var CUSTOM_ACCESS = "custom";
|
|
21
|
-
|
|
41
|
+
|
|
42
|
+
var SecurityPermissions = function SecurityPermissions(_ref) {
|
|
22
43
|
var value = _ref.value,
|
|
23
44
|
onChange = _ref.onChange;
|
|
24
|
-
var onFormChange = useCallback(function (data) {
|
|
45
|
+
var onFormChange = (0, _react.useCallback)(function (data) {
|
|
25
46
|
var newValue = [];
|
|
26
47
|
|
|
27
48
|
if (Array.isArray(value)) {
|
|
@@ -59,7 +80,7 @@ export var SecurityPermissions = function SecurityPermissions(_ref) {
|
|
|
59
80
|
|
|
60
81
|
onChange(newValue);
|
|
61
82
|
}, [value]);
|
|
62
|
-
var formData = useMemo(function () {
|
|
83
|
+
var formData = (0, _react.useMemo)(function () {
|
|
63
84
|
if (!Array.isArray(value)) {
|
|
64
85
|
return {
|
|
65
86
|
accessLevel: NO_ACCESS
|
|
@@ -109,68 +130,70 @@ export var SecurityPermissions = function SecurityPermissions(_ref) {
|
|
|
109
130
|
|
|
110
131
|
return data;
|
|
111
132
|
}, []);
|
|
112
|
-
return /*#__PURE__*/
|
|
133
|
+
return /*#__PURE__*/_react.default.createElement(_form.Form, {
|
|
113
134
|
data: formData,
|
|
114
135
|
onChange: onFormChange
|
|
115
136
|
}, function (_ref2) {
|
|
116
137
|
var data = _ref2.data,
|
|
117
138
|
Bind = _ref2.Bind;
|
|
118
|
-
return /*#__PURE__*/
|
|
119
|
-
className: gridNoPaddingClass
|
|
120
|
-
}, /*#__PURE__*/
|
|
139
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
|
|
140
|
+
className: _Permissions.gridNoPaddingClass
|
|
141
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
121
142
|
span: 6
|
|
122
|
-
}, /*#__PURE__*/
|
|
123
|
-
title: t(_templateObject || (_templateObject =
|
|
124
|
-
})), /*#__PURE__*/
|
|
143
|
+
}, /*#__PURE__*/_react.default.createElement(_Permissions.PermissionInfo, {
|
|
144
|
+
title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Access Level"])))
|
|
145
|
+
})), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
125
146
|
span: 6
|
|
126
|
-
}, /*#__PURE__*/
|
|
147
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
127
148
|
name: "accessLevel"
|
|
128
|
-
}, /*#__PURE__*/
|
|
129
|
-
label: t(_templateObject2 || (_templateObject2 =
|
|
130
|
-
}, /*#__PURE__*/
|
|
149
|
+
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
150
|
+
label: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Access Level"])))
|
|
151
|
+
}, /*#__PURE__*/_react.default.createElement("option", {
|
|
131
152
|
value: NO_ACCESS
|
|
132
|
-
}, t(_templateObject3 || (_templateObject3 =
|
|
153
|
+
}, t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
|
|
133
154
|
value: FULL_ACCESS
|
|
134
|
-
}, t(_templateObject4 || (_templateObject4 =
|
|
155
|
+
}, t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Full access"])))), /*#__PURE__*/_react.default.createElement("option", {
|
|
135
156
|
value: CUSTOM_ACCESS
|
|
136
|
-
}, t(_templateObject5 || (_templateObject5 =
|
|
157
|
+
}, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Custom access"])))))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
|
|
137
158
|
z: 1,
|
|
138
159
|
style: {
|
|
139
160
|
marginTop: 10
|
|
140
161
|
}
|
|
141
|
-
}, /*#__PURE__*/
|
|
162
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
142
163
|
span: 12
|
|
143
|
-
}, /*#__PURE__*/
|
|
164
|
+
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
144
165
|
use: "overline"
|
|
145
|
-
}, t(_templateObject6 || (_templateObject6 =
|
|
166
|
+
}, t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["API Keys"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
146
167
|
span: 12
|
|
147
|
-
}, /*#__PURE__*/
|
|
168
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
148
169
|
name: "apiKeyAccessScope"
|
|
149
|
-
}, /*#__PURE__*/
|
|
150
|
-
label: t(_templateObject7 || (_templateObject7 =
|
|
151
|
-
}, /*#__PURE__*/
|
|
170
|
+
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
171
|
+
label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Access Scope"])))
|
|
172
|
+
}, /*#__PURE__*/_react.default.createElement("option", {
|
|
152
173
|
value: NO_ACCESS
|
|
153
|
-
}, t(_templateObject8 || (_templateObject8 =
|
|
174
|
+
}, t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
|
|
154
175
|
value: FULL_ACCESS
|
|
155
|
-
}, t(_templateObject9 || (_templateObject9 =
|
|
176
|
+
}, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Full access"]))))))))), /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
|
|
156
177
|
z: 1,
|
|
157
178
|
style: {
|
|
158
179
|
marginTop: 10
|
|
159
180
|
}
|
|
160
|
-
}, /*#__PURE__*/
|
|
181
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
161
182
|
span: 12
|
|
162
|
-
}, /*#__PURE__*/
|
|
183
|
+
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
163
184
|
use: "overline"
|
|
164
|
-
}, t(_templateObject10 || (_templateObject10 =
|
|
185
|
+
}, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Groups"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
165
186
|
span: 12
|
|
166
|
-
}, /*#__PURE__*/
|
|
187
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
167
188
|
name: "groupAccessScope"
|
|
168
|
-
}, /*#__PURE__*/
|
|
169
|
-
label: t(_templateObject11 || (_templateObject11 =
|
|
170
|
-
}, /*#__PURE__*/
|
|
189
|
+
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
190
|
+
label: t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Access Scope"])))
|
|
191
|
+
}, /*#__PURE__*/_react.default.createElement("option", {
|
|
171
192
|
value: NO_ACCESS
|
|
172
|
-
}, t(_templateObject12 || (_templateObject12 =
|
|
193
|
+
}, t(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
|
|
173
194
|
value: FULL_ACCESS
|
|
174
|
-
}, t(_templateObject13 || (_templateObject13 =
|
|
195
|
+
}, t(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2.default)(["Full access"])))))))))));
|
|
175
196
|
});
|
|
176
|
-
};
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
exports.SecurityPermissions = SecurityPermissions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SecurityPermissions.tsx"],"names":["React","Fragment","useCallback","useMemo","Grid","Cell","Select","i18n","PermissionInfo","gridNoPaddingClass","Form","Elevation","Typography","t","ns","SECURITY","SECURITY_FULL_ACCESS","SECURITY_GROUP_ACCESS","SECURITY_API_KEY_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","SecurityPermissions","value","onChange","onFormChange","data","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","groupAccessScope","apiKeyAccessScope","length","formData","hasFullAccess","find","hasGroupAccess","hasApiKeyAccess","Bind","marginTop"],"mappings":"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","sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nconst SECURITY = \"security\";\nconst SECURITY_FULL_ACCESS = `${SECURITY}.*`;\nconst SECURITY_GROUP_ACCESS = `${SECURITY}.group`;\nconst SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface SecurityPermissionsProps {\n value: SecurityPermission[];\n onChange: (value: SecurityPermission[]) => void;\n}\nexport const SecurityPermissions: React.FC<SecurityPermissionsProps> = ({ value, onChange }) => {\n const onFormChange = useCallback(\n data => {\n let newValue: SecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(SECURITY));\n }\n\n const permissions = [];\n if (data.accessLevel === FULL_ACCESS) {\n permissions.push({ name: SECURITY_FULL_ACCESS });\n } else if (data.accessLevel === CUSTOM_ACCESS) {\n if (data.groupAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_GROUP_ACCESS });\n }\n\n if (data.apiKeyAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_API_KEY_ACCESS });\n }\n }\n\n if (permissions && permissions.length) {\n newValue.push(...permissions);\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === SECURITY_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(SECURITY));\n if (permissions.length === 0) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data = {\n accessLevel: CUSTOM_ACCESS,\n groupAccessScope: NO_ACCESS,\n apiKeyAccessScope: NO_ACCESS\n };\n\n const hasGroupAccess = permissions.find(item => item.name === SECURITY_GROUP_ACCESS);\n if (hasGroupAccess) {\n data.groupAccessScope = FULL_ACCESS;\n }\n\n const hasApiKeyAccess = permissions.find(item => item.name === SECURITY_API_KEY_ACCESS);\n if (hasApiKeyAccess) {\n data.apiKeyAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => {\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <React.Fragment>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`API Keys`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"apiKeyAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Groups`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"groupAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n </React.Fragment>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","SECURITY","SECURITY_FULL_ACCESS","SECURITY_GROUP_ACCESS","SECURITY_API_KEY_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","SecurityPermissions","value","onChange","onFormChange","useCallback","data","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","groupAccessScope","apiKeyAccessScope","length","formData","useMemo","hasFullAccess","find","hasGroupAccess","hasApiKeyAccess","Bind","gridNoPaddingClass","marginTop"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nconst SECURITY = \"security\";\nconst SECURITY_FULL_ACCESS = `${SECURITY}.*`;\nconst SECURITY_GROUP_ACCESS = `${SECURITY}.group`;\nconst SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface SecurityPermissionsProps {\n value: SecurityPermission[];\n onChange: (value: SecurityPermission[]) => void;\n}\nexport const SecurityPermissions: React.FC<SecurityPermissionsProps> = ({ value, onChange }) => {\n const onFormChange = useCallback(\n data => {\n let newValue: SecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(SECURITY));\n }\n\n const permissions = [];\n if (data.accessLevel === FULL_ACCESS) {\n permissions.push({ name: SECURITY_FULL_ACCESS });\n } else if (data.accessLevel === CUSTOM_ACCESS) {\n if (data.groupAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_GROUP_ACCESS });\n }\n\n if (data.apiKeyAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_API_KEY_ACCESS });\n }\n }\n\n if (permissions && permissions.length) {\n newValue.push(...permissions);\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === SECURITY_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(SECURITY));\n if (permissions.length === 0) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data = {\n accessLevel: CUSTOM_ACCESS,\n groupAccessScope: NO_ACCESS,\n apiKeyAccessScope: NO_ACCESS\n };\n\n const hasGroupAccess = permissions.find(item => item.name === SECURITY_GROUP_ACCESS);\n if (hasGroupAccess) {\n data.groupAccessScope = FULL_ACCESS;\n }\n\n const hasApiKeyAccess = permissions.find(item => item.name === SECURITY_API_KEY_ACCESS);\n if (hasApiKeyAccess) {\n data.apiKeyAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => {\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <React.Fragment>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`API Keys`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"apiKeyAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Groups`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"groupAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n </React.Fragment>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,21 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _i18n = require("@webiny/app/i18n");
|
|
15
|
+
|
|
16
|
+
var _Accordion = require("@webiny/ui/Accordion");
|
|
17
|
+
|
|
18
|
+
var _baselineSecurity24px = require("@webiny/app-admin/assets/icons/baseline-security-24px.svg");
|
|
19
|
+
|
|
20
|
+
var _SecurityPermissions = require("./SecurityPermissions");
|
|
21
|
+
|
|
22
|
+
var _PermissionRendererPlugin = require("@webiny/app-admin/plugins/PermissionRendererPlugin");
|
|
2
23
|
|
|
3
24
|
var _templateObject, _templateObject2;
|
|
4
25
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { ReactComponent as SecurityIcon } from "@webiny/app-admin/assets/icons/baseline-security-24px.svg";
|
|
9
|
-
import { SecurityPermissions } from "./SecurityPermissions";
|
|
10
|
-
import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin";
|
|
11
|
-
var t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
|
|
12
|
-
export default new PermissionRendererPlugin({
|
|
26
|
+
var t = _i18n.i18n.ns("app-security-admin-users/plugins/permissionRenderer");
|
|
27
|
+
|
|
28
|
+
var _default = new _PermissionRendererPlugin.PermissionRendererPlugin({
|
|
13
29
|
render: function render(props) {
|
|
14
|
-
return /*#__PURE__*/
|
|
15
|
-
icon: /*#__PURE__*/
|
|
16
|
-
title: t(_templateObject || (_templateObject =
|
|
17
|
-
description: t(_templateObject2 || (_templateObject2 =
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
|
|
31
|
+
icon: /*#__PURE__*/_react.default.createElement(_baselineSecurity24px.ReactComponent, null),
|
|
32
|
+
title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Security"]))),
|
|
33
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Manage Security app access permissions."]))),
|
|
18
34
|
"data-testid": "permission.security"
|
|
19
|
-
}, /*#__PURE__*/
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement(_SecurityPermissions.SecurityPermissions, props));
|
|
20
36
|
}
|
|
21
|
-
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","PermissionRendererPlugin","render","props"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as SecurityIcon } from \"@webiny/app-admin/assets/icons/baseline-security-24px.svg\";\nimport { SecurityPermissions } from \"./SecurityPermissions\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nexport default new PermissionRendererPlugin({\n render(props) {\n return (\n <AccordionItem\n icon={<SecurityIcon />}\n title={t`Security`}\n description={t`Manage Security app access permissions.`}\n data-testid={\"permission.security\"}\n >\n <SecurityPermissions {...props} />\n </AccordionItem>\n );\n }\n});\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,qDAAR,CAAV;;eAEe,IAAIC,kDAAJ,CAA6B;EACxCC,MADwC,kBACjCC,KADiC,EAC1B;IACV,oBACI,6BAAC,wBAAD;MACI,IAAI,eAAE,6BAAC,oCAAD,OADV;MAEI,KAAK,EAAEL,CAAF,2FAFT;MAGI,WAAW,EAAEA,CAAF,4HAHf;MAII,eAAa;IAJjB,gBAMI,6BAAC,wCAAD,EAAyBK,KAAzB,CANJ,CADJ;EAUH;AAZuC,CAA7B,C"}
|
package/plugins/routes.js
CHANGED
|
@@ -1,38 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactHelmet = _interopRequireDefault(require("react-helmet"));
|
|
13
|
+
|
|
14
|
+
var _reactRouter = require("@webiny/react-router");
|
|
15
|
+
|
|
16
|
+
var _AdminLayout = require("@webiny/app-admin/components/AdminLayout");
|
|
17
|
+
|
|
18
|
+
var _components = require("@webiny/app-security/components");
|
|
19
|
+
|
|
20
|
+
var _Groups = require("../ui/views/Groups");
|
|
21
|
+
|
|
22
|
+
var _ApiKeys = require("../ui/views/ApiKeys");
|
|
23
|
+
|
|
24
|
+
var _constants = require("./constants");
|
|
25
|
+
|
|
9
26
|
var plugins = [{
|
|
10
27
|
name: "route-security-groups",
|
|
11
28
|
type: "route",
|
|
12
|
-
route: /*#__PURE__*/
|
|
29
|
+
route: /*#__PURE__*/_react.default.createElement(_reactRouter.Route, {
|
|
13
30
|
exact: true,
|
|
14
31
|
path: "/access-management/groups",
|
|
15
32
|
render: function render() {
|
|
16
|
-
return /*#__PURE__*/
|
|
17
|
-
permission: Permission.Groups
|
|
18
|
-
}, /*#__PURE__*/
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(_components.SecureRoute, {
|
|
34
|
+
permission: _constants.Permission.Groups
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement(_AdminLayout.AdminLayout, null, /*#__PURE__*/_react.default.createElement(_reactHelmet.default, {
|
|
19
36
|
title: "Access Management - Groups"
|
|
20
|
-
}), /*#__PURE__*/
|
|
37
|
+
}), /*#__PURE__*/_react.default.createElement(_Groups.Groups, null)));
|
|
21
38
|
}
|
|
22
39
|
})
|
|
23
40
|
}, {
|
|
24
41
|
name: "route-security-api-keys",
|
|
25
42
|
type: "route",
|
|
26
|
-
route: /*#__PURE__*/
|
|
43
|
+
route: /*#__PURE__*/_react.default.createElement(_reactRouter.Route, {
|
|
27
44
|
exact: true,
|
|
28
45
|
path: "/access-management/api-keys",
|
|
29
46
|
render: function render() {
|
|
30
|
-
return /*#__PURE__*/
|
|
31
|
-
permission: Permission.ApiKeys
|
|
32
|
-
}, /*#__PURE__*/
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_components.SecureRoute, {
|
|
48
|
+
permission: _constants.Permission.ApiKeys
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(_AdminLayout.AdminLayout, {
|
|
33
50
|
title: "Access Management - API Keys"
|
|
34
|
-
}, /*#__PURE__*/
|
|
51
|
+
}, /*#__PURE__*/_react.default.createElement(_ApiKeys.ApiKeys, null)));
|
|
35
52
|
}
|
|
36
53
|
})
|
|
37
54
|
}];
|
|
38
|
-
|
|
55
|
+
var _default = plugins;
|
|
56
|
+
exports.default = _default;
|
package/plugins/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["plugins","name","type","route","Permission","Groups","ApiKeys"],"sources":["routes.tsx"],"sourcesContent":["import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport { Route } from \"@webiny/react-router\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport { SecureRoute } from \"@webiny/app-security/components\";\nimport { RoutePlugin } from \"@webiny/app/types\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport { Permission } from \"./constants\";\n\nconst plugins: RoutePlugin[] = [\n {\n name: \"route-security-groups\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/groups\"}\n render={() => (\n <SecureRoute permission={Permission.Groups}>\n <AdminLayout>\n <Helmet title={\"Access Management - Groups\"} />\n <Groups />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n },\n {\n name: \"route-security-api-keys\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/api-keys\"}\n render={() => (\n <SecureRoute permission={Permission.ApiKeys}>\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n }\n];\n\nexport default plugins;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA,IAAMA,OAAsB,GAAG,CAC3B;EACIC,IAAI,EAAE,uBADV;EAEIC,IAAI,EAAE,OAFV;EAGIC,KAAK,eACD,6BAAC,kBAAD;IACI,KAAK,MADT;IAEI,IAAI,EAAE,2BAFV;IAGI,MAAM,EAAE;MAAA,oBACJ,6BAAC,uBAAD;QAAa,UAAU,EAAEC,qBAAA,CAAWC;MAApC,gBACI,6BAAC,wBAAD,qBACI,6BAAC,oBAAD;QAAQ,KAAK,EAAE;MAAf,EADJ,eAEI,6BAAC,cAAD,OAFJ,CADJ,CADI;IAAA;EAHZ;AAJR,CAD2B,EAmB3B;EACIJ,IAAI,EAAE,yBADV;EAEIC,IAAI,EAAE,OAFV;EAGIC,KAAK,eACD,6BAAC,kBAAD;IACI,KAAK,MADT;IAEI,IAAI,EAAE,6BAFV;IAGI,MAAM,EAAE;MAAA,oBACJ,6BAAC,uBAAD;QAAa,UAAU,EAAEC,qBAAA,CAAWE;MAApC,gBACI,6BAAC,wBAAD;QAAa,KAAK,EAAE;MAApB,gBACI,6BAAC,gBAAD,OADJ,CADJ,CADI;IAAA;EAHZ;AAJR,CAnB2B,CAA/B;eAsCeN,O"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _NotAuthorizedError = require("../components/NotAuthorizedError");
|
|
13
|
+
|
|
3
14
|
var plugin = {
|
|
4
15
|
type: "secure-route-error",
|
|
5
16
|
name: "secure-route-error",
|
|
6
17
|
render: function render() {
|
|
7
|
-
return /*#__PURE__*/React.createElement(NotAuthorizedError, null);
|
|
18
|
+
return /*#__PURE__*/React.createElement(_NotAuthorizedError.NotAuthorizedError, null);
|
|
8
19
|
}
|
|
9
20
|
};
|
|
10
|
-
|
|
21
|
+
var _default = plugin;
|
|
22
|
+
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["plugin","type","name","render"],"sources":["secureRouteError.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { NotAuthorizedError } from \"~/components/NotAuthorizedError\";\n\ntype SecureRouteErrorPlugin = Plugin & { render: () => React.ReactNode };\n\nconst plugin: SecureRouteErrorPlugin = {\n type: \"secure-route-error\",\n name: \"secure-route-error\",\n render(): React.ReactElement {\n return <NotAuthorizedError />;\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;AAAA;;AAEA;;AAIA,IAAMA,MAA8B,GAAG;EACnCC,IAAI,EAAE,oBAD6B;EAEnCC,IAAI,EAAE,oBAF6B;EAGnCC,MAHmC,oBAGN;IACzB,oBAAO,oBAAC,sCAAD,OAAP;EACH;AALkC,CAAvC;eAQeH,M"}
|
package/types.js
CHANGED
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { SecurityPermission } from \"@webiny/app-security/types\";\n\nexport interface Group {\n id: string;\n name: string;\n description: string;\n slug: string;\n system?: boolean;\n}\nexport interface ApiKey {\n id: string;\n token: string;\n name: string;\n description: string;\n permissions: SecurityPermission[];\n}\n"],"mappings":""}
|
|
@@ -1,22 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
4
|
-
import _createSuper from "@babel/runtime/helpers/createSuper";
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { InputElement } from "@webiny/app-admin/ui/elements/form/InputElement";
|
|
7
|
-
import { GroupAutocomplete } from "../../components/GroupAutocomplete";
|
|
8
|
-
export var GroupAutocompleteElement = /*#__PURE__*/function (_InputElement) {
|
|
9
|
-
_inherits(GroupAutocompleteElement, _InputElement);
|
|
10
|
-
|
|
11
|
-
var _super = _createSuper(GroupAutocompleteElement);
|
|
1
|
+
"use strict";
|
|
12
2
|
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.GroupAutocompleteElement = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
19
|
|
|
20
|
+
var _InputElement2 = require("@webiny/app-admin/ui/elements/form/InputElement");
|
|
21
|
+
|
|
22
|
+
var _GroupAutocomplete = require("../../components/GroupAutocomplete");
|
|
23
|
+
|
|
24
|
+
var GroupAutocompleteElement = /*#__PURE__*/function (_InputElement) {
|
|
25
|
+
(0, _inherits2.default)(GroupAutocompleteElement, _InputElement);
|
|
26
|
+
|
|
27
|
+
var _super = (0, _createSuper2.default)(GroupAutocompleteElement);
|
|
28
|
+
|
|
29
|
+
function GroupAutocompleteElement() {
|
|
30
|
+
(0, _classCallCheck2.default)(this, GroupAutocompleteElement);
|
|
16
31
|
return _super.apply(this, arguments);
|
|
17
32
|
}
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
(0, _createClass2.default)(GroupAutocompleteElement, [{
|
|
20
35
|
key: "render",
|
|
21
36
|
value: function render(props) {
|
|
22
37
|
var formProps = props.formProps;
|
|
@@ -33,16 +48,17 @@ export var GroupAutocompleteElement = /*#__PURE__*/function (_InputElement) {
|
|
|
33
48
|
console.log(validators);
|
|
34
49
|
}
|
|
35
50
|
|
|
36
|
-
return /*#__PURE__*/
|
|
51
|
+
return /*#__PURE__*/_react.default.createElement(Bind, {
|
|
37
52
|
name: this.id,
|
|
38
53
|
validators: typeof validators === "function" ? validators({
|
|
39
54
|
formProps: formProps
|
|
40
55
|
}) : []
|
|
41
|
-
}, /*#__PURE__*/
|
|
56
|
+
}, /*#__PURE__*/_react.default.createElement(_GroupAutocomplete.GroupAutocomplete, {
|
|
42
57
|
label: "Group"
|
|
43
58
|
}));
|
|
44
59
|
}
|
|
45
60
|
}]);
|
|
46
|
-
|
|
47
61
|
return GroupAutocompleteElement;
|
|
48
|
-
}(InputElement);
|
|
62
|
+
}(_InputElement2.InputElement);
|
|
63
|
+
|
|
64
|
+
exports.GroupAutocompleteElement = GroupAutocompleteElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["GroupAutocompleteElement","props","formProps","Bind","validators","config","console","log","id","InputElement"],"sources":["GroupAutocompleteElement.tsx"],"sourcesContent":["import React from \"react\";\nimport { FormRenderPropParams } from \"@webiny/form\";\nimport { InputElement } from \"@webiny/app-admin/ui/elements/form/InputElement\";\nimport { GroupAutocomplete } from \"~/components/GroupAutocomplete\";\nimport { FormFieldElementRenderProps } from \"@webiny/app-admin/ui/elements/form/FormFieldElement\";\n\nexport class GroupAutocompleteElement extends InputElement {\n public override render(props: FormFieldElementRenderProps): React.ReactElement {\n const { formProps } = props;\n const { Bind } = formProps as FormRenderPropParams;\n const validators = this.config.validators;\n /**\n * TODO @ts-refactor @bruno\n * Figure out what can validators be.\n */\n if (validators && typeof validators !== \"function\") {\n console.log(\n \"packages/app-security-access-management/src/ui/elements/GroupAutocompleteElement.tsx validators is set but not a function.\"\n );\n console.log(validators);\n }\n return (\n <Bind\n name={this.id}\n validators={typeof validators === \"function\" ? validators({ formProps }) : []}\n >\n <GroupAutocomplete label={\"Group\"} />\n </Bind>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;IAGaA,wB;;;;;;;;;;;;WACT,gBAAuBC,KAAvB,EAA+E;MAC3E,IAAQC,SAAR,GAAsBD,KAAtB,CAAQC,SAAR;MACA,WAAiBA,SAAjB;MAAA,IAAQC,IAAR,QAAQA,IAAR;MACA,IAAMC,UAAU,GAAG,KAAKC,MAAL,CAAYD,UAA/B;MACA;AACR;AACA;AACA;;MACQ,IAAIA,UAAU,IAAI,OAAOA,UAAP,KAAsB,UAAxC,EAAoD;QAChDE,OAAO,CAACC,GAAR,CACI,4HADJ;QAGAD,OAAO,CAACC,GAAR,CAAYH,UAAZ;MACH;;MACD,oBACI,6BAAC,IAAD;QACI,IAAI,EAAE,KAAKI,EADf;QAEI,UAAU,EAAE,OAAOJ,UAAP,KAAsB,UAAtB,GAAmCA,UAAU,CAAC;UAAEF,SAAS,EAATA;QAAF,CAAD,CAA7C,GAA+D;MAF/E,gBAII,6BAAC,oCAAD;QAAmB,KAAK,EAAE;MAA1B,EAJJ,CADJ;IAQH;;;EAvByCO,2B"}
|