@webiny/app-security-access-management 0.0.0-mt-3 → 0.0.0-unstable.5e7233243f
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.d.ts +1 -1
- package/components/GroupAutocomplete/graphql.js +14 -3
- package/components/GroupAutocomplete/graphql.js.map +1 -0
- package/components/GroupAutocomplete/index.d.ts +5 -2
- package/components/GroupAutocomplete/index.js +25 -10
- package/components/GroupAutocomplete/index.js.map +1 -0
- package/components/NotAuthorizedError/NotAuthorizedError.d.ts +2 -2
- package/components/NotAuthorizedError/NotAuthorizedError.js +39 -18
- package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -0
- package/components/NotAuthorizedError/index.js +13 -1
- package/components/NotAuthorizedError/index.js.map +1 -0
- package/index.d.ts +8 -1
- package/index.js +80 -4
- package/index.js.map +1 -0
- package/package.json +25 -30
- package/plugins/constants.js +9 -2
- package/plugins/constants.js.map +1 -0
- package/plugins/index.js +20 -8
- package/plugins/index.js.map +1 -0
- package/plugins/installation.js +47 -25
- package/plugins/installation.js.map +1 -0
- package/plugins/permissionRenderer/SecurityPermissions.d.ts +8 -5
- package/plugins/permissionRenderer/SecurityPermissions.js +69 -46
- package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -0
- package/plugins/permissionRenderer/index.js +33 -15
- package/plugins/permissionRenderer/index.js.map +1 -0
- package/plugins/routes.js +37 -19
- package/plugins/routes.js.map +1 -0
- package/plugins/secureRouteError.js +16 -4
- package/plugins/secureRouteError.js.map +1 -0
- package/types.d.ts +15 -0
- package/types.js +5 -0
- package/types.js.map +1 -0
- package/ui/elements/GroupAutocompleteElement.d.ts +2 -1
- package/ui/elements/GroupAutocompleteElement.js +52 -23
- package/ui/elements/GroupAutocompleteElement.js.map +1 -0
- package/ui/views/ApiKeys/ApiKeyForm.d.ts +5 -3
- package/ui/views/ApiKeys/ApiKeyForm.js +127 -83
- package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -0
- package/ui/views/ApiKeys/ApiKeys.d.ts +8 -3
- package/ui/views/ApiKeys/ApiKeys.js +22 -8
- package/ui/views/ApiKeys/ApiKeys.js.map +1 -0
- package/ui/views/ApiKeys/ApiKeysDataList.d.ts +5 -3
- package/ui/views/ApiKeys/ApiKeysDataList.js +105 -82
- package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -0
- package/ui/views/ApiKeys/graphql.d.ts +5 -5
- package/ui/views/ApiKeys/graphql.js +22 -7
- package/ui/views/ApiKeys/graphql.js.map +1 -0
- package/ui/views/ApiKeys/index.d.ts +1 -1
- package/ui/views/ApiKeys/index.js +18 -1
- package/ui/views/ApiKeys/index.js.map +1 -0
- package/ui/views/ApiKeys/utils.d.ts +2 -1
- package/ui/views/ApiKeys/utils.js +18 -5
- package/ui/views/ApiKeys/utils.js.map +1 -0
- package/ui/views/Groups/Groups.d.ts +8 -3
- package/ui/views/Groups/Groups.js +22 -8
- package/ui/views/Groups/Groups.js.map +1 -0
- package/ui/views/Groups/GroupsDataList.d.ts +5 -3
- package/ui/views/Groups/GroupsDataList.js +111 -87
- package/ui/views/Groups/GroupsDataList.js.map +1 -0
- package/ui/views/Groups/GroupsForm.d.ts +5 -3
- package/ui/views/Groups/GroupsForm.js +131 -87
- package/ui/views/Groups/GroupsForm.js.map +1 -0
- package/ui/views/Groups/graphql.d.ts +5 -5
- package/ui/views/Groups/graphql.js +23 -8
- package/ui/views/Groups/graphql.js.map +1 -0
- package/ui/views/Groups/index.d.ts +1 -1
- package/ui/views/Groups/index.js +18 -1
- package/ui/views/Groups/index.js.map +1 -0
- package/ui/views/utils.d.ts +3 -2
- package/ui/views/utils.js +19 -20
- package/ui/views/utils.js.map +1 -0
- package/plugins/menus.d.ts +0 -4
- package/plugins/menus.js +0 -61
|
@@ -1,112 +1,135 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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.ApiKeysDataList = void 0;
|
|
11
|
+
|
|
12
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _orderBy = _interopRequireDefault(require("lodash/orderBy"));
|
|
23
|
+
|
|
24
|
+
var _i18n = require("@webiny/app/i18n");
|
|
25
|
+
|
|
26
|
+
var _List = require("@webiny/ui/List");
|
|
27
|
+
|
|
28
|
+
var _Button = require("@webiny/ui/Button");
|
|
29
|
+
|
|
30
|
+
var _icons = require("@webiny/ui/List/DataList/icons");
|
|
31
|
+
|
|
32
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
33
|
+
|
|
34
|
+
var _Select = require("@webiny/ui/Select");
|
|
35
|
+
|
|
36
|
+
var _reactRouter = require("@webiny/react-router");
|
|
37
|
+
|
|
38
|
+
var _SearchUI = _interopRequireDefault(require("@webiny/app-admin/components/SearchUI"));
|
|
39
|
+
|
|
40
|
+
var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
|
|
41
|
+
|
|
42
|
+
var _reactHooks = require("@apollo/react-hooks");
|
|
43
|
+
|
|
44
|
+
var _useConfirmationDialog = require("@webiny/app-admin/hooks/useConfirmationDialog");
|
|
45
|
+
|
|
46
|
+
var GQL = _interopRequireWildcard(require("./graphql"));
|
|
47
|
+
|
|
48
|
+
var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
|
|
49
|
+
|
|
50
|
+
var _filter24px = require("@webiny/app-admin/assets/icons/filter-24px.svg");
|
|
51
|
+
|
|
52
|
+
var _utils = require("../utils");
|
|
4
53
|
|
|
5
54
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
6
55
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import orderBy from "lodash/orderBy";
|
|
10
|
-
import { i18n } from "@webiny/app/i18n";
|
|
11
|
-
import { DataList, ScrollList, ListItem, ListItemText, ListItemTextSecondary, ListItemMeta, ListActions, DataListModalOverlayAction, DataListModalOverlay } from "@webiny/ui/List";
|
|
12
|
-
import { ButtonIcon, ButtonSecondary } from "@webiny/ui/Button";
|
|
13
|
-
import { DeleteIcon } from "@webiny/ui/List/DataList/icons";
|
|
14
|
-
import { Cell, Grid } from "@webiny/ui/Grid";
|
|
15
|
-
import { Select } from "@webiny/ui/Select";
|
|
16
|
-
import { useRouter } from "@webiny/react-router";
|
|
17
|
-
import SearchUI from "@webiny/app-admin/components/SearchUI";
|
|
18
|
-
import { useSnackbar } from "@webiny/app-admin/hooks/useSnackbar";
|
|
19
|
-
import { useQuery, useMutation } from "@apollo/react-hooks";
|
|
20
|
-
import { useConfirmationDialog } from "@webiny/app-admin/hooks/useConfirmationDialog";
|
|
21
|
-
import * as GQL from "./graphql";
|
|
22
|
-
import { ReactComponent as AddIcon } from "@svgr/webpack!@webiny/app-admin/assets/icons/add-18px.svg";
|
|
23
|
-
import { ReactComponent as FilterIcon } from "@svgr/webpack!@webiny/app-admin/assets/icons/filter-24px.svg";
|
|
24
|
-
import { serializeSorters, deserializeSorters } from "../utils";
|
|
25
|
-
var t = i18n.ns("app-security/admin/groups/data-list");
|
|
56
|
+
var t = _i18n.i18n.ns("app-security/admin/groups/data-list");
|
|
57
|
+
|
|
26
58
|
var SORTERS = [{
|
|
27
|
-
label: t(_templateObject || (_templateObject =
|
|
28
|
-
|
|
29
|
-
createdOn: "desc"
|
|
30
|
-
}
|
|
59
|
+
label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Newest to oldest"]))),
|
|
60
|
+
sorter: "createdOn_DESC"
|
|
31
61
|
}, {
|
|
32
|
-
label: t(_templateObject2 || (_templateObject2 =
|
|
33
|
-
|
|
34
|
-
createdOn: "asc"
|
|
35
|
-
}
|
|
62
|
+
label: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Oldest to newest"]))),
|
|
63
|
+
sorter: "createdOn_ASC"
|
|
36
64
|
}, {
|
|
37
|
-
label: t(_templateObject3 || (_templateObject3 =
|
|
38
|
-
|
|
39
|
-
name: "asc"
|
|
40
|
-
}
|
|
65
|
+
label: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Name A-Z"]))),
|
|
66
|
+
sorter: "name_ASC"
|
|
41
67
|
}, {
|
|
42
|
-
label: t(_templateObject4 || (_templateObject4 =
|
|
43
|
-
|
|
44
|
-
name: "desc"
|
|
45
|
-
}
|
|
68
|
+
label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Name Z-A"]))),
|
|
69
|
+
sorter: "name_DESC"
|
|
46
70
|
}];
|
|
47
71
|
|
|
48
72
|
var ApiKeysDataList = function ApiKeysDataList() {
|
|
49
|
-
var _useState = useState(""),
|
|
50
|
-
_useState2 =
|
|
73
|
+
var _useState = (0, _react.useState)(""),
|
|
74
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
51
75
|
filter = _useState2[0],
|
|
52
76
|
setFilter = _useState2[1];
|
|
53
77
|
|
|
54
|
-
var _useState3 = useState(
|
|
55
|
-
_useState4 =
|
|
78
|
+
var _useState3 = (0, _react.useState)(SORTERS[0].sorter),
|
|
79
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
56
80
|
sort = _useState4[0],
|
|
57
81
|
setSort = _useState4[1];
|
|
58
82
|
|
|
59
|
-
var _useRouter = useRouter(),
|
|
83
|
+
var _useRouter = (0, _reactRouter.useRouter)(),
|
|
60
84
|
history = _useRouter.history,
|
|
61
85
|
location = _useRouter.location;
|
|
62
86
|
|
|
63
|
-
var _useSnackbar = useSnackbar(),
|
|
87
|
+
var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
|
|
64
88
|
showSnackbar = _useSnackbar.showSnackbar;
|
|
65
89
|
|
|
66
|
-
var _useConfirmationDialo = useConfirmationDialog({
|
|
90
|
+
var _useConfirmationDialo = (0, _useConfirmationDialog.useConfirmationDialog)({
|
|
67
91
|
dataTestId: "default-data-list.delete-dialog"
|
|
68
92
|
}),
|
|
69
93
|
showConfirmation = _useConfirmationDialo.showConfirmation;
|
|
70
94
|
|
|
71
|
-
var filterAPIKey = useCallback(function (_ref) {
|
|
95
|
+
var filterAPIKey = (0, _react.useCallback)(function (_ref) {
|
|
72
96
|
var description = _ref.description,
|
|
73
97
|
name = _ref.name;
|
|
74
98
|
return description && description.toLowerCase().includes(filter) || name.toLowerCase().includes(filter);
|
|
75
99
|
}, [filter]);
|
|
76
|
-
var sortKeys = useCallback(function (list) {
|
|
100
|
+
var sortKeys = (0, _react.useCallback)(function (list) {
|
|
77
101
|
if (!sort) {
|
|
78
102
|
return list;
|
|
79
103
|
}
|
|
80
104
|
|
|
81
|
-
var
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
value = _Object$entries2$[1];
|
|
105
|
+
var _deserializeSorters = (0, _utils.deserializeSorters)(sort),
|
|
106
|
+
_deserializeSorters2 = (0, _slicedToArray2.default)(_deserializeSorters, 2),
|
|
107
|
+
key = _deserializeSorters2[0],
|
|
108
|
+
value = _deserializeSorters2[1];
|
|
86
109
|
|
|
87
|
-
return
|
|
110
|
+
return (0, _orderBy.default)(list, [key], [value]);
|
|
88
111
|
}, [sort]);
|
|
89
112
|
|
|
90
|
-
var _useQuery = useQuery(GQL.LIST_API_KEYS),
|
|
113
|
+
var _useQuery = (0, _reactHooks.useQuery)(GQL.LIST_API_KEYS),
|
|
91
114
|
listResponse = _useQuery.data,
|
|
92
115
|
listLoading = _useQuery.loading;
|
|
93
116
|
|
|
94
|
-
var _useMutation = useMutation(GQL.DELETE_API_KEY, {
|
|
117
|
+
var _useMutation = (0, _reactHooks.useMutation)(GQL.DELETE_API_KEY, {
|
|
95
118
|
refetchQueries: [{
|
|
96
119
|
query: GQL.LIST_API_KEYS
|
|
97
120
|
}]
|
|
98
121
|
}),
|
|
99
|
-
_useMutation2 =
|
|
122
|
+
_useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
|
|
100
123
|
deleteIt = _useMutation2[0],
|
|
101
124
|
deleteLoading = _useMutation2[1].loading;
|
|
102
125
|
|
|
103
126
|
var data = listLoading && !listResponse ? [] : listResponse.security.apiKeys.data;
|
|
104
127
|
var id = new URLSearchParams(location.search).get("id");
|
|
105
|
-
var deleteItem = useCallback(function (item) {
|
|
106
|
-
showConfirmation( /*#__PURE__*/
|
|
128
|
+
var deleteItem = (0, _react.useCallback)(function (item) {
|
|
129
|
+
showConfirmation( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
107
130
|
var _yield$deleteIt, data, error;
|
|
108
131
|
|
|
109
|
-
return
|
|
132
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
110
133
|
while (1) {
|
|
111
134
|
switch (_context.prev = _context.next) {
|
|
112
135
|
case 0:
|
|
@@ -128,7 +151,7 @@ var ApiKeysDataList = function ApiKeysDataList() {
|
|
|
128
151
|
return _context.abrupt("return", showSnackbar(error.message));
|
|
129
152
|
|
|
130
153
|
case 7:
|
|
131
|
-
showSnackbar(t(_templateObject5 || (_templateObject5 =
|
|
154
|
+
showSnackbar(t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Api key \"{id}\" deleted."])))({
|
|
132
155
|
id: item.id
|
|
133
156
|
}));
|
|
134
157
|
|
|
@@ -144,59 +167,59 @@ var ApiKeysDataList = function ApiKeysDataList() {
|
|
|
144
167
|
}, _callee);
|
|
145
168
|
})));
|
|
146
169
|
}, [id]);
|
|
147
|
-
var groupsDataListModalOverlay = useMemo(function () {
|
|
148
|
-
return /*#__PURE__*/
|
|
170
|
+
var groupsDataListModalOverlay = (0, _react.useMemo)(function () {
|
|
171
|
+
return /*#__PURE__*/_react.default.createElement(_List.DataListModalOverlay, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
149
172
|
span: 12
|
|
150
|
-
}, /*#__PURE__*/
|
|
173
|
+
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
151
174
|
value: sort,
|
|
152
175
|
onChange: setSort,
|
|
153
|
-
label: t(_templateObject6 || (_templateObject6 =
|
|
176
|
+
label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Sort by"])))
|
|
154
177
|
}, SORTERS.map(function (_ref3) {
|
|
155
178
|
var label = _ref3.label,
|
|
156
|
-
|
|
157
|
-
return /*#__PURE__*/
|
|
179
|
+
sorter = _ref3.sorter;
|
|
180
|
+
return /*#__PURE__*/_react.default.createElement("option", {
|
|
158
181
|
key: label,
|
|
159
|
-
value:
|
|
182
|
+
value: sorter
|
|
160
183
|
}, label);
|
|
161
184
|
})))));
|
|
162
185
|
}, [sort]);
|
|
163
186
|
var filteredData = filter === "" ? data : data.filter(filterAPIKey);
|
|
164
187
|
var list = sortKeys(filteredData);
|
|
165
|
-
return /*#__PURE__*/
|
|
166
|
-
title: t(_templateObject7 || (_templateObject7 =
|
|
167
|
-
actions: /*#__PURE__*/
|
|
188
|
+
return /*#__PURE__*/_react.default.createElement(_List.DataList, {
|
|
189
|
+
title: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["API Keys"]))),
|
|
190
|
+
actions: /*#__PURE__*/_react.default.createElement(_Button.ButtonSecondary, {
|
|
168
191
|
"data-testid": "new-record-button",
|
|
169
192
|
onClick: function onClick() {
|
|
170
193
|
return history.push("/access-management/api-keys?new=true");
|
|
171
194
|
}
|
|
172
|
-
}, /*#__PURE__*/
|
|
173
|
-
icon: /*#__PURE__*/
|
|
174
|
-
}), " ", t(_templateObject8 || (_templateObject8 =
|
|
195
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
|
|
196
|
+
icon: /*#__PURE__*/_react.default.createElement(_add18px.ReactComponent, null)
|
|
197
|
+
}), " ", t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["New API Key"])))),
|
|
175
198
|
data: list,
|
|
176
199
|
loading: listLoading || deleteLoading,
|
|
177
|
-
search: /*#__PURE__*/
|
|
200
|
+
search: /*#__PURE__*/_react.default.createElement(_SearchUI.default, {
|
|
178
201
|
value: filter,
|
|
179
202
|
onChange: setFilter,
|
|
180
|
-
inputPlaceholder: t(_templateObject9 || (_templateObject9 =
|
|
203
|
+
inputPlaceholder: t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Search API keys"])))
|
|
181
204
|
}),
|
|
182
205
|
modalOverlay: groupsDataListModalOverlay,
|
|
183
|
-
modalOverlayAction: /*#__PURE__*/
|
|
184
|
-
icon: /*#__PURE__*/
|
|
206
|
+
modalOverlayAction: /*#__PURE__*/_react.default.createElement(_List.DataListModalOverlayAction, {
|
|
207
|
+
icon: /*#__PURE__*/_react.default.createElement(_filter24px.ReactComponent, null),
|
|
185
208
|
"data-testid": "default-data-list.filter"
|
|
186
209
|
})
|
|
187
210
|
}, function (_ref4) {
|
|
188
211
|
var data = _ref4.data;
|
|
189
|
-
return /*#__PURE__*/
|
|
212
|
+
return /*#__PURE__*/_react.default.createElement(_List.ScrollList, {
|
|
190
213
|
"data-testid": "default-data-list"
|
|
191
214
|
}, data.map(function (item) {
|
|
192
|
-
return /*#__PURE__*/
|
|
215
|
+
return /*#__PURE__*/_react.default.createElement(_List.ListItem, {
|
|
193
216
|
key: item.id,
|
|
194
217
|
selected: item.id === id
|
|
195
|
-
}, /*#__PURE__*/
|
|
218
|
+
}, /*#__PURE__*/_react.default.createElement(_List.ListItemText, {
|
|
196
219
|
onClick: function onClick() {
|
|
197
220
|
return history.push("/access-management/api-keys?id=".concat(item.id));
|
|
198
221
|
}
|
|
199
|
-
}, item.name, /*#__PURE__*/
|
|
222
|
+
}, item.name, /*#__PURE__*/_react.default.createElement(_List.ListItemTextSecondary, null, item.description)), /*#__PURE__*/_react.default.createElement(_List.ListItemMeta, null, /*#__PURE__*/_react.default.createElement(_List.ListActions, null, /*#__PURE__*/_react.default.createElement(_icons.DeleteIcon, {
|
|
200
223
|
onClick: function onClick() {
|
|
201
224
|
return deleteItem(item);
|
|
202
225
|
},
|
|
@@ -206,4 +229,4 @@ var ApiKeysDataList = function ApiKeysDataList() {
|
|
|
206
229
|
});
|
|
207
230
|
};
|
|
208
231
|
|
|
209
|
-
|
|
232
|
+
exports.ApiKeysDataList = ApiKeysDataList;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","SORTERS","label","sorter","ApiKeysDataList","useState","filter","setFilter","sort","setSort","useRouter","history","location","useSnackbar","showSnackbar","useConfirmationDialog","dataTestId","showConfirmation","filterAPIKey","useCallback","description","name","toLowerCase","includes","sortKeys","list","deserializeSorters","key","value","orderBy","useQuery","GQL","LIST_API_KEYS","listResponse","data","listLoading","loading","useMutation","DELETE_API_KEY","refetchQueries","query","deleteIt","deleteLoading","security","apiKeys","id","URLSearchParams","search","get","deleteItem","item","variables","error","deleteApiKey","message","push","groupsDataListModalOverlay","useMemo","map","filteredData"],"sources":["ApiKeysDataList.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 { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { DeleteIcon } from \"@webiny/ui/List/DataList/icons\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { useRouter } from \"@webiny/react-router\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/useConfirmationDialog\";\nimport * as GQL from \"./graphql\";\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 { ApiKey } 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];\nexport interface ApiKeysDataListProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const ApiKeysDataList: React.FC<ApiKeysDataListProps> = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState<string>(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 filterAPIKey = useCallback(\n ({ description, name }) => {\n return (\n (description && description.toLowerCase().includes(filter)) ||\n name.toLowerCase().includes(filter)\n );\n },\n [filter]\n );\n\n const sortKeys = useCallback(\n list => {\n if (!sort) {\n return list;\n }\n const [key, value] = deserializeSorters(sort);\n return orderBy(list, [key], [value]);\n },\n [sort]\n );\n\n const { data: listResponse, loading: listLoading } = useQuery(GQL.LIST_API_KEYS);\n\n const [deleteIt, { loading: deleteLoading }] = useMutation(GQL.DELETE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const data = listLoading && !listResponse ? [] : listResponse.security.apiKeys.data;\n const id = new URLSearchParams(location.search).get(\"id\");\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.deleteApiKey;\n if (error) {\n return showSnackbar(error.message);\n }\n\n showSnackbar(t`Api key \"{id}\" deleted.`({ id: item.id }));\n\n if (id === item.id) {\n history.push(`/access-management/api-keys`);\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(filterAPIKey);\n const list = sortKeys(filteredData);\n\n return (\n <DataList\n title={t`API Keys`}\n actions={\n <ButtonSecondary\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/api-keys?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New API Key`}\n </ButtonSecondary>\n }\n data={list}\n loading={listLoading || deleteLoading}\n search={\n <SearchUI\n value={filter}\n onChange={setFilter}\n inputPlaceholder={t`Search API keys`}\n />\n }\n modalOverlay={groupsDataListModalOverlay}\n modalOverlayAction={\n <DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: ApiKey[] }) => (\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/api-keys?id=${item.id}`)\n }\n >\n {item.name}\n <ListItemTextSecondary>{item.description}</ListItemTextSecondary>\n </ListItemText>\n\n <ListItemMeta>\n <ListActions>\n <DeleteIcon\n onClick={() => deleteItem(item)}\n data-testid={\"default-data-list.delete\"}\n />\n </ListActions>\n </ListItemMeta>\n </ListItem>\n ))}\n </ScrollList>\n )}\n </DataList>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const LIST_API_KEYS:
|
|
2
|
-
export declare const READ_API_KEY:
|
|
3
|
-
export declare const CREATE_API_KEY:
|
|
4
|
-
export declare const UPDATE_API_KEY:
|
|
5
|
-
export declare const DELETE_API_KEY:
|
|
1
|
+
export declare const LIST_API_KEYS: import("graphql").DocumentNode;
|
|
2
|
+
export declare const READ_API_KEY: import("graphql").DocumentNode;
|
|
3
|
+
export declare const CREATE_API_KEY: import("graphql").DocumentNode;
|
|
4
|
+
export declare const UPDATE_API_KEY: import("graphql").DocumentNode;
|
|
5
|
+
export declare const DELETE_API_KEY: import("graphql").DocumentNode;
|
|
@@ -1,11 +1,26 @@
|
|
|
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.UPDATE_API_KEY = exports.READ_API_KEY = exports.LIST_API_KEYS = exports.DELETE_API_KEY = exports.CREATE_API_KEY = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
2
13
|
|
|
3
14
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
4
15
|
|
|
5
|
-
import gql from "graphql-tag";
|
|
6
16
|
var fields = "\n id\n name\n description\n token\n permissions\n createdOn\n";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
var LIST_API_KEYS = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query ListApiKeys {\n security {\n apiKeys: listApiKeys {\n data {\n ", "\n }\n }\n }\n }\n"])), fields);
|
|
18
|
+
exports.LIST_API_KEYS = LIST_API_KEYS;
|
|
19
|
+
var READ_API_KEY = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n query GetApiKey($id: ID!) {\n security {\n apiKey: getApiKey(id: $id){\n data {\n ", "\n }\n error {\n code\n message\n }\n }\n }\n }\n"])), fields);
|
|
20
|
+
exports.READ_API_KEY = READ_API_KEY;
|
|
21
|
+
var CREATE_API_KEY = (0, _graphqlTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n mutation CreateApiKey($data: SecurityApiKeyInput!){\n security {\n apiKey: createApiKey(data: $data) {\n data {\n ", "\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n"])), fields);
|
|
22
|
+
exports.CREATE_API_KEY = CREATE_API_KEY;
|
|
23
|
+
var UPDATE_API_KEY = (0, _graphqlTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n mutation UpdateApiKey($id: ID!, $data: SecurityApiKeyInput!){\n security {\n apiKey: updateApiKey(id: $id, data: $data) {\n data {\n ", "\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n"])), fields);
|
|
24
|
+
exports.UPDATE_API_KEY = UPDATE_API_KEY;
|
|
25
|
+
var DELETE_API_KEY = (0, _graphqlTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n mutation DeleteApiKey($id: ID!) {\n security {\n deleteApiKey(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
|
|
26
|
+
exports.DELETE_API_KEY = DELETE_API_KEY;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fields","LIST_API_KEYS","gql","READ_API_KEY","CREATE_API_KEY","UPDATE_API_KEY","DELETE_API_KEY"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nconst fields = `\n id\n name\n description\n token\n permissions\n createdOn\n`;\n\nexport const LIST_API_KEYS = gql`\n query ListApiKeys {\n security {\n apiKeys: listApiKeys {\n data {\n ${fields}\n }\n }\n }\n }\n`;\n\nexport const READ_API_KEY = gql`\n query GetApiKey($id: ID!) {\n security {\n apiKey: getApiKey(id: $id){\n data {\n ${fields}\n }\n error {\n code\n message\n }\n }\n }\n }\n`;\n\nexport const CREATE_API_KEY = gql`\n mutation CreateApiKey($data: SecurityApiKeyInput!){\n security {\n apiKey: createApiKey(data: $data) {\n data {\n ${fields}\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport const UPDATE_API_KEY = gql`\n mutation UpdateApiKey($id: ID!, $data: SecurityApiKeyInput!){\n security {\n apiKey: updateApiKey(id: $id, data: $data) {\n data {\n ${fields}\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport const DELETE_API_KEY = gql`\n mutation DeleteApiKey($id: ID!) {\n security {\n deleteApiKey(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;;;;AAAA;;;;AAEA,IAAMA,MAAM,qFAAZ;AASO,IAAMC,aAAa,OAAGC,mBAAH,6QAKLF,MALK,CAAnB;;AAYA,IAAMG,YAAY,OAAGD,mBAAH,gYAKHF,MALG,CAAlB;;AAgBA,IAAMI,cAAc,OAAGF,mBAAH,0bAKLF,MALK,CAApB;;AAiBA,IAAMK,cAAc,OAAGH,mBAAH,6cAKLF,MALK,CAApB;;AAiBA,IAAMM,cAAc,OAAGJ,mBAAH,kVAApB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from "./ApiKeys";
|
|
@@ -1 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _ApiKeys = require("./ApiKeys");
|
|
8
|
+
|
|
9
|
+
Object.keys(_ApiKeys).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _ApiKeys[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _ApiKeys[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./ApiKeys\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ApiKey } from "../../../types";
|
|
2
|
+
export declare const pickDataForAPI: (data: ApiKey) => Pick<ApiKey, "name" | "description" | "permissions">;
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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.pickDataForAPI = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _pick2 = _interopRequireDefault(require("lodash/pick"));
|
|
13
|
+
|
|
14
|
+
var pickDataForAPI = function pickDataForAPI(data) {
|
|
15
|
+
return (0, _objectSpread2.default)({}, (0, _pick2.default)(data, ["name", "description", "permissions"]));
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.pickDataForAPI = pickDataForAPI;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["pickDataForAPI","data"],"sources":["utils.ts"],"sourcesContent":["import { pick } from \"lodash\";\nimport { ApiKey } from \"~/types\";\n\nexport const pickDataForAPI = (\n data: ApiKey\n): Pick<ApiKey, \"name\" | \"description\" | \"permissions\"> => ({\n ...pick(data, [\"name\", \"description\", \"permissions\"])\n});\n"],"mappings":";;;;;;;;;;;;;AAGO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAC1BC,IAD0B;EAAA,uCAGvB,oBAAKA,IAAL,EAAW,CAAC,MAAD,EAAS,aAAT,EAAwB,aAAxB,CAAX,CAHuB;AAAA,CAAvB"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { GroupsDataListProps } from "./GroupsDataList";
|
|
3
|
+
import { GroupsFormProps } from "./GroupsForm";
|
|
4
|
+
export interface GroupsProps {
|
|
5
|
+
listProps?: GroupsDataListProps;
|
|
6
|
+
formProps?: GroupsFormProps;
|
|
7
|
+
}
|
|
8
|
+
export declare const Groups: React.FC<GroupsProps>;
|
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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.Groups = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _SplitView = require("@webiny/app-admin/components/SplitView");
|
|
13
|
+
|
|
14
|
+
var _GroupsDataList = require("./GroupsDataList");
|
|
15
|
+
|
|
16
|
+
var _GroupsForm = require("./GroupsForm");
|
|
5
17
|
|
|
6
18
|
var Groups = function Groups(_ref) {
|
|
7
|
-
var formProps = _ref.formProps,
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
var _ref$formProps = _ref.formProps,
|
|
20
|
+
formProps = _ref$formProps === void 0 ? {} : _ref$formProps,
|
|
21
|
+
_ref$listProps = _ref.listProps,
|
|
22
|
+
listProps = _ref$listProps === void 0 ? {} : _ref$listProps;
|
|
23
|
+
return /*#__PURE__*/_react.default.createElement(_SplitView.SplitView, null, /*#__PURE__*/_react.default.createElement(_SplitView.LeftPanel, null, /*#__PURE__*/_react.default.createElement(_GroupsDataList.GroupsDataList, listProps)), /*#__PURE__*/_react.default.createElement(_SplitView.RightPanel, null, /*#__PURE__*/_react.default.createElement(_GroupsForm.GroupsForm, formProps)));
|
|
10
24
|
};
|
|
11
25
|
|
|
12
|
-
|
|
26
|
+
exports.Groups = Groups;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Groups","formProps","listProps"],"sources":["Groups.tsx"],"sourcesContent":["import React from \"react\";\nimport { SplitView, LeftPanel, RightPanel } from \"@webiny/app-admin/components/SplitView\";\nimport { GroupsDataList, GroupsDataListProps } from \"./GroupsDataList\";\nimport { GroupsForm, GroupsFormProps } from \"./GroupsForm\";\n\nexport interface GroupsProps {\n listProps?: GroupsDataListProps;\n formProps?: GroupsFormProps;\n}\nexport const Groups: React.FC<GroupsProps> = ({ formProps = {}, listProps = {} }) => {\n return (\n <SplitView>\n <LeftPanel>\n <GroupsDataList {...listProps} />\n </LeftPanel>\n <RightPanel>\n <GroupsForm {...formProps} />\n </RightPanel>\n </SplitView>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAMO,IAAMA,MAA6B,GAAG,SAAhCA,MAAgC,OAAwC;EAAA,0BAArCC,SAAqC;EAAA,IAArCA,SAAqC,+BAAzB,EAAyB;EAAA,0BAArBC,SAAqB;EAAA,IAArBA,SAAqB,+BAAT,EAAS;EACjF,oBACI,6BAAC,oBAAD,qBACI,6BAAC,oBAAD,qBACI,6BAAC,8BAAD,EAAoBA,SAApB,CADJ,CADJ,eAII,6BAAC,qBAAD,qBACI,6BAAC,sBAAD,EAAgBD,SAAhB,CADJ,CAJJ,CADJ;AAUH,CAXM"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface GroupsDataListProps {
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
}
|
|
5
|
+
export declare const GroupsDataList: React.FC<GroupsDataListProps>;
|