@webiny/app-security-access-management 5.34.8 → 5.35.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/components/GroupAutocomplete/graphql.js +0 -5
  3. package/components/GroupAutocomplete/graphql.js.map +1 -1
  4. package/components/GroupAutocomplete/index.js +2 -10
  5. package/components/GroupAutocomplete/index.js.map +1 -1
  6. package/components/NotAuthorizedError/NotAuthorizedError.js +0 -12
  7. package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
  8. package/components/NotAuthorizedError/index.js +0 -1
  9. package/components/NotAuthorizedError/index.js.map +1 -1
  10. package/index.js +0 -15
  11. package/index.js.map +1 -1
  12. package/package.json +13 -13
  13. package/plugins/constants.js +0 -1
  14. package/plugins/constants.js.map +1 -1
  15. package/plugins/index.js +0 -6
  16. package/plugins/index.js.map +1 -1
  17. package/plugins/installation.js +19 -44
  18. package/plugins/installation.js.map +1 -1
  19. package/plugins/permissionRenderer/SecurityPermissions.js +2 -34
  20. package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
  21. package/plugins/permissionRenderer/index.js +0 -12
  22. package/plugins/permissionRenderer/index.js.map +1 -1
  23. package/plugins/routes.js +0 -10
  24. package/plugins/routes.js.map +1 -1
  25. package/plugins/secureRouteError.js +0 -4
  26. package/plugins/secureRouteError.js.map +1 -1
  27. package/ui/elements/GroupAutocompleteElement.js +1 -16
  28. package/ui/elements/GroupAutocompleteElement.js.map +1 -1
  29. package/ui/views/ApiKeys/ApiKeyForm.js +62 -115
  30. package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
  31. package/ui/views/ApiKeys/ApiKeys.js +3 -10
  32. package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
  33. package/ui/views/ApiKeys/ApiKeysDataList.js +51 -98
  34. package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
  35. package/ui/views/ApiKeys/graphql.js +0 -5
  36. package/ui/views/ApiKeys/graphql.js.map +1 -1
  37. package/ui/views/ApiKeys/index.js +0 -2
  38. package/ui/views/ApiKeys/index.js.map +1 -1
  39. package/ui/views/ApiKeys/utils.js +0 -5
  40. package/ui/views/ApiKeys/utils.js.map +1 -1
  41. package/ui/views/Groups/Groups.js +3 -10
  42. package/ui/views/Groups/Groups.js.map +1 -1
  43. package/ui/views/Groups/GroupsDataList.js +52 -99
  44. package/ui/views/Groups/GroupsDataList.js.map +1 -1
  45. package/ui/views/Groups/GroupsForm.js +61 -114
  46. package/ui/views/Groups/GroupsForm.js.map +1 -1
  47. package/ui/views/Groups/graphql.js +0 -5
  48. package/ui/views/Groups/graphql.js.map +1 -1
  49. package/ui/views/Groups/index.js +0 -2
  50. package/ui/views/Groups/index.js.map +1 -1
  51. package/ui/views/utils.js +3 -9
  52. package/ui/views/utils.js.map +1 -1
@@ -1,62 +1,35 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.GroupsDataList = void 0;
11
-
12
9
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
-
14
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _orderBy = _interopRequireDefault(require("lodash/orderBy"));
23
-
24
15
  var _i18n = require("@webiny/app/i18n");
25
-
26
16
  var _List = require("@webiny/ui/List");
27
-
28
17
  var _icons = require("@webiny/ui/List/DataList/icons");
29
-
30
18
  var _reactRouter = require("@webiny/react-router");
31
-
32
19
  var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
33
-
34
20
  var _reactHooks = require("@apollo/react-hooks");
35
-
36
21
  var _useConfirmationDialog = require("@webiny/app-admin/hooks/useConfirmationDialog");
37
-
38
22
  var _graphql = require("./graphql");
39
-
40
23
  var _Tooltip = require("@webiny/ui/Tooltip");
41
-
42
24
  var _Button = require("@webiny/ui/Button");
43
-
44
25
  var _Grid = require("@webiny/ui/Grid");
45
-
46
26
  var _Select = require("@webiny/ui/Select");
47
-
48
27
  var _SearchUI = _interopRequireDefault(require("@webiny/app-admin/components/SearchUI"));
49
-
50
28
  var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
51
-
52
29
  var _filter24px = require("@webiny/app-admin/assets/icons/filter-24px.svg");
53
-
54
30
  var _utils = require("../utils");
55
-
56
31
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
57
-
58
32
  var t = _i18n.i18n.ns("app-security/admin/groups/data-list");
59
-
60
33
  var SORTERS = [{
61
34
  label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Newest to oldest"]))),
62
35
  sorter: "createdOn_DESC"
@@ -70,101 +43,82 @@ var SORTERS = [{
70
43
  label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Name Z-A"]))),
71
44
  sorter: "name_DESC"
72
45
  }];
73
-
74
46
  var GroupsDataList = function GroupsDataList() {
75
47
  var _useState = (0, _react.useState)(""),
76
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
77
- filter = _useState2[0],
78
- setFilter = _useState2[1];
79
-
48
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
49
+ filter = _useState2[0],
50
+ setFilter = _useState2[1];
80
51
  var _useState3 = (0, _react.useState)(SORTERS[0].sorter),
81
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
82
- sort = _useState4[0],
83
- setSort = _useState4[1];
84
-
52
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
53
+ sort = _useState4[0],
54
+ setSort = _useState4[1];
85
55
  var _useRouter = (0, _reactRouter.useRouter)(),
86
- history = _useRouter.history,
87
- location = _useRouter.location;
88
-
56
+ history = _useRouter.history,
57
+ location = _useRouter.location;
89
58
  var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
90
- showSnackbar = _useSnackbar.showSnackbar;
91
-
59
+ showSnackbar = _useSnackbar.showSnackbar;
92
60
  var _useConfirmationDialo = (0, _useConfirmationDialog.useConfirmationDialog)({
93
- dataTestId: "default-data-list.delete-dialog"
94
- }),
95
- showConfirmation = _useConfirmationDialo.showConfirmation;
96
-
61
+ dataTestId: "default-data-list.delete-dialog"
62
+ }),
63
+ showConfirmation = _useConfirmationDialo.showConfirmation;
97
64
  var _useQuery = (0, _reactHooks.useQuery)(_graphql.LIST_GROUPS),
98
- listResponse = _useQuery.data,
99
- listLoading = _useQuery.loading;
100
-
65
+ listResponse = _useQuery.data,
66
+ listLoading = _useQuery.loading;
101
67
  var _useMutation = (0, _reactHooks.useMutation)(_graphql.DELETE_GROUP, {
102
- refetchQueries: [{
103
- query: _graphql.LIST_GROUPS
104
- }]
105
- }),
106
- _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
107
- deleteIt = _useMutation2[0],
108
- deleteLoading = _useMutation2[1].loading;
109
-
68
+ refetchQueries: [{
69
+ query: _graphql.LIST_GROUPS
70
+ }]
71
+ }),
72
+ _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
73
+ deleteIt = _useMutation2[0],
74
+ deleteLoading = _useMutation2[1].loading;
110
75
  var data = listLoading && !listResponse ? [] : listResponse.security.groups.data;
111
76
  var id = new URLSearchParams(location.search).get("id");
112
77
  var filterGroup = (0, _react.useCallback)(function (_ref) {
113
78
  var name = _ref.name,
114
- slug = _ref.slug,
115
- description = _ref.description;
79
+ slug = _ref.slug,
80
+ description = _ref.description;
116
81
  return name.toLowerCase().includes(filter) || slug.toLowerCase().includes(filter) || description && description.toLowerCase().includes(filter);
117
82
  }, [filter]);
118
83
  var sortGroups = (0, _react.useCallback)(function (groups) {
119
84
  if (!sort) {
120
85
  return groups;
121
86
  }
122
-
123
87
  var _deserializeSorters = (0, _utils.deserializeSorters)(sort),
124
- _deserializeSorters2 = (0, _slicedToArray2.default)(_deserializeSorters, 2),
125
- key = _deserializeSorters2[0],
126
- sortBy = _deserializeSorters2[1];
127
-
88
+ _deserializeSorters2 = (0, _slicedToArray2.default)(_deserializeSorters, 2),
89
+ key = _deserializeSorters2[0],
90
+ sortBy = _deserializeSorters2[1];
128
91
  return (0, _orderBy.default)(groups, [key], [sortBy]);
129
92
  }, [sort]);
130
93
  var deleteItem = (0, _react.useCallback)(function (item) {
131
94
  showConfirmation( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
132
95
  var _yield$deleteIt, data, error;
133
-
134
96
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
135
- while (1) {
136
- switch (_context.prev = _context.next) {
137
- case 0:
138
- _context.next = 2;
139
- return deleteIt({
140
- variables: item
141
- });
142
-
143
- case 2:
144
- _yield$deleteIt = _context.sent;
145
- data = _yield$deleteIt.data;
146
- error = data.security.deleteGroup.error;
147
-
148
- if (!error) {
149
- _context.next = 7;
150
- break;
151
- }
152
-
153
- return _context.abrupt("return", showSnackbar(error.message));
154
-
155
- case 7:
156
- showSnackbar(t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Group \"{slug}\" deleted."])))({
157
- slug: item.slug
158
- }));
159
-
160
- if (id === item.id) {
161
- history.push("/access-management/groups");
162
- }
163
-
164
- case 9:
165
- case "end":
166
- return _context.stop();
167
- }
97
+ while (1) switch (_context.prev = _context.next) {
98
+ case 0:
99
+ _context.next = 2;
100
+ return deleteIt({
101
+ variables: item
102
+ });
103
+ case 2:
104
+ _yield$deleteIt = _context.sent;
105
+ data = _yield$deleteIt.data;
106
+ error = data.security.deleteGroup.error;
107
+ if (!error) {
108
+ _context.next = 7;
109
+ break;
110
+ }
111
+ return _context.abrupt("return", showSnackbar(error.message));
112
+ case 7:
113
+ showSnackbar(t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Group \"{slug}\" deleted."])))({
114
+ slug: item.slug
115
+ }));
116
+ if (id === item.id) {
117
+ history.push("/access-management/groups");
118
+ }
119
+ case 9:
120
+ case "end":
121
+ return _context.stop();
168
122
  }
169
123
  }, _callee);
170
124
  })));
@@ -178,7 +132,7 @@ var GroupsDataList = function GroupsDataList() {
178
132
  label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Sort by"])))
179
133
  }, SORTERS.map(function (_ref3) {
180
134
  var label = _ref3.label,
181
- sorter = _ref3.sorter;
135
+ sorter = _ref3.sorter;
182
136
  return /*#__PURE__*/_react.default.createElement("option", {
183
137
  key: label,
184
138
  value: sorter
@@ -235,5 +189,4 @@ var GroupsDataList = function GroupsDataList() {
235
189
  }));
236
190
  });
237
191
  };
238
-
239
192
  exports.GroupsDataList = GroupsDataList;
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","SORTERS","label","sorter","GroupsDataList","useState","filter","setFilter","sort","setSort","useRouter","history","location","useSnackbar","showSnackbar","useConfirmationDialog","dataTestId","showConfirmation","useQuery","LIST_GROUPS","listResponse","data","listLoading","loading","useMutation","DELETE_GROUP","refetchQueries","query","deleteIt","deleteLoading","security","groups","id","URLSearchParams","search","get","filterGroup","useCallback","name","slug","description","toLowerCase","includes","sortGroups","deserializeSorters","key","sortBy","orderBy","deleteItem","item","variables","error","deleteGroup","message","push","groupsDataListModalOverlay","useMemo","map","filteredData","groupList","system"],"sources":["GroupsDataList.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport orderBy from \"lodash/orderBy\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n DataList,\n ScrollList,\n ListItem,\n ListItemText,\n ListItemTextSecondary,\n ListItemMeta,\n ListActions,\n DataListModalOverlayAction,\n DataListModalOverlay\n} from \"@webiny/ui/List\";\nimport { DeleteIcon } from \"@webiny/ui/List/DataList/icons\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/useConfirmationDialog\";\nimport { LIST_GROUPS, DELETE_GROUP } from \"./graphql\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport { deserializeSorters } from \"../utils\";\nimport { Group } from \"~/types\";\n\nconst t = i18n.ns(\"app-security/admin/groups/data-list\");\n\nconst SORTERS = [\n {\n label: t`Newest to oldest`,\n sorter: \"createdOn_DESC\"\n },\n {\n label: t`Oldest to newest`,\n sorter: \"createdOn_ASC\"\n },\n {\n label: t`Name A-Z`,\n sorter: \"name_ASC\"\n },\n {\n label: t`Name Z-A`,\n sorter: \"name_DESC\"\n }\n];\n\nexport interface GroupsDataListProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const GroupsDataList: React.FC<GroupsDataListProps> = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState(SORTERS[0].sorter);\n const { history, location } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { showConfirmation } = useConfirmationDialog({\n dataTestId: \"default-data-list.delete-dialog\"\n });\n\n const { data: listResponse, loading: listLoading } = useQuery(LIST_GROUPS);\n\n const [deleteIt, { loading: deleteLoading }] = useMutation(DELETE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const data = listLoading && !listResponse ? [] : listResponse.security.groups.data;\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const filterGroup = useCallback(\n ({ name, slug, description }) => {\n return (\n name.toLowerCase().includes(filter) ||\n slug.toLowerCase().includes(filter) ||\n (description && description.toLowerCase().includes(filter))\n );\n },\n [filter]\n );\n\n const sortGroups = useCallback(\n groups => {\n if (!sort) {\n return groups;\n }\n const [key, sortBy] = deserializeSorters(sort);\n return orderBy(groups, [key], [sortBy]);\n },\n [sort]\n );\n\n const deleteItem = useCallback(\n item => {\n showConfirmation(async () => {\n const { data } = await deleteIt({\n variables: item\n });\n\n const { error } = data.security.deleteGroup;\n if (error) {\n return showSnackbar(error.message);\n }\n\n showSnackbar(t`Group \"{slug}\" deleted.`({ slug: item.slug }));\n\n if (id === item.id) {\n history.push(`/access-management/groups`);\n }\n });\n },\n [id]\n );\n\n const groupsDataListModalOverlay = useMemo(\n () => (\n <DataListModalOverlay>\n <Grid>\n <Cell span={12}>\n <Select value={sort} onChange={setSort} label={t`Sort by`}>\n {SORTERS.map(({ label, sorter }) => {\n return (\n <option key={label} value={sorter}>\n {label}\n </option>\n );\n })}\n </Select>\n </Cell>\n </Grid>\n </DataListModalOverlay>\n ),\n [sort]\n );\n\n const filteredData = filter === \"\" ? data : data.filter(filterGroup);\n const groupList = sortGroups(filteredData);\n\n return (\n <DataList\n title={t`Groups`}\n actions={\n <ButtonSecondary\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonSecondary>\n }\n data={groupList}\n loading={listLoading || deleteLoading}\n search={\n <SearchUI value={filter} onChange={setFilter} inputPlaceholder={t`Search Groups`} />\n }\n modalOverlay={groupsDataListModalOverlay}\n modalOverlayAction={\n <DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: Group[] }) => (\n <ScrollList data-testid=\"default-data-list\">\n {data.map(item => (\n <ListItem key={item.id} selected={item.id === id}>\n <ListItemText\n onClick={() =>\n history.push(`/access-management/groups?id=${item.id}`)\n }\n >\n {item.name}\n <ListItemTextSecondary>{item.description}</ListItemTextSecondary>\n </ListItemText>\n\n <ListItemMeta>\n <ListActions>\n {!item.system ? (\n <DeleteIcon\n onClick={() => deleteItem(item)}\n data-testid={\"default-data-list.delete\"}\n />\n ) : (\n <Tooltip\n placement={\"bottom\"}\n content={<span>{t`You can't delete this group.`}</span>}\n >\n <DeleteIcon disabled />\n </Tooltip>\n )}\n </ListActions>\n </ListItemMeta>\n </ListItem>\n ))}\n </ScrollList>\n )}\n </DataList>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","SORTERS","label","sorter","GroupsDataList","useState","filter","setFilter","sort","setSort","useRouter","history","location","useSnackbar","showSnackbar","useConfirmationDialog","dataTestId","showConfirmation","useQuery","LIST_GROUPS","listResponse","data","listLoading","loading","useMutation","DELETE_GROUP","refetchQueries","query","deleteIt","deleteLoading","security","groups","id","URLSearchParams","search","get","filterGroup","useCallback","name","slug","description","toLowerCase","includes","sortGroups","deserializeSorters","key","sortBy","orderBy","deleteItem","item","variables","error","deleteGroup","message","push","groupsDataListModalOverlay","useMemo","map","filteredData","groupList","system"],"sources":["GroupsDataList.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport orderBy from \"lodash/orderBy\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n DataList,\n ScrollList,\n ListItem,\n ListItemText,\n ListItemTextSecondary,\n ListItemMeta,\n ListActions,\n DataListModalOverlayAction,\n DataListModalOverlay\n} from \"@webiny/ui/List\";\nimport { DeleteIcon } from \"@webiny/ui/List/DataList/icons\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/useConfirmationDialog\";\nimport { LIST_GROUPS, DELETE_GROUP } from \"./graphql\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport { deserializeSorters } from \"../utils\";\nimport { Group } from \"~/types\";\n\nconst t = i18n.ns(\"app-security/admin/groups/data-list\");\n\nconst SORTERS = [\n {\n label: t`Newest to oldest`,\n sorter: \"createdOn_DESC\"\n },\n {\n label: t`Oldest to newest`,\n sorter: \"createdOn_ASC\"\n },\n {\n label: t`Name A-Z`,\n sorter: \"name_ASC\"\n },\n {\n label: t`Name Z-A`,\n sorter: \"name_DESC\"\n }\n];\n\nexport interface GroupsDataListProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const GroupsDataList: React.FC<GroupsDataListProps> = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState(SORTERS[0].sorter);\n const { history, location } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { showConfirmation } = useConfirmationDialog({\n dataTestId: \"default-data-list.delete-dialog\"\n });\n\n const { data: listResponse, loading: listLoading } = useQuery(LIST_GROUPS);\n\n const [deleteIt, { loading: deleteLoading }] = useMutation(DELETE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const data = listLoading && !listResponse ? [] : listResponse.security.groups.data;\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const filterGroup = useCallback(\n ({ name, slug, description }) => {\n return (\n name.toLowerCase().includes(filter) ||\n slug.toLowerCase().includes(filter) ||\n (description && description.toLowerCase().includes(filter))\n );\n },\n [filter]\n );\n\n const sortGroups = useCallback(\n groups => {\n if (!sort) {\n return groups;\n }\n const [key, sortBy] = deserializeSorters(sort);\n return orderBy(groups, [key], [sortBy]);\n },\n [sort]\n );\n\n const deleteItem = useCallback(\n item => {\n showConfirmation(async () => {\n const { data } = await deleteIt({\n variables: item\n });\n\n const { error } = data.security.deleteGroup;\n if (error) {\n return showSnackbar(error.message);\n }\n\n showSnackbar(t`Group \"{slug}\" deleted.`({ slug: item.slug }));\n\n if (id === item.id) {\n history.push(`/access-management/groups`);\n }\n });\n },\n [id]\n );\n\n const groupsDataListModalOverlay = useMemo(\n () => (\n <DataListModalOverlay>\n <Grid>\n <Cell span={12}>\n <Select value={sort} onChange={setSort} label={t`Sort by`}>\n {SORTERS.map(({ label, sorter }) => {\n return (\n <option key={label} value={sorter}>\n {label}\n </option>\n );\n })}\n </Select>\n </Cell>\n </Grid>\n </DataListModalOverlay>\n ),\n [sort]\n );\n\n const filteredData = filter === \"\" ? data : data.filter(filterGroup);\n const groupList = sortGroups(filteredData);\n\n return (\n <DataList\n title={t`Groups`}\n actions={\n <ButtonSecondary\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonSecondary>\n }\n data={groupList}\n loading={listLoading || deleteLoading}\n search={\n <SearchUI value={filter} onChange={setFilter} inputPlaceholder={t`Search Groups`} />\n }\n modalOverlay={groupsDataListModalOverlay}\n modalOverlayAction={\n <DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: Group[] }) => (\n <ScrollList data-testid=\"default-data-list\">\n {data.map(item => (\n <ListItem key={item.id} selected={item.id === id}>\n <ListItemText\n onClick={() =>\n history.push(`/access-management/groups?id=${item.id}`)\n }\n >\n {item.name}\n <ListItemTextSecondary>{item.description}</ListItemTextSecondary>\n </ListItemText>\n\n <ListItemMeta>\n <ListActions>\n {!item.system ? (\n <DeleteIcon\n onClick={() => deleteItem(item)}\n data-testid={\"default-data-list.delete\"}\n />\n ) : (\n <Tooltip\n placement={\"bottom\"}\n content={<span>{t`You can't delete this group.`}</span>}\n >\n <DeleteIcon disabled />\n </Tooltip>\n )}\n </ListActions>\n </ListItemMeta>\n </ListItem>\n ))}\n </ScrollList>\n )}\n </DataList>\n );\n};\n"],"mappings":"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"}
@@ -1,72 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.GroupsForm = void 0;
11
-
12
9
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _reactHooks = require("@apollo/react-hooks");
23
-
24
15
  var _styled = _interopRequireDefault(require("@emotion/styled"));
25
-
26
16
  var _pick = _interopRequireDefault(require("lodash/pick"));
27
-
28
17
  var _get = _interopRequireDefault(require("lodash/get"));
29
-
30
18
  var _reactRouter = require("@webiny/react-router");
31
-
32
19
  var _i18n = require("@webiny/app/i18n");
33
-
34
20
  var _form = require("@webiny/form");
35
-
36
21
  var _Grid = require("@webiny/ui/Grid");
37
-
38
22
  var _Input = require("@webiny/ui/Input");
39
-
40
23
  var _Alert = require("@webiny/ui/Alert");
41
-
42
24
  var _Button = require("@webiny/ui/Button");
43
-
44
25
  var _Progress = require("@webiny/ui/Progress");
45
-
46
26
  var _validation = require("@webiny/validation");
47
-
48
27
  var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
49
-
50
28
  var _Typography = require("@webiny/ui/Typography");
51
-
52
29
  var _Permissions = require("@webiny/app-admin/components/Permissions");
53
-
54
30
  var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
55
-
56
31
  var _graphql = require("./graphql");
57
-
58
32
  var _Snackbar = require("@webiny/ui/Snackbar");
59
-
60
33
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
61
-
62
34
  var _EmptyView = _interopRequireDefault(require("@webiny/app-admin/components/EmptyView"));
63
-
64
35
  var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
65
-
66
36
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
67
-
68
37
  var t = _i18n.i18n.ns("app-security/admin/groups/form");
69
-
70
38
  var ButtonWrapper = /*#__PURE__*/(0, _styled.default)("div", {
71
39
  target: "euuiyav0",
72
40
  label: "ButtonWrapper"
@@ -74,15 +42,12 @@ var ButtonWrapper = /*#__PURE__*/(0, _styled.default)("div", {
74
42
  display: "flex",
75
43
  justifyContent: "space-between"
76
44
  });
77
-
78
45
  var GroupsForm = function GroupsForm() {
79
46
  var _useRouter = (0, _reactRouter.useRouter)(),
80
- location = _useRouter.location,
81
- history = _useRouter.history;
82
-
47
+ location = _useRouter.location,
48
+ history = _useRouter.history;
83
49
  var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
84
- showSnackbar = _useSnackbar.showSnackbar;
85
-
50
+ showSnackbar = _useSnackbar.showSnackbar;
86
51
  var newGroup = new URLSearchParams(location.search).get("new") === "true";
87
52
  var id = new URLSearchParams(location.search).get("id");
88
53
  var getQuery = (0, _reactHooks.useQuery)(_graphql.READ_GROUP, {
@@ -94,105 +59,89 @@ var GroupsForm = function GroupsForm() {
94
59
  if (!data) {
95
60
  return;
96
61
  }
97
-
98
62
  var error = data.security.group.error;
99
-
100
63
  if (error) {
101
64
  history.push("/access-management/groups");
102
65
  showSnackbar(error.message);
103
66
  }
104
67
  }
105
68
  });
106
-
107
69
  var _useMutation = (0, _reactHooks.useMutation)(_graphql.CREATE_GROUP, {
108
- refetchQueries: [{
109
- query: _graphql.LIST_GROUPS
110
- }]
111
- }),
112
- _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
113
- create = _useMutation2[0],
114
- createMutation = _useMutation2[1];
115
-
70
+ refetchQueries: [{
71
+ query: _graphql.LIST_GROUPS
72
+ }]
73
+ }),
74
+ _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
75
+ create = _useMutation2[0],
76
+ createMutation = _useMutation2[1];
116
77
  var _useMutation3 = (0, _reactHooks.useMutation)(_graphql.UPDATE_GROUP, {
117
- refetchQueries: [{
118
- query: _graphql.LIST_GROUPS
119
- }]
120
- }),
121
- _useMutation4 = (0, _slicedToArray2.default)(_useMutation3, 2),
122
- update = _useMutation4[0],
123
- updateMutation = _useMutation4[1];
124
-
78
+ refetchQueries: [{
79
+ query: _graphql.LIST_GROUPS
80
+ }]
81
+ }),
82
+ _useMutation4 = (0, _slicedToArray2.default)(_useMutation3, 2),
83
+ update = _useMutation4[0],
84
+ updateMutation = _useMutation4[1];
125
85
  var loading = [getQuery, createMutation, updateMutation].find(function (item) {
126
86
  return item.loading;
127
87
  });
128
88
  var onSubmit = (0, _react.useCallback)( /*#__PURE__*/function () {
129
89
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(data) {
130
90
  var isUpdate, _ref2, _ref3, operation, args, response, _response$data$securi, group, error;
131
-
132
91
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
133
- while (1) {
134
- switch (_context.prev = _context.next) {
135
- case 0:
136
- if (!(!data.permissions || !data.permissions.length)) {
137
- _context.next = 3;
138
- break;
92
+ while (1) switch (_context.prev = _context.next) {
93
+ case 0:
94
+ if (!(!data.permissions || !data.permissions.length)) {
95
+ _context.next = 3;
96
+ break;
97
+ }
98
+ showSnackbar(t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["You must configure permissions before saving!"]))), {
99
+ timeout: 60000,
100
+ dismissesOnAction: true,
101
+ action: /*#__PURE__*/_react.default.createElement(_Snackbar.SnackbarAction, {
102
+ label: "OK"
103
+ })
104
+ });
105
+ return _context.abrupt("return");
106
+ case 3:
107
+ isUpdate = data.createdOn;
108
+ _ref2 = isUpdate ? [update, {
109
+ variables: {
110
+ id: data.id,
111
+ data: (0, _pick.default)(data, ["name", "description", "permissions"])
139
112
  }
140
-
141
- showSnackbar(t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["You must configure permissions before saving!"]))), {
142
- timeout: 60000,
143
- dismissesOnAction: true,
144
- action: /*#__PURE__*/_react.default.createElement(_Snackbar.SnackbarAction, {
145
- label: "OK"
146
- })
147
- });
148
- return _context.abrupt("return");
149
-
150
- case 3:
151
- isUpdate = data.createdOn;
152
- _ref2 = isUpdate ? [update, {
153
- variables: {
154
- id: data.id,
155
- data: (0, _pick.default)(data, ["name", "description", "permissions"])
156
- }
157
- }] : [create, {
158
- variables: {
159
- data: (0, _pick.default)(data, ["name", "slug", "description", "permissions"])
160
- }
161
- }], _ref3 = (0, _slicedToArray2.default)(_ref2, 2), operation = _ref3[0], args = _ref3[1];
162
- _context.next = 7;
163
- return operation(args);
164
-
165
- case 7:
166
- response = _context.sent;
167
- _response$data$securi = response.data.security.group, group = _response$data$securi.data, error = _response$data$securi.error;
168
-
169
- if (!error) {
170
- _context.next = 11;
171
- break;
113
+ }] : [create, {
114
+ variables: {
115
+ data: (0, _pick.default)(data, ["name", "slug", "description", "permissions"])
172
116
  }
173
-
174
- return _context.abrupt("return", showSnackbar(error.message));
175
-
176
- case 11:
177
- !isUpdate && history.push("/access-management/groups?id=".concat(group.id));
178
- showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Group saved successfully!"]))));
179
-
180
- case 13:
181
- case "end":
182
- return _context.stop();
183
- }
117
+ }], _ref3 = (0, _slicedToArray2.default)(_ref2, 2), operation = _ref3[0], args = _ref3[1];
118
+ _context.next = 7;
119
+ return operation(args);
120
+ case 7:
121
+ response = _context.sent;
122
+ _response$data$securi = response.data.security.group, group = _response$data$securi.data, error = _response$data$securi.error;
123
+ if (!error) {
124
+ _context.next = 11;
125
+ break;
126
+ }
127
+ return _context.abrupt("return", showSnackbar(error.message));
128
+ case 11:
129
+ !isUpdate && history.push("/access-management/groups?id=".concat(group.id));
130
+ showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Group saved successfully!"]))));
131
+ case 13:
132
+ case "end":
133
+ return _context.stop();
184
134
  }
185
135
  }, _callee);
186
136
  }));
187
-
188
137
  return function (_x) {
189
138
  return _ref.apply(this, arguments);
190
139
  };
191
140
  }(), [id]);
192
141
  var data = loading ? {} : (0, _get.default)(getQuery, "data.security.group.data", {});
193
142
  var systemGroup = data.slug === "full-access";
194
- var showEmptyView = !newGroup && !loading && (0, _isEmpty.default)(data); // Render "No content" selected view.
195
-
143
+ var showEmptyView = !newGroup && !loading && (0, _isEmpty.default)(data);
144
+ // Render "No content" selected view.
196
145
  if (showEmptyView) {
197
146
  return /*#__PURE__*/_react.default.createElement(_EmptyView.default, {
198
147
  title: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Click on the left side list to display group details or create a..."]))),
@@ -206,14 +155,13 @@ var GroupsForm = function GroupsForm() {
206
155
  }), t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["New Group"]))))
207
156
  });
208
157
  }
209
-
210
158
  return /*#__PURE__*/_react.default.createElement(_form.Form, {
211
159
  data: data,
212
160
  onSubmit: onSubmit
213
161
  }, function (_ref4) {
214
162
  var data = _ref4.data,
215
- form = _ref4.form,
216
- Bind = _ref4.Bind;
163
+ form = _ref4.form,
164
+ Bind = _ref4.Bind;
217
165
  return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
218
166
  title: data.name ? data.name : "Untitled"
219
167
  }), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
@@ -274,5 +222,4 @@ var GroupsForm = function GroupsForm() {
274
222
  }, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Save group"])))))));
275
223
  });
276
224
  };
277
-
278
225
  exports.GroupsForm = GroupsForm;