@webiny/app-security-access-management 5.17.4 → 5.18.0-beta.3

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 (53) hide show
  1. package/components/GroupAutocomplete/graphql.js +1 -2
  2. package/components/GroupAutocomplete/index.js +1 -2
  3. package/components/NotAuthorizedError/NotAuthorizedError.js +1 -2
  4. package/components/NotAuthorizedError/index.js +1 -2
  5. package/index.js +1 -2
  6. package/package.json +12 -12
  7. package/plugins/constants.js +1 -2
  8. package/plugins/index.js +1 -2
  9. package/plugins/installation.js +1 -2
  10. package/plugins/menus.js +1 -2
  11. package/plugins/permissionRenderer/SecurityPermissions.js +1 -2
  12. package/plugins/permissionRenderer/index.js +1 -2
  13. package/plugins/routes.js +1 -2
  14. package/plugins/secureRouteError.js +1 -2
  15. package/ui/elements/GroupAutocompleteElement.js +1 -2
  16. package/ui/views/ApiKeys/ApiKeyForm.js +1 -2
  17. package/ui/views/ApiKeys/ApiKeys.js +1 -2
  18. package/ui/views/ApiKeys/ApiKeysDataList.js +1 -2
  19. package/ui/views/ApiKeys/graphql.js +1 -2
  20. package/ui/views/ApiKeys/index.js +1 -2
  21. package/ui/views/ApiKeys/utils.js +1 -2
  22. package/ui/views/Groups/Groups.js +1 -2
  23. package/ui/views/Groups/GroupsDataList.js +1 -2
  24. package/ui/views/Groups/GroupsForm.js +1 -2
  25. package/ui/views/Groups/graphql.js +1 -2
  26. package/ui/views/Groups/index.js +1 -2
  27. package/ui/views/utils.js +1 -2
  28. package/components/GroupAutocomplete/graphql.js.map +0 -1
  29. package/components/GroupAutocomplete/index.js.map +0 -1
  30. package/components/NotAuthorizedError/NotAuthorizedError.js.map +0 -1
  31. package/components/NotAuthorizedError/index.js.map +0 -1
  32. package/index.js.map +0 -1
  33. package/plugins/constants.js.map +0 -1
  34. package/plugins/index.js.map +0 -1
  35. package/plugins/installation.js.map +0 -1
  36. package/plugins/menus.js.map +0 -1
  37. package/plugins/permissionRenderer/SecurityPermissions.js.map +0 -1
  38. package/plugins/permissionRenderer/index.js.map +0 -1
  39. package/plugins/routes.js.map +0 -1
  40. package/plugins/secureRouteError.js.map +0 -1
  41. package/ui/elements/GroupAutocompleteElement.js.map +0 -1
  42. package/ui/views/ApiKeys/ApiKeyForm.js.map +0 -1
  43. package/ui/views/ApiKeys/ApiKeys.js.map +0 -1
  44. package/ui/views/ApiKeys/ApiKeysDataList.js.map +0 -1
  45. package/ui/views/ApiKeys/graphql.js.map +0 -1
  46. package/ui/views/ApiKeys/index.js.map +0 -1
  47. package/ui/views/ApiKeys/utils.js.map +0 -1
  48. package/ui/views/Groups/Groups.js.map +0 -1
  49. package/ui/views/Groups/GroupsDataList.js.map +0 -1
  50. package/ui/views/Groups/GroupsForm.js.map +0 -1
  51. package/ui/views/Groups/graphql.js.map +0 -1
  52. package/ui/views/Groups/index.js.map +0 -1
  53. package/ui/views/utils.js.map +0 -1
@@ -3,5 +3,4 @@ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral
3
3
  var _templateObject;
4
4
 
5
5
  import gql from "graphql-tag";
6
- export var LIST_GROUPS = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query listGroups {\n security {\n groups: listGroups {\n data {\n id\n slug\n name\n description\n createdOn\n }\n }\n }\n }\n"])));
7
- //# sourceMappingURL=graphql.js.map
6
+ export var LIST_GROUPS = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query listGroups {\n security {\n groups: listGroups {\n data {\n id\n slug\n name\n description\n createdOn\n }\n }\n }\n }\n"])));
@@ -13,5 +13,4 @@ export var GroupAutocomplete = function GroupAutocomplete(props) {
13
13
  valueProp: "id",
14
14
  value: loading ? null : props.value
15
15
  }));
16
- };
17
- //# sourceMappingURL=index.js.map
16
+ };
@@ -47,5 +47,4 @@ export var NotAuthorizedError = function NotAuthorizedError() {
47
47
  to: "/",
48
48
  className: styles.linkStyle
49
49
  }, "Take me back."));
50
- };
51
- //# sourceMappingURL=NotAuthorizedError.js.map
50
+ };
@@ -1,2 +1 @@
1
- export { NotAuthorizedError } from "./NotAuthorizedError";
2
- //# sourceMappingURL=index.js.map
1
+ export { NotAuthorizedError } from "./NotAuthorizedError";
package/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import plugins from "./plugins";
2
2
  export default (function () {
3
3
  return plugins();
4
- });
5
- //# sourceMappingURL=index.js.map
4
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-security-access-management",
3
- "version": "5.17.4",
3
+ "version": "5.18.0-beta.3",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,14 +15,14 @@
15
15
  "dependencies": {
16
16
  "@apollo/react-hooks": "3.1.5",
17
17
  "@emotion/styled": "10.0.27",
18
- "@webiny/app": "5.17.4",
19
- "@webiny/app-admin": "5.17.4",
20
- "@webiny/app-security": "5.17.4",
21
- "@webiny/form": "5.17.4",
22
- "@webiny/plugins": "5.17.4",
23
- "@webiny/react-router": "5.17.4",
24
- "@webiny/ui": "5.17.4",
25
- "@webiny/validation": "5.17.4",
18
+ "@webiny/app": "5.18.0-beta.3",
19
+ "@webiny/app-admin": "5.18.0-beta.3",
20
+ "@webiny/app-security": "5.18.0-beta.3",
21
+ "@webiny/form": "5.18.0-beta.3",
22
+ "@webiny/plugins": "5.18.0-beta.3",
23
+ "@webiny/react-router": "5.18.0-beta.3",
24
+ "@webiny/ui": "5.18.0-beta.3",
25
+ "@webiny/validation": "5.18.0-beta.3",
26
26
  "emotion": "10.0.27",
27
27
  "graphql-tag": "2.12.6",
28
28
  "lodash": "4.17.21",
@@ -37,8 +37,8 @@
37
37
  "@babel/preset-env": "^7.5.5",
38
38
  "@babel/preset-react": "^7.0.0",
39
39
  "@babel/preset-typescript": "^7.8.3",
40
- "@webiny/cli": "^5.17.4",
41
- "@webiny/project-utils": "^5.17.4",
40
+ "@webiny/cli": "^5.18.0-beta.3",
41
+ "@webiny/project-utils": "^5.18.0-beta.3",
42
42
  "babel-plugin-emotion": "^9.2.8",
43
43
  "babel-plugin-lodash": "^3.3.4",
44
44
  "babel-plugin-named-asset-import": "^1.0.0-next.3e165448",
@@ -66,5 +66,5 @@
66
66
  ]
67
67
  }
68
68
  },
69
- "gitHead": "bdfaa377704bf7f51d73561b4c6129f682bf24d2"
69
+ "gitHead": "9c86670476a62348ce391b091bf768e425ab6ee9"
70
70
  }
@@ -3,5 +3,4 @@ export var Permission;
3
3
  (function (Permission) {
4
4
  Permission["Groups"] = "security.group";
5
5
  Permission["ApiKeys"] = "security.apiKey";
6
- })(Permission || (Permission = {}));
7
- //# sourceMappingURL=constants.js.map
6
+ })(Permission || (Permission = {}));
package/plugins/index.js CHANGED
@@ -5,5 +5,4 @@ import permissionRenderer from "./permissionRenderer";
5
5
  import secureRouteError from "./secureRouteError";
6
6
  export default (function () {
7
7
  return [routes, menus, installation, permissionRenderer, secureRouteError];
8
- });
9
- //# sourceMappingURL=index.js.map
8
+ });
@@ -96,5 +96,4 @@ var plugin = {
96
96
  });
97
97
  }
98
98
  };
99
- export default plugin;
100
- //# sourceMappingURL=installation.js.map
99
+ export default plugin;
package/plugins/menus.js CHANGED
@@ -58,5 +58,4 @@ export default new UIViewPlugin(NavigationView, /*#__PURE__*/function () {
58
58
  return function (_x) {
59
59
  return _ref.apply(this, arguments);
60
60
  };
61
- }());
62
- //# sourceMappingURL=menus.js.map
61
+ }());
@@ -173,5 +173,4 @@ export var SecurityPermissions = function SecurityPermissions(_ref) {
173
173
  value: FULL_ACCESS
174
174
  }, t(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["Full access"])))))))))));
175
175
  });
176
- };
177
- //# sourceMappingURL=SecurityPermissions.js.map
176
+ };
@@ -18,5 +18,4 @@ export default new PermissionRendererPlugin({
18
18
  "data-testid": "permission.security"
19
19
  }, /*#__PURE__*/React.createElement(SecurityPermissions, props));
20
20
  }
21
- });
22
- //# sourceMappingURL=index.js.map
21
+ });
package/plugins/routes.js CHANGED
@@ -35,5 +35,4 @@ var plugins = [{
35
35
  }
36
36
  })
37
37
  }];
38
- export default plugins;
39
- //# sourceMappingURL=routes.js.map
38
+ export default plugins;
@@ -7,5 +7,4 @@ var plugin = {
7
7
  return /*#__PURE__*/React.createElement(NotAuthorizedError, null);
8
8
  }
9
9
  };
10
- export default plugin;
11
- //# sourceMappingURL=secureRouteError.js.map
10
+ export default plugin;
@@ -32,5 +32,4 @@ export var GroupAutocompleteElement = /*#__PURE__*/function (_InputElement) {
32
32
  }]);
33
33
 
34
34
  return GroupAutocompleteElement;
35
- }(InputElement);
36
- //# sourceMappingURL=GroupAutocompleteElement.js.map
35
+ }(InputElement);
@@ -241,5 +241,4 @@ var ApiKeyForm = function ApiKeyForm() {
241
241
  });
242
242
  };
243
243
 
244
- export default ApiKeyForm;
245
- //# sourceMappingURL=ApiKeyForm.js.map
244
+ export default ApiKeyForm;
@@ -9,5 +9,4 @@ var ApiKeys = function ApiKeys(_ref) {
9
9
  return /*#__PURE__*/React.createElement(SplitView, null, /*#__PURE__*/React.createElement(LeftPanel, null, /*#__PURE__*/React.createElement(ApiKeysDataList, listProps)), /*#__PURE__*/React.createElement(RightPanel, null, /*#__PURE__*/React.createElement(ApiKeyForm, formProps)));
10
10
  };
11
11
 
12
- export default ApiKeys;
13
- //# sourceMappingURL=ApiKeys.js.map
12
+ export default ApiKeys;
@@ -206,5 +206,4 @@ var ApiKeysDataList = function ApiKeysDataList() {
206
206
  });
207
207
  };
208
208
 
209
- export default ApiKeysDataList;
210
- //# sourceMappingURL=ApiKeysDataList.js.map
209
+ export default ApiKeysDataList;
@@ -8,5 +8,4 @@ export var LIST_API_KEYS = gql(_templateObject || (_templateObject = _taggedTemp
8
8
  export var READ_API_KEY = gql(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\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);
9
9
  export var CREATE_API_KEY = gql(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\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);
10
10
  export var UPDATE_API_KEY = gql(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\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);
11
- export var DELETE_API_KEY = gql(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n mutation DeleteApiKey($id: ID!) {\n security {\n deleteApiKey(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
12
- //# sourceMappingURL=graphql.js.map
11
+ export var DELETE_API_KEY = gql(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n mutation DeleteApiKey($id: ID!) {\n security {\n deleteApiKey(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
@@ -1,2 +1 @@
1
- export { default as ApiKeys } from "./ApiKeys";
2
- //# sourceMappingURL=index.js.map
1
+ export { default as ApiKeys } from "./ApiKeys";
@@ -2,5 +2,4 @@ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
2
  import _pick from "lodash/pick";
3
3
  export var pickDataForAPI = function pickDataForAPI(data) {
4
4
  return _objectSpread({}, _pick(data, ["name", "description", "permissions"]));
5
- };
6
- //# sourceMappingURL=utils.js.map
5
+ };
@@ -9,5 +9,4 @@ var Groups = function Groups(_ref) {
9
9
  return /*#__PURE__*/React.createElement(SplitView, null, /*#__PURE__*/React.createElement(LeftPanel, null, /*#__PURE__*/React.createElement(GroupsDataList, listProps)), /*#__PURE__*/React.createElement(RightPanel, null, /*#__PURE__*/React.createElement(GroupsForm, formProps)));
10
10
  };
11
11
 
12
- export default Groups;
13
- //# sourceMappingURL=Groups.js.map
12
+ export default Groups;
@@ -212,5 +212,4 @@ var GroupsDataList = function GroupsDataList() {
212
212
  });
213
213
  };
214
214
 
215
- export default GroupsDataList;
216
- //# sourceMappingURL=GroupsDataList.js.map
215
+ export default GroupsDataList;
@@ -231,5 +231,4 @@ var GroupForm = function GroupForm() {
231
231
  });
232
232
  };
233
233
 
234
- export default GroupForm;
235
- //# sourceMappingURL=GroupsForm.js.map
234
+ export default GroupForm;
@@ -8,5 +8,4 @@ export var LIST_GROUPS = gql(_templateObject || (_templateObject = _taggedTempla
8
8
  export var READ_GROUP = gql(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n query getGroup($id: ID!) {\n security {\n group: getGroup(where: { id: $id }){\n data {\n ", "\n }\n error {\n code\n message\n }\n }\n }\n }\n"])), fields);
9
9
  export var CREATE_GROUP = gql(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n mutation createGroup($data: SecurityGroupCreateInput!){\n security {\n group: createGroup(data: $data) {\n data {\n ", "\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n"])), fields);
10
10
  export var UPDATE_GROUP = gql(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n mutation updateGroup($id: ID!, $data: SecurityGroupUpdateInput!){\n security {\n group: updateGroup(id: $id, data: $data) {\n data {\n ", "\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n"])), fields);
11
- export var DELETE_GROUP = gql(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n mutation deleteGroup($id: ID!) {\n security {\n deleteGroup(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
12
- //# sourceMappingURL=graphql.js.map
11
+ export var DELETE_GROUP = gql(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n mutation deleteGroup($id: ID!) {\n security {\n deleteGroup(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
@@ -1,2 +1 @@
1
- export { default as Groups } from "./Groups";
2
- //# sourceMappingURL=index.js.map
1
+ export { default as Groups } from "./Groups";
package/ui/views/utils.js CHANGED
@@ -24,5 +24,4 @@ export var deserializeSorters = function deserializeSorters(data) {
24
24
  value = _ref2[1];
25
25
 
26
26
  return _defineProperty({}, key, value);
27
- };
28
- //# sourceMappingURL=utils.js.map
27
+ };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/GroupAutocomplete/graphql.ts"],"names":["gql","LIST_GROUPS"],"mappings":";;;;AAAA,OAAOA,GAAP,MAAgB,aAAhB;AAEA,OAAO,IAAMC,WAAgB,GAAGD,GAAH,6WAAtB","sourcesContent":["import gql from \"graphql-tag\";\n\nexport const LIST_GROUPS: any = gql`\n query listGroups {\n security {\n groups: listGroups {\n data {\n id\n slug\n name\n description\n createdOn\n }\n }\n }\n }\n`;\n"],"file":"graphql.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/GroupAutocomplete/index.tsx"],"names":["React","AutoComplete","LIST_GROUPS","useQuery","GroupAutocomplete","props","data","loading","options","security","groups","value"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,YAAT,QAA6B,yBAA7B;AACA,SAASC,WAAT;AACA,SAASC,QAAT,QAAyB,qBAAzB;AAEA,OAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAC,KAAK,EAAI;AACtC,kBAA0BF,QAAQ,CAACD,WAAD,CAAlC;AAAA,MAAQI,IAAR,aAAQA,IAAR;AAAA,MAAcC,OAAd,aAAcA,OAAd;;AAEA,MAAMC,OAAO,GAAGD,OAAO,IAAI,CAACD,IAAZ,GAAmB,EAAnB,GAAwBA,IAAI,CAACG,QAAL,CAAcC,MAAd,CAAqBJ,IAA7D;AAEA,sBACI,oBAAC,YAAD,oBACQD,KADR;AAEI,IAAA,OAAO,EAAEG,OAFb;AAGI,IAAA,SAAS,EAAE,IAHf;AAII,IAAA,KAAK,EAAED,OAAO,GAAG,IAAH,GAAUF,KAAK,CAACM;AAJlC,KADJ;AAQH,CAbM","sourcesContent":["import React from \"react\";\nimport { AutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { LIST_GROUPS } from \"./graphql\";\nimport { useQuery } from \"@apollo/react-hooks\";\n\nexport const GroupAutocomplete = props => {\n const { data, loading } = useQuery(LIST_GROUPS);\n\n const options = loading && !data ? [] : data.security.groups.data;\n\n return (\n <AutoComplete\n {...props}\n options={options}\n valueProp={\"id\"}\n value={loading ? null : props.value}\n />\n );\n};\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/NotAuthorizedError/NotAuthorizedError.tsx"],"names":["React","Link","css","styled","Helmet","Typography","ContentWrapper","display","paddingTop","textAlign","margin","styles","authErrorImgStyle","width","paddingBottom","bodyStyle","color","linkStyle","textDecoration","NotAuthorizedError","authErrorImg"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT,QAAqB,sBAArB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,MAAP,MAAmB,cAAnB;;AAEA,SAASC,UAAT,QAA2B,uBAA3B;AAEA,IAAMC,cAAc,gBAAGH,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,GAAiB;AACjCI,EAAAA,OAAO,EAAE,OADwB;AAEjCC,EAAAA,UAAU,EAAE,KAFqB;AAGjCC,EAAAA,SAAS,EAAE,QAHsB;AAIjCC,EAAAA,MAAM,EAAE;AAJyB,CAAjB,CAApB;AAOA,IAAMC,MAAM,GAAG;AACXC,EAAAA,iBAAiB,eAAEV,GAAG,CAAC;AACnBW,IAAAA,KAAK,EAAE,OADY;AAEnBC,IAAAA,aAAa,EAAE;AAFI,GAAD,6BADX;AAKXC,EAAAA,SAAS,eAAEb,GAAG,CAAC;AACXc,IAAAA,KAAK,EAAE,6CADI;AAEXT,IAAAA,OAAO,EAAE;AAFE,GAAD,qBALH;AASXU,EAAAA,SAAS,eAAEf,GAAG,CAAC;AACXgB,IAAAA,cAAc,EAAE,MADL;AAEX,eAAW;AACPA,MAAAA,cAAc,EAAE;AADT;AAFA,GAAD;AATH,CAAf;AAiBA,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AACpC,sBACI,oBAAC,cAAD,qBACI,oBAAC,MAAD;AAAQ,IAAA,KAAK,EAAE;AAAf,IADJ,eAGI;AAAK,IAAA,SAAS,EAAER,MAAM,CAACC,iBAAvB;AAA0C,IAAA,GAAG,EAAEQ,YAA/C;AAA6D,IAAA,GAAG,EAAC;AAAjE,IAHJ,eAKI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE,OAAjB;AAA0B,IAAA,SAAS,EAAET,MAAM,CAACI;AAA5C,kDALJ,eASI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE,OAAjB;AAA0B,IAAA,SAAS,EAAEJ,MAAM,CAACI;AAA5C,4DATJ,eAaI,oBAAC,IAAD;AAAM,IAAA,EAAE,EAAC,GAAT;AAAa,IAAA,SAAS,EAAEJ,MAAM,CAACM;AAA/B,qBAbJ,CADJ;AAmBH,CApBM","sourcesContent":["import * as React from \"react\";\nimport { Link } from \"@webiny/react-router\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport Helmet from \"react-helmet\";\nimport authErrorImg from \"./SecureRouteError.svg\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nconst ContentWrapper = styled(\"div\")({\n display: \"block\",\n paddingTop: \"15%\",\n textAlign: \"center\",\n margin: \"auto\"\n});\n\nconst styles = {\n authErrorImgStyle: css({\n width: \"192px\",\n paddingBottom: \"24px\"\n }),\n bodyStyle: css({\n color: \"var(--mdc-theme-text-primary-on-background)\",\n display: \"block\"\n }),\n linkStyle: css({\n textDecoration: \"none\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n })\n};\n\nexport const NotAuthorizedError = () => {\n return (\n <ContentWrapper>\n <Helmet title={\"Not authorized\"} />\n\n <img className={styles.authErrorImgStyle} src={authErrorImg} alt=\"Not Authorized\" />\n\n <Typography use={\"body1\"} className={styles.bodyStyle}>\n You are not authorized to view this route.\n </Typography>\n\n <Typography use={\"body1\"} className={styles.bodyStyle}>\n Please contact your administrator to request access.\n </Typography>\n\n <Link to=\"/\" className={styles.linkStyle}>\n Take me back.\n </Link>\n </ContentWrapper>\n );\n};\n"],"file":"NotAuthorizedError.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/NotAuthorizedError/index.ts"],"names":["NotAuthorizedError"],"mappings":"AAAA,SAASA,kBAAT","sourcesContent":["export { NotAuthorizedError } from \"./NotAuthorizedError\";\n"],"file":"index.js"}
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["plugins"],"mappings":"AAAA,OAAOA,OAAP;AAEA,gBAAe,YAAM;AACjB,SAAOA,OAAO,EAAd;AACH,CAFD","sourcesContent":["import plugins from \"./plugins\";\n\nexport default () => {\n return plugins();\n};\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/constants.ts"],"names":["Permission"],"mappings":"AAAA,WAAYA,UAAZ;;WAAYA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U","sourcesContent":["export enum Permission {\n Groups = \"security.group\",\n ApiKeys = \"security.apiKey\"\n}\n"],"file":"constants.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/index.ts"],"names":["routes","menus","installation","permissionRenderer","secureRouteError"],"mappings":"AACA,OAAOA,MAAP;AACA,OAAOC,KAAP;AACA,OAAOC,YAAP;AACA,OAAOC,kBAAP;AACA,OAAOC,gBAAP;AAEA,gBAAe;AAAA,SAAwB,CACnCJ,MADmC,EAEnCC,KAFmC,EAGnCC,YAHmC,EAInCC,kBAJmC,EAKnCC,gBALmC,CAAxB;AAAA,CAAf","sourcesContent":["import { PluginCollection } from \"@webiny/plugins/types\";\nimport routes from \"./routes\";\nimport menus from \"./menus\";\nimport installation from \"./installation\";\nimport permissionRenderer from \"./permissionRenderer\";\nimport secureRouteError from \"~/plugins/secureRouteError\";\n\nexport default (): PluginCollection => [\n routes,\n menus,\n installation,\n permissionRenderer,\n secureRouteError\n];\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/installation.tsx"],"names":["React","useState","useEffect","gql","useApolloClient","Alert","CircularProgress","SimpleForm","SimpleFormContent","styled","SimpleFormPlaceholder","minHeight","minWidth","IS_INSTALLED","INSTALL","SecurityInstaller","onInstalled","client","error","setError","mutate","mutation","then","data","security","install","message","setTimeout","label","plugin","name","type","title","dependencies","secure","getInstalledVersion","query","version","render"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,QAA2C,OAA3C;AACA,OAAOC,GAAP,MAAgB,aAAhB;AACA,SAASC,eAAT,QAAgC,qBAAhC;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AACA,SAASC,UAAT,EAAqBC,iBAArB,QAA8C,yCAA9C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AAGA,IAAMC,qBAAqB,gBAAGD,MAAH;AAAA;AAAA;AAAA,GAAc;AACrCE,EAAAA,SAAS,EAAE,GAD0B;AAErCC,EAAAA,QAAQ,EAAE;AAF2B,CAAd,CAA3B;AAKA,IAAMC,YAAY,GAAGV,GAAH,mKAAlB;AAQA,IAAMW,OAAO,GAAGX,GAAH,8SAAb;;AAcA,IAAMY,iBAAiB,GAAG,SAApBA,iBAAoB,OAAqB;AAAA,MAAlBC,WAAkB,QAAlBA,WAAkB;AAC3C,MAAMC,MAAM,GAAGb,eAAe,EAA9B;;AACA,kBAA0BH,QAAQ,CAAC,IAAD,CAAlC;AAAA;AAAA,MAAOiB,KAAP;AAAA,MAAcC,QAAd;;AAEAjB,EAAAA,SAAS,CAAC,YAAM;AACZe,IAAAA,MAAM,CAACG,MAAP,CAAc;AAAEC,MAAAA,QAAQ,EAAEP;AAAZ,KAAd,EAAqCQ,IAArC,CAA0C,iBAAc;AAAA,UAAXC,IAAW,SAAXA,IAAW;AACpD,UAAQL,KAAR,GAAkBK,IAAI,CAACC,QAAL,CAAcC,OAAhC,CAAQP,KAAR;;AACA,UAAIA,KAAJ,EAAW;AACPC,QAAAA,QAAQ,CAACD,KAAK,CAACQ,OAAP,CAAR;AACA;AACH,OALmD,CAOpD;;;AACAC,MAAAA,UAAU,CAACX,WAAD,EAAc,IAAd,CAAV;AACH,KATD;AAUH,GAXQ,EAWN,EAXM,CAAT;AAaA,MAAMY,KAAK,GAAGV,KAAK,gBACf,oBAAC,KAAD;AAAO,IAAA,KAAK,wBAAZ;AAAsC,IAAA,IAAI,EAAE;AAA5C,KACKA,KADL,CADe,2BAAnB;AAQA,sBACI,oBAAC,UAAD,qBACI,oBAAC,gBAAD;AAAkB,IAAA,KAAK,EAAEU;AAAzB,IADJ,eAEI,oBAAC,iBAAD,qBACI,oBAAC,qBAAD,OADJ,CAFJ,CADJ;AAQH,CAjCD;;AAmCA,IAAMC,MAA+B,GAAG;AACpCC,EAAAA,IAAI,EAAE,6BAD8B;AAEpCC,EAAAA,IAAI,EAAE,oBAF8B;AAGpCC,EAAAA,KAAK,YAH+B;AAIpCC,EAAAA,YAAY,EAAE,8BAJsB;AAKpCC,EAAAA,MAAM,EAAE,KAL4B;AAM9BC,EAAAA,mBAN8B,sCAME;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAVlB,cAAAA,MAAU,SAAVA,MAAU;AAAA;AAAA,qBACXA,MAAM,CAACmB,KAAP,CAAa;AAAEA,gBAAAA,KAAK,EAAEvB;AAAT,eAAb,CADW;;AAAA;AAAA;AAC1BU,cAAAA,IAD0B,uBAC1BA,IAD0B;AAAA,+CAE3BA,IAAI,CAACC,QAAL,CAAca,OAFa;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGrC,GATmC;AAUpCC,EAAAA,MAVoC,yBAUZ;AAAA,QAAftB,WAAe,SAAfA,WAAe;AACpB,wBAAO,oBAAC,iBAAD;AAAmB,MAAA,WAAW,EAAEA;AAAhC,MAAP;AACH;AAZmC,CAAxC;AAeA,eAAea,MAAf","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport gql from \"graphql-tag\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { SimpleForm, SimpleFormContent } from \"@webiny/app-admin/components/SimpleForm\";\nimport styled from \"@emotion/styled\";\nimport { AdminInstallationPlugin } from \"@webiny/app-admin/types\";\n\nconst SimpleFormPlaceholder = styled.div({\n minHeight: 300,\n minWidth: 400\n});\n\nconst IS_INSTALLED = gql`\n query IsSecurityInstalled {\n security {\n version\n }\n }\n`;\n\nconst INSTALL = gql`\n mutation InstallSecurity {\n security {\n install {\n data\n error {\n code\n message\n }\n }\n }\n }\n`;\n\nconst SecurityInstaller = ({ onInstalled }) => {\n const client = useApolloClient();\n const [error, setError] = useState(null);\n\n useEffect(() => {\n client.mutate({ mutation: INSTALL }).then(({ data }) => {\n const { error } = data.security.install;\n if (error) {\n setError(error.message);\n return;\n }\n\n // Just so the user sees the actual message.\n setTimeout(onInstalled, 3000);\n });\n }, []);\n\n const label = error ? (\n <Alert title={`Something went wrong`} type={\"danger\"}>\n {error}\n </Alert>\n ) : (\n `Installing Security...`\n );\n\n return (\n <SimpleForm>\n <CircularProgress label={label} />\n <SimpleFormContent>\n <SimpleFormPlaceholder />\n </SimpleFormContent>\n </SimpleForm>\n );\n};\n\nconst plugin: AdminInstallationPlugin = {\n name: \"admin-installation-security\",\n type: \"admin-installation\",\n title: `Security`,\n dependencies: [`admin-installation-tenancy`],\n secure: false,\n async getInstalledVersion({ client }) {\n const { data } = await client.query({ query: IS_INSTALLED });\n return data.security.version;\n },\n render({ onInstalled }) {\n return <SecurityInstaller onInstalled={onInstalled} />;\n }\n};\n\nexport default plugin;\n"],"file":"installation.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/menus.tsx"],"names":["NavigationMenuElement","TAGS","Permission","UIViewPlugin","NavigationView","view","isRendered","getSecurityHook","identity","groups","getPermission","Groups","apiKeys","ApiKeys","mainMenu","getSettingsMenuElement","addElement","label","tags","UTILS","path"],"mappings":";;AAAA,SAASA,qBAAT,EAAgCC,IAAhC,QAA4C,qDAA5C;AACA,SAASC,UAAT;AACA,SAASC,YAAT,QAA6B,6BAA7B;AACA,SAASC,cAAT,QAA+B,2CAA/B;AAEA,eAAe,IAAID,YAAJ,CAAiCC,cAAjC;AAAA,sEAAiD,iBAAMC,IAAN;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACtDA,IAAI,CAACC,UAAL,EADsD;;AAAA;AAAA,oCAGvCD,IAAI,CAACE,eAAL,EAHuC,EAGpDC,QAHoD,yBAGpDA,QAHoD;AAItDC,YAAAA,MAJsD,GAI7CD,QAAQ,CAACE,aAAT,CAAuBR,UAAU,CAACS,MAAlC,CAJ6C;AAKtDC,YAAAA,OALsD,GAK5CJ,QAAQ,CAACE,aAAT,CAAuBR,UAAU,CAACW,OAAlC,CAL4C;;AAAA,kBAOxD,CAACJ,MAAD,IAAW,CAACG,OAP4C;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAWtDE,YAAAA,QAXsD,GAW3CT,IAAI,CAACU,sBAAL,GAA8BC,UAA9B,CACb,IAAIhB,qBAAJ,CAA0B,kBAA1B,EAA8C;AAC1CiB,cAAAA,KAAK,EAAE,mBADmC;AAE1CC,cAAAA,IAAI,EAAE,CAACjB,IAAI,CAACkB,KAAN;AAFoC,aAA9C,CADa,CAX2C;;AAkB5D,gBAAIV,MAAJ,EAAY;AACRK,cAAAA,QAAQ,CAACE,UAAT,CACI,IAAIhB,qBAAJ,CAA0B,QAA1B,EAAoC;AAChCiB,gBAAAA,KAAK,EAAE,QADyB;AAEhCG,gBAAAA,IAAI,EAAE;AAF0B,eAApC,CADJ;AAMH;;AAED,gBAAIR,OAAJ,EAAa;AACTE,cAAAA,QAAQ,CAACE,UAAT,CACI,IAAIhB,qBAAJ,CAA0B,SAA1B,EAAqC;AACjCiB,gBAAAA,KAAK,EAAE,UAD0B;AAEjCG,gBAAAA,IAAI,EAAE;AAF2B,eAArC,CADJ;AAMH;;AAlC2D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAjD;;AAAA;AAAA;AAAA;AAAA,IAAf","sourcesContent":["import { NavigationMenuElement, TAGS } from \"@webiny/app-admin/ui/elements/NavigationMenuElement\";\nimport { Permission } from \"./constants\";\nimport { UIViewPlugin } from \"@webiny/app-admin/ui/UIView\";\nimport { NavigationView } from \"@webiny/app-admin/ui/views/NavigationView\";\n\nexport default new UIViewPlugin<NavigationView>(NavigationView, async view => {\n await view.isRendered();\n\n const { identity } = view.getSecurityHook();\n const groups = identity.getPermission(Permission.Groups);\n const apiKeys = identity.getPermission(Permission.ApiKeys);\n\n if (!groups && !apiKeys) {\n return;\n }\n\n const mainMenu = view.getSettingsMenuElement().addElement<NavigationMenuElement>(\n new NavigationMenuElement(\"accessManagement\", {\n label: \"Access Management\",\n tags: [TAGS.UTILS]\n })\n );\n\n if (groups) {\n mainMenu.addElement<NavigationMenuElement>(\n new NavigationMenuElement(\"groups\", {\n label: \"Groups\",\n path: \"/access-management/groups\"\n })\n );\n }\n\n if (apiKeys) {\n mainMenu.addElement<NavigationMenuElement>(\n new NavigationMenuElement(\"apiKeys\", {\n label: \"API Keys\",\n path: \"/access-management/api-keys\"\n })\n );\n }\n});\n"],"file":"menus.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/permissionRenderer/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\";\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\nexport const SecurityPermissions = ({ value, onChange }) => {\n const onFormChange = useCallback(\n data => {\n let newValue = [];\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"],"file":"SecurityPermissions.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/permissionRenderer/index.tsx"],"names":["React","i18n","AccordionItem","SecurityPermissions","PermissionRendererPlugin","t","ns","render","props"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,kBAArB;AACA,SAASC,aAAT,QAA8B,sBAA9B;;AAEA,SAASC,mBAAT;AACA,SAASC,wBAAT,QAAyC,oDAAzC;AAEA,IAAMC,CAAC,GAAGJ,IAAI,CAACK,EAAL,CAAQ,qDAAR,CAAV;AAEA,eAAe,IAAIF,wBAAJ,CAA6B;AACxCG,EAAAA,MADwC,kBACjCC,KADiC,EAC1B;AACV,wBACI,oBAAC,aAAD;AACI,MAAA,IAAI,eAAE,oBAAC,YAAD,OADV;AAEI,MAAA,KAAK,EAAEH,CAAF,6EAFT;AAGI,MAAA,WAAW,EAAEA,CAAF,8GAHf;AAII,qBAAa;AAJjB,oBAMI,oBAAC,mBAAD,EAAyBG,KAAzB,CANJ,CADJ;AAUH;AAZuC,CAA7B,CAAf","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"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/routes.tsx"],"names":["React","Helmet","Route","AdminLayout","SecureRoute","Groups","ApiKeys","Permission","plugins","name","type","route"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,MAAP,MAAmB,cAAnB;AACA,SAASC,KAAT,QAAsB,sBAAtB;AACA,SAASC,WAAT,QAA4B,0CAA5B;AACA,SAASC,WAAT,QAA4B,iCAA5B;AAEA,SAASC,MAAT;AACA,SAASC,OAAT;AACA,SAASC,UAAT;AAEA,IAAMC,OAAsB,GAAG,CAC3B;AACIC,EAAAA,IAAI,EAAE,uBADV;AAEIC,EAAAA,IAAI,EAAE,OAFV;AAGIC,EAAAA,KAAK,eACD,oBAAC,KAAD;AACI,IAAA,KAAK,MADT;AAEI,IAAA,IAAI,EAAE,2BAFV;AAGI,IAAA,MAAM,EAAE;AAAA,0BACJ,oBAAC,WAAD;AAAa,QAAA,UAAU,EAAEJ,UAAU,CAACF;AAApC,sBACI,oBAAC,WAAD,qBACI,oBAAC,MAAD;AAAQ,QAAA,KAAK,EAAE;AAAf,QADJ,eAEI,oBAAC,MAAD,OAFJ,CADJ,CADI;AAAA;AAHZ;AAJR,CAD2B,EAmB3B;AACII,EAAAA,IAAI,EAAE,yBADV;AAEIC,EAAAA,IAAI,EAAE,OAFV;AAGIC,EAAAA,KAAK,eACD,oBAAC,KAAD;AACI,IAAA,KAAK,MADT;AAEI,IAAA,IAAI,EAAE,6BAFV;AAGI,IAAA,MAAM,EAAE;AAAA,0BACJ,oBAAC,WAAD;AAAa,QAAA,UAAU,EAAEJ,UAAU,CAACD;AAApC,sBACI,oBAAC,WAAD;AAAa,QAAA,KAAK,EAAE;AAApB,sBACI,oBAAC,OAAD,OADJ,CADJ,CADI;AAAA;AAHZ;AAJR,CAnB2B,CAA/B;AAsCA,eAAeE,OAAf","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"],"file":"routes.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/secureRouteError.tsx"],"names":["React","NotAuthorizedError","plugin","type","name","render"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,kBAAT;AAIA,IAAMC,MAA8B,GAAG;AACnCC,EAAAA,IAAI,EAAE,oBAD6B;AAEnCC,EAAAA,IAAI,EAAE,oBAF6B;AAGnCC,EAAAA,MAHmC,oBAG1B;AACL,wBAAO,oBAAC,kBAAD,OAAP;AACH;AALkC,CAAvC;AAQA,eAAeH,MAAf","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() {\n return <NotAuthorizedError />;\n }\n};\n\nexport default plugin;\n"],"file":"secureRouteError.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/elements/GroupAutocompleteElement.tsx"],"names":["React","InputElement","GroupAutocomplete","GroupAutocompleteElement","formProps","Bind","id","config","validators"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,YAAT,QAA6B,iDAA7B;AACA,SAASC,iBAAT;AAEA,WAAaC,wBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,WACI,sBAA+C;AAAA,UAAtCC,SAAsC,QAAtCA,SAAsC;AAC3C,kBAAiBA,SAAjB;AAAA,UAAQC,IAAR,SAAQA,IAAR;AAEA,0BACI,oBAAC,IAAD;AAAM,QAAA,IAAI,EAAE,KAAKC,EAAjB;AAAqB,QAAA,UAAU,EAAE,KAAKC,MAAL,CAAYC;AAA7C,sBACI,oBAAC,iBAAD;AAAmB,QAAA,KAAK,EAAE;AAA1B,QADJ,CADJ;AAKH;AATL;;AAAA;AAAA,EAA8CP,YAA9C","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\";\n\nexport class GroupAutocompleteElement extends InputElement {\n render({ formProps }: any): React.ReactElement {\n const { Bind } = formProps as FormRenderPropParams;\n\n return (\n <Bind name={this.id} validators={this.config.validators}>\n <GroupAutocomplete label={\"Group\"} />\n </Bind>\n );\n }\n}\n"],"file":"GroupAutocompleteElement.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/ApiKeys/ApiKeyForm.tsx"],"names":["React","useCallback","useMutation","useQuery","get","useRouter","i18n","Form","Grid","Cell","Input","ButtonDefault","ButtonIcon","ButtonPrimary","CopyButton","CircularProgress","FormElementMessage","Permissions","validation","SimpleForm","SimpleFormFooter","SimpleFormContent","SimpleFormHeader","Typography","useSnackbar","pickDataForAPI","GQL","SnackbarAction","isEmpty","EmptyView","styled","t","ns","ButtonWrapper","display","justifyContent","ApiKeyForm","location","history","showSnackbar","newEntry","URLSearchParams","search","id","getQuery","READ_API_KEY","variables","skip","onCompleted","data","error","security","apiKey","push","message","CREATE_API_KEY","refetchQueries","query","LIST_API_KEYS","create","createMutation","UPDATE_API_KEY","update","updateMutation","loading","find","item","onSubmit","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","operation","args","response","showEmptyView","form","Bind","name","token","background","padding","paddingLeft","lineHeight","verticalAlign","position","right","bind","submit"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary, CopyButton } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { Permissions } from \"@webiny/app-admin/components/Permissions\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { pickDataForAPI } from \"./utils\";\nimport * as GQL from \"./graphql\";\nimport { SnackbarAction } from \"@webiny/ui/Snackbar\";\nimport isEmpty from \"lodash/isEmpty\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport styled from \"@emotion/styled\";\n\nconst t = i18n.ns(\"app-security-admin-users/admin/api-keys/form\");\n\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\nconst ApiKeyForm = () => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const newEntry = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery(GQL.READ_API_KEY, {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.security.apiKey;\n if (error) {\n history.push(\"/access-management/api-keys\");\n showSnackbar(error.message);\n }\n }\n });\n\n const [create, createMutation] = useMutation(GQL.CREATE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const [update, updateMutation] = useMutation(GQL.UPDATE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const onSubmit = useCallback(\n async data => {\n if (!data.permissions || !data.permissions.length) {\n showSnackbar(t`You must configure permissions before saving!`, {\n timeout: 60000,\n dismissesOnAction: true,\n action: <SnackbarAction label={\"OK\"} />\n });\n return;\n }\n\n const isUpdate = data.createdOn;\n const [operation, args] = isUpdate\n ? [update, { variables: { id: data.id, data: pickDataForAPI(data) } }]\n : [create, { variables: { data: pickDataForAPI(data) } }];\n\n const response = await operation(args);\n\n const { error } = response.data.security.apiKey;\n if (error) {\n return showSnackbar(error.message);\n }\n\n const { id } = response.data.security.apiKey.data;\n\n !isUpdate && history.push(`/access-management/api-keys?id=${id}`);\n showSnackbar(t`API key saved successfully.`);\n },\n [id]\n );\n\n const data = get(getQuery, \"data.security.apiKey.data\", {});\n\n const showEmptyView = !newEntry && !loading && isEmpty(data);\n // Render \"No content\" selected view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display API key details or create a...`}\n action={\n <ButtonDefault\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 </ButtonDefault>\n }\n />\n );\n }\n\n return (\n <Form data={data} onSubmit={onSubmit}>\n {({ data, form, Bind }) => {\n return (\n <SimpleForm>\n {loading && <CircularProgress />}\n <SimpleFormHeader title={data.name ? data.name : \"Untitled\"} />\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Bind name=\"name\" validators={validation.create(\"required\")}>\n <Input label={t`Name`} />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"description\"\n validators={validation.create(\"required\")}\n >\n <Input label={t`Description`} rows={4} />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <div>\n <Typography use={\"subtitle1\"}>{t`Token`}</Typography>\n {data.token ? (\n <div\n style={{\n background: \"var(--mdc-theme-background)\",\n padding: \"8px\",\n paddingLeft: \"16px\"\n }}\n >\n <span\n style={{\n lineHeight: \"48px\",\n verticalAlign: \"middle\"\n }}\n >\n {data.token}\n </span>\n <span\n style={{ position: \"absolute\", right: \"32px\" }}\n >\n <CopyButton\n value={data.token}\n onCopy={() =>\n showSnackbar(\"Successfully copied!\")\n }\n />\n </span>\n </div>\n ) : (\n <FormElementMessage>\n Your token will be shown once you submit the form.\n </FormElementMessage>\n )}\n </div>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Typography use={\"subtitle1\"}>{t`Permissions`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"permissions\"} defaultValue={[]}>\n {bind => <Permissions id={data.id || \"new\"} {...bind} />}\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/access-management/api-keys\")}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={form.submit}\n >{t`Save API key`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n\nexport default ApiKeyForm;\n"],"file":"ApiKeyForm.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/ApiKeys/ApiKeys.tsx"],"names":["React","SplitView","LeftPanel","RightPanel","ApiKeysDataList","ApiKeyForm","ApiKeys","formProps","listProps"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,EAAoBC,SAApB,EAA+BC,UAA/B,QAAiD,wCAAjD;AACA,OAAOC,eAAP;AACA,OAAOC,UAAP;;AAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,OAAmC;AAAA,MAAhCC,SAAgC,QAAhCA,SAAgC;AAAA,MAArBC,SAAqB,QAArBA,SAAqB;AAC/C,sBACI,oBAAC,SAAD,qBACI,oBAAC,SAAD,qBACI,oBAAC,eAAD,EAAqBA,SAArB,CADJ,CADJ,eAII,oBAAC,UAAD,qBACI,oBAAC,UAAD,EAAgBD,SAAhB,CADJ,CAJJ,CADJ;AAUH,CAXD;;AAaA,eAAeD,OAAf","sourcesContent":["import * as React from \"react\";\nimport { SplitView, LeftPanel, RightPanel } from \"@webiny/app-admin/components/SplitView\";\nimport ApiKeysDataList from \"./ApiKeysDataList\";\nimport ApiKeyForm from \"./ApiKeyForm\";\n\nconst ApiKeys = ({ formProps, listProps }: any) => {\n return (\n <SplitView>\n <LeftPanel>\n <ApiKeysDataList {...listProps} />\n </LeftPanel>\n <RightPanel>\n <ApiKeyForm {...formProps} />\n </RightPanel>\n </SplitView>\n );\n};\n\nexport default ApiKeys;\n"],"file":"ApiKeys.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/ApiKeys/ApiKeysDataList.tsx"],"names":["React","useCallback","useMemo","useState","orderBy","i18n","DataList","ScrollList","ListItem","ListItemText","ListItemTextSecondary","ListItemMeta","ListActions","DataListModalOverlayAction","DataListModalOverlay","ButtonIcon","ButtonSecondary","DeleteIcon","Cell","Grid","Select","useRouter","SearchUI","useSnackbar","useQuery","useMutation","useConfirmationDialog","GQL","serializeSorters","deserializeSorters","t","ns","SORTERS","label","sorters","createdOn","name","ApiKeysDataList","filter","setFilter","sort","setSort","history","location","showSnackbar","dataTestId","showConfirmation","filterAPIKey","description","toLowerCase","includes","sortKeys","list","Object","entries","key","value","LIST_API_KEYS","listResponse","data","listLoading","loading","DELETE_API_KEY","refetchQueries","query","deleteIt","deleteLoading","security","apiKeys","id","URLSearchParams","search","get","deleteItem","item","variables","error","deleteApiKey","message","push","groupsDataListModalOverlay","map","filteredData"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,OAA7B,EAAsCC,QAAtC,QAAsD,OAAtD;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,SAASC,IAAT,QAAqB,kBAArB;AACA,SACIC,QADJ,EAEIC,UAFJ,EAGIC,QAHJ,EAIIC,YAJJ,EAKIC,qBALJ,EAMIC,YANJ,EAOIC,WAPJ,EAQIC,0BARJ,EASIC,oBATJ,QAUO,iBAVP;AAWA,SAASC,UAAT,EAAqBC,eAArB,QAA4C,mBAA5C;AACA,SAASC,UAAT,QAA2B,gCAA3B;AACA,SAASC,IAAT,EAAeC,IAAf,QAA2B,iBAA3B;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,OAAOC,QAAP,MAAqB,uCAArB;AACA,SAASC,WAAT,QAA4B,qCAA5B;AACA,SAASC,QAAT,EAAmBC,WAAnB,QAAsC,qBAAtC;AACA,SAASC,qBAAT,QAAsC,+CAAtC;AACA,OAAO,KAAKC,GAAZ;;;AAGA,SAASC,gBAAT,EAA2BC,kBAA3B;AAEA,IAAMC,CAAC,GAAGzB,IAAI,CAAC0B,EAAL,CAAQ,qCAAR,CAAV;AAEA,IAAMC,OAAO,GAAG,CACZ;AACIC,EAAAA,KAAK,EAAEH,CAAF,qFADT;AAEII,EAAAA,OAAO,EAAE;AAAEC,IAAAA,SAAS,EAAE;AAAb;AAFb,CADY,EAKZ;AACIF,EAAAA,KAAK,EAAEH,CAAF,uFADT;AAEII,EAAAA,OAAO,EAAE;AAAEC,IAAAA,SAAS,EAAE;AAAb;AAFb,CALY,EASZ;AACIF,EAAAA,KAAK,EAAEH,CAAF,+EADT;AAEII,EAAAA,OAAO,EAAE;AAAEE,IAAAA,IAAI,EAAE;AAAR;AAFb,CATY,EAaZ;AACIH,EAAAA,KAAK,EAAEH,CAAF,+EADT;AAEII,EAAAA,OAAO,EAAE;AAAEE,IAAAA,IAAI,EAAE;AAAR;AAFb,CAbY,CAAhB;;AAmBA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC1B,kBAA4BlC,QAAQ,CAAC,EAAD,CAApC;AAAA;AAAA,MAAOmC,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAAwBpC,QAAQ,CAACyB,gBAAgB,CAACI,OAAO,CAAC,CAAD,CAAP,CAAWE,OAAZ,CAAjB,CAAhC;AAAA;AAAA,MAAOM,IAAP;AAAA,MAAaC,OAAb;;AACA,mBAA8BpB,SAAS,EAAvC;AAAA,MAAQqB,OAAR,cAAQA,OAAR;AAAA,MAAiBC,QAAjB,cAAiBA,QAAjB;;AACA,qBAAyBpB,WAAW,EAApC;AAAA,MAAQqB,YAAR,gBAAQA,YAAR;;AACA,8BAA6BlB,qBAAqB,CAAC;AAC/CmB,IAAAA,UAAU,EAAE;AADmC,GAAD,CAAlD;AAAA,MAAQC,gBAAR,yBAAQA,gBAAR;;AAIA,MAAMC,YAAY,GAAG9C,WAAW,CAC5B,gBAA2B;AAAA,QAAxB+C,WAAwB,QAAxBA,WAAwB;AAAA,QAAXZ,IAAW,QAAXA,IAAW;AACvB,WACKY,WAAW,IAAIA,WAAW,CAACC,WAAZ,GAA0BC,QAA1B,CAAmCZ,MAAnC,CAAhB,IACAF,IAAI,CAACa,WAAL,GAAmBC,QAAnB,CAA4BZ,MAA5B,CAFJ;AAIH,GAN2B,EAO5B,CAACA,MAAD,CAP4B,CAAhC;AAUA,MAAMa,QAAQ,GAAGlD,WAAW,CACxB,UAAAmD,IAAI,EAAI;AACJ,QAAI,CAACZ,IAAL,EAAW;AACP,aAAOY,IAAP;AACH;;AACD,0BAAuBC,MAAM,CAACC,OAAP,CAAezB,kBAAkB,CAACW,IAAD,CAAjC,CAAvB;AAAA;AAAA;AAAA,QAAQe,GAAR;AAAA,QAAaC,KAAb;;AACA,WAAOpD,OAAO,CAACgD,IAAD,EAAO,CAACG,GAAD,CAAP,EAAc,CAACC,KAAD,CAAd,CAAd;AACH,GAPuB,EAQxB,CAAChB,IAAD,CARwB,CAA5B;;AAWA,kBAAqDhB,QAAQ,CAACG,GAAG,CAAC8B,aAAL,CAA7D;AAAA,MAAcC,YAAd,aAAQC,IAAR;AAAA,MAAqCC,WAArC,aAA4BC,OAA5B;;AAEA,qBAA+CpC,WAAW,CAACE,GAAG,CAACmC,cAAL,EAAqB;AAC3EC,IAAAA,cAAc,EAAE,CAAC;AAAEC,MAAAA,KAAK,EAAErC,GAAG,CAAC8B;AAAb,KAAD;AAD2D,GAArB,CAA1D;AAAA;AAAA,MAAOQ,QAAP;AAAA,MAA4BC,aAA5B,oBAAmBL,OAAnB;;AAIA,MAAMF,IAAI,GAAGC,WAAW,IAAI,CAACF,YAAhB,GAA+B,EAA/B,GAAoCA,YAAY,CAACS,QAAb,CAAsBC,OAAtB,CAA8BT,IAA/E;AACA,MAAMU,EAAE,GAAG,IAAIC,eAAJ,CAAoB3B,QAAQ,CAAC4B,MAA7B,EAAqCC,GAArC,CAAyC,IAAzC,CAAX;AAEA,MAAMC,UAAU,GAAGxE,WAAW,CAC1B,UAAAyE,IAAI,EAAI;AACJ5B,IAAAA,gBAAgB,wEAAC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACUmB,QAAQ,CAAC;AAC5BU,gBAAAA,SAAS,EAAED;AADiB,eAAD,CADlB;;AAAA;AAAA;AACLf,cAAAA,IADK,mBACLA,IADK;AAKLiB,cAAAA,KALK,GAKKjB,IAAI,CAACQ,QAAL,CAAcU,YALnB,CAKLD,KALK;;AAAA,mBAMTA,KANS;AAAA;AAAA;AAAA;;AAAA,+CAOFhC,YAAY,CAACgC,KAAK,CAACE,OAAP,CAPV;;AAAA;AAUblC,cAAAA,YAAY,CAACd,CAAC,gGAAD,CAA2B;AAAEuC,gBAAAA,EAAE,EAAEK,IAAI,CAACL;AAAX,eAA3B,CAAD,CAAZ;;AAEA,kBAAIA,EAAE,KAAKK,IAAI,CAACL,EAAhB,EAAoB;AAChB3B,gBAAAA,OAAO,CAACqC,IAAR;AACH;;AAdY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD,GAAhB;AAgBH,GAlByB,EAmB1B,CAACV,EAAD,CAnB0B,CAA9B;AAsBA,MAAMW,0BAA0B,GAAG9E,OAAO,CACtC;AAAA,wBACI,oBAAC,oBAAD,qBACI,oBAAC,IAAD,qBACI,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAE;AAAZ,oBACI,oBAAC,MAAD;AAAQ,MAAA,KAAK,EAAEsC,IAAf;AAAqB,MAAA,QAAQ,EAAEC,OAA/B;AAAwC,MAAA,KAAK,EAAEX,CAAF;AAA7C,OACKE,OAAO,CAACiD,GAAR,CAAY,iBAAwB;AAAA,UAArBhD,KAAqB,SAArBA,KAAqB;AAAA,UAAdC,OAAc,SAAdA,OAAc;AACjC,0BACI;AAAQ,QAAA,GAAG,EAAED,KAAb;AAAoB,QAAA,KAAK,EAAEL,gBAAgB,CAACM,OAAD;AAA3C,SACKD,KADL,CADJ;AAKH,KANA,CADL,CADJ,CADJ,CADJ,CADJ;AAAA,GADsC,EAkBtC,CAACO,IAAD,CAlBsC,CAA1C;AAqBA,MAAM0C,YAAY,GAAG5C,MAAM,KAAK,EAAX,GAAgBqB,IAAhB,GAAuBA,IAAI,CAACrB,MAAL,CAAYS,YAAZ,CAA5C;AACA,MAAMK,IAAI,GAAGD,QAAQ,CAAC+B,YAAD,CAArB;AAEA,sBACI,oBAAC,QAAD;AACI,IAAA,KAAK,EAAEpD,CAAF,+EADT;AAEI,IAAA,OAAO,eACH,oBAAC,eAAD;AACI,qBAAY,mBADhB;AAEI,MAAA,OAAO,EAAE;AAAA,eAAMY,OAAO,CAACqC,IAAR,CAAa,sCAAb,CAAN;AAAA;AAFb,oBAII,oBAAC,UAAD;AAAY,MAAA,IAAI,eAAE,oBAAC,OAAD;AAAlB,MAJJ,OAIuCjD,CAJvC,mFAHR;AAUI,IAAA,IAAI,EAAEsB,IAVV;AAWI,IAAA,OAAO,EAAEQ,WAAW,IAAIM,aAX5B;AAYI,IAAA,MAAM,eACF,oBAAC,QAAD;AACI,MAAA,KAAK,EAAE5B,MADX;AAEI,MAAA,QAAQ,EAAEC,SAFd;AAGI,MAAA,gBAAgB,EAAET,CAAF;AAHpB,MAbR;AAmBI,IAAA,YAAY,EAAEkD,0BAnBlB;AAoBI,IAAA,kBAAkB,eACd,oBAAC,0BAAD;AACI,MAAA,IAAI,eAAE,oBAAC,UAAD,OADV;AAEI,qBAAa;AAFjB;AArBR,KA2BK;AAAA,QAAGrB,IAAH,SAAGA,IAAH;AAAA,wBACG,oBAAC,UAAD;AAAY,qBAAY;AAAxB,OACKA,IAAI,CAACsB,GAAL,CAAS,UAAAP,IAAI;AAAA,0BACV,oBAAC,QAAD;AAAU,QAAA,GAAG,EAAEA,IAAI,CAACL,EAApB;AAAwB,QAAA,QAAQ,EAAEK,IAAI,CAACL,EAAL,KAAYA;AAA9C,sBACI,oBAAC,YAAD;AACI,QAAA,OAAO,EAAE;AAAA,iBACL3B,OAAO,CAACqC,IAAR,0CAA+CL,IAAI,CAACL,EAApD,EADK;AAAA;AADb,SAKKK,IAAI,CAACtC,IALV,eAMI,oBAAC,qBAAD,QAAwBsC,IAAI,CAAC1B,WAA7B,CANJ,CADJ,eAUI,oBAAC,YAAD,qBACI,oBAAC,WAAD,qBACI,oBAAC,UAAD;AACI,QAAA,OAAO,EAAE;AAAA,iBAAMyB,UAAU,CAACC,IAAD,CAAhB;AAAA,SADb;AAEI,uBAAa;AAFjB,QADJ,CADJ,CAVJ,CADU;AAAA,KAAb,CADL,CADH;AAAA,GA3BL,CADJ;AAuDH,CA5ID;;AA8IA,eAAerC,eAAf","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 { serializeSorters, deserializeSorters } from \"../utils\";\n\nconst t = i18n.ns(\"app-security/admin/groups/data-list\");\n\nconst SORTERS = [\n {\n label: t`Newest to oldest`,\n sorters: { createdOn: \"desc\" }\n },\n {\n label: t`Oldest to newest`,\n sorters: { createdOn: \"asc\" }\n },\n {\n label: t`Name A-Z`,\n sorters: { name: \"asc\" }\n },\n {\n label: t`Name Z-A`,\n sorters: { name: \"desc\" }\n }\n];\n\nconst ApiKeysDataList = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState(serializeSorters(SORTERS[0].sorters));\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]] = Object.entries(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, sorters }) => {\n return (\n <option key={label} value={serializeSorters(sorters)}>\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 }) => (\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\nexport default ApiKeysDataList;\n"],"file":"ApiKeysDataList.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/ApiKeys/graphql.ts"],"names":["gql","fields","LIST_API_KEYS","READ_API_KEY","CREATE_API_KEY","UPDATE_API_KEY","DELETE_API_KEY"],"mappings":";;;;AAAA,OAAOA,GAAP,MAAgB,aAAhB;AAEA,IAAMC,MAAM,qFAAZ;AASA,OAAO,IAAMC,aAAkB,GAAGF,GAAH,8PAKVC,MALU,CAAxB;AAYP,OAAO,IAAME,YAAiB,GAAGH,GAAH,iXAKRC,MALQ,CAAvB;AAgBP,OAAO,IAAMG,cAAmB,GAAGJ,GAAH,2aAKVC,MALU,CAAzB;AAiBP,OAAO,IAAMI,cAAmB,GAAGL,GAAH,8bAKVC,MALU,CAAzB;AAiBP,OAAO,IAAMK,cAAmB,GAAGN,GAAH,mUAAzB","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: any = gql`\n query ListApiKeys {\n security {\n apiKeys: listApiKeys {\n data {\n ${fields}\n }\n }\n }\n }\n`;\n\nexport const READ_API_KEY: any = 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: any = 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: any = 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: any = 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"],"file":"graphql.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/ApiKeys/index.ts"],"names":["default","ApiKeys"],"mappings":"AAAA,SAASA,OAAO,IAAIC,OAApB","sourcesContent":["export { default as ApiKeys } from \"./ApiKeys\";\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/ApiKeys/utils.ts"],"names":["pickDataForAPI","data"],"mappings":";;AAEA,OAAO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,IAAI;AAAA,2BAC3B,MAAKA,IAAL,EAAW,CAAC,MAAD,EAAS,aAAT,EAAwB,aAAxB,CAAX,CAD2B;AAAA,CAA3B","sourcesContent":["import { pick } from \"lodash\";\n\nexport const pickDataForAPI = data => ({\n ...pick(data, [\"name\", \"description\", \"permissions\"])\n});\n"],"file":"utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/Groups/Groups.tsx"],"names":["React","SplitView","LeftPanel","RightPanel","GroupsDataList","GroupsForm","Groups","formProps","listProps"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,EAAoBC,SAApB,EAA+BC,UAA/B,QAAiD,wCAAjD;AACA,OAAOC,cAAP;AACA,OAAOC,UAAP;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,OAAmC;AAAA,MAAhCC,SAAgC,QAAhCA,SAAgC;AAAA,MAArBC,SAAqB,QAArBA,SAAqB;AAC9C,sBACI,oBAAC,SAAD,qBACI,oBAAC,SAAD,qBACI,oBAAC,cAAD,EAAoBA,SAApB,CADJ,CADJ,eAII,oBAAC,UAAD,qBACI,oBAAC,UAAD,EAAgBD,SAAhB,CADJ,CAJJ,CADJ;AAUH,CAXD;;AAaA,eAAeD,MAAf","sourcesContent":["import * as React from \"react\";\nimport { SplitView, LeftPanel, RightPanel } from \"@webiny/app-admin/components/SplitView\";\nimport GroupsDataList from \"./GroupsDataList\";\nimport GroupsForm from \"./GroupsForm\";\n\nconst Groups = ({ formProps, listProps }: any) => {\n return (\n <SplitView>\n <LeftPanel>\n <GroupsDataList {...listProps} />\n </LeftPanel>\n <RightPanel>\n <GroupsForm {...formProps} />\n </RightPanel>\n </SplitView>\n );\n};\n\nexport default Groups;\n"],"file":"Groups.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/Groups/GroupsDataList.tsx"],"names":["React","useCallback","useMemo","useState","orderBy","i18n","DataList","ScrollList","ListItem","ListItemText","ListItemTextSecondary","ListItemMeta","ListActions","DataListModalOverlayAction","DataListModalOverlay","DeleteIcon","useRouter","useSnackbar","useQuery","useMutation","useConfirmationDialog","LIST_GROUPS","DELETE_GROUP","Tooltip","ButtonIcon","ButtonSecondary","Cell","Grid","Select","SearchUI","deserializeSorters","serializeSorters","t","ns","SORTERS","label","sorters","createdOn","name","GroupsDataList","filter","setFilter","sort","setSort","history","location","showSnackbar","dataTestId","showConfirmation","listResponse","data","listLoading","loading","refetchQueries","query","deleteIt","deleteLoading","security","groups","id","URLSearchParams","search","get","filterGroup","slug","description","toLowerCase","includes","sortGroups","Object","entries","key","value","deleteItem","item","variables","error","deleteGroup","message","push","groupsDataListModalOverlay","map","filteredData","groupList"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,OAA7B,EAAsCC,QAAtC,QAAsD,OAAtD;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,SAASC,IAAT,QAAqB,kBAArB;AACA,SACIC,QADJ,EAEIC,UAFJ,EAGIC,QAHJ,EAIIC,YAJJ,EAKIC,qBALJ,EAMIC,YANJ,EAOIC,WAPJ,EAQIC,0BARJ,EASIC,oBATJ,QAUO,iBAVP;AAWA,SAASC,UAAT,QAA2B,gCAA3B;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,WAAT,QAA4B,qCAA5B;AACA,SAASC,QAAT,EAAmBC,WAAnB,QAAsC,qBAAtC;AACA,SAASC,qBAAT,QAAsC,+CAAtC;AACA,SAASC,WAAT,EAAsBC,YAAtB;AACA,SAASC,OAAT,QAAwB,oBAAxB;AACA,SAASC,UAAT,EAAqBC,eAArB,QAA4C,mBAA5C;AACA,SAASC,IAAT,EAAeC,IAAf,QAA2B,iBAA3B;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,OAAOC,QAAP,MAAqB,uCAArB;;;AAGA,SAASC,kBAAT,EAA6BC,gBAA7B;AAEA,IAAMC,CAAC,GAAG3B,IAAI,CAAC4B,EAAL,CAAQ,qCAAR,CAAV;AAEA,IAAMC,OAAO,GAAG,CACZ;AACIC,EAAAA,KAAK,EAAEH,CAAF,qFADT;AAEII,EAAAA,OAAO,EAAE;AAAEC,IAAAA,SAAS,EAAE;AAAb;AAFb,CADY,EAKZ;AACIF,EAAAA,KAAK,EAAEH,CAAF,uFADT;AAEII,EAAAA,OAAO,EAAE;AAAEC,IAAAA,SAAS,EAAE;AAAb;AAFb,CALY,EASZ;AACIF,EAAAA,KAAK,EAAEH,CAAF,+EADT;AAEII,EAAAA,OAAO,EAAE;AAAEE,IAAAA,IAAI,EAAE;AAAR;AAFb,CATY,EAaZ;AACIH,EAAAA,KAAK,EAAEH,CAAF,+EADT;AAEII,EAAAA,OAAO,EAAE;AAAEE,IAAAA,IAAI,EAAE;AAAR;AAFb,CAbY,CAAhB;;AAmBA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AACzB,kBAA4BpC,QAAQ,CAAC,EAAD,CAApC;AAAA;AAAA,MAAOqC,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAAwBtC,QAAQ,CAAC4B,gBAAgB,CAACG,OAAO,CAAC,CAAD,CAAP,CAAWE,OAAZ,CAAjB,CAAhC;AAAA;AAAA,MAAOM,IAAP;AAAA,MAAaC,OAAb;;AACA,mBAA8B3B,SAAS,EAAvC;AAAA,MAAQ4B,OAAR,cAAQA,OAAR;AAAA,MAAiBC,QAAjB,cAAiBA,QAAjB;;AACA,qBAAyB5B,WAAW,EAApC;AAAA,MAAQ6B,YAAR,gBAAQA,YAAR;;AACA,8BAA6B1B,qBAAqB,CAAC;AAC/C2B,IAAAA,UAAU,EAAE;AADmC,GAAD,CAAlD;AAAA,MAAQC,gBAAR,yBAAQA,gBAAR;;AAIA,kBAAqD9B,QAAQ,CAACG,WAAD,CAA7D;AAAA,MAAc4B,YAAd,aAAQC,IAAR;AAAA,MAAqCC,WAArC,aAA4BC,OAA5B;;AAEA,qBAA+CjC,WAAW,CAACG,YAAD,EAAe;AACrE+B,IAAAA,cAAc,EAAE,CAAC;AAAEC,MAAAA,KAAK,EAAEjC;AAAT,KAAD;AADqD,GAAf,CAA1D;AAAA;AAAA,MAAOkC,QAAP;AAAA,MAA4BC,aAA5B,oBAAmBJ,OAAnB;;AAIA,MAAMF,IAAI,GAAGC,WAAW,IAAI,CAACF,YAAhB,GAA+B,EAA/B,GAAoCA,YAAY,CAACQ,QAAb,CAAsBC,MAAtB,CAA6BR,IAA9E;AACA,MAAMS,EAAE,GAAG,IAAIC,eAAJ,CAAoBf,QAAQ,CAACgB,MAA7B,EAAqCC,GAArC,CAAyC,IAAzC,CAAX;AAEA,MAAMC,WAAW,GAAG9D,WAAW,CAC3B,gBAAiC;AAAA,QAA9BqC,IAA8B,QAA9BA,IAA8B;AAAA,QAAxB0B,IAAwB,QAAxBA,IAAwB;AAAA,QAAlBC,WAAkB,QAAlBA,WAAkB;AAC7B,WACI3B,IAAI,CAAC4B,WAAL,GAAmBC,QAAnB,CAA4B3B,MAA5B,KACAwB,IAAI,CAACE,WAAL,GAAmBC,QAAnB,CAA4B3B,MAA5B,CADA,IAECyB,WAAW,IAAIA,WAAW,CAACC,WAAZ,GAA0BC,QAA1B,CAAmC3B,MAAnC,CAHpB;AAKH,GAP0B,EAQ3B,CAACA,MAAD,CAR2B,CAA/B;AAWA,MAAM4B,UAAU,GAAGnE,WAAW,CAC1B,UAAAyD,MAAM,EAAI;AACN,QAAI,CAAChB,IAAL,EAAW;AACP,aAAOgB,MAAP;AACH;;AACD,0BAAuBW,MAAM,CAACC,OAAP,CAAexC,kBAAkB,CAACY,IAAD,CAAjC,CAAvB;AAAA;AAAA;AAAA,QAAQ6B,GAAR;AAAA,QAAaC,KAAb;;AACA,WAAOpE,OAAO,CAACsD,MAAD,EAAS,CAACa,GAAD,CAAT,EAAgB,CAACC,KAAD,CAAhB,CAAd;AACH,GAPyB,EAQ1B,CAAC9B,IAAD,CAR0B,CAA9B;AAWA,MAAM+B,UAAU,GAAGxE,WAAW,CAC1B,UAAAyE,IAAI,EAAI;AACJ1B,IAAAA,gBAAgB,wEAAC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACUO,QAAQ,CAAC;AAC5BoB,gBAAAA,SAAS,EAAED;AADiB,eAAD,CADlB;;AAAA;AAAA;AACLxB,cAAAA,IADK,mBACLA,IADK;AAKL0B,cAAAA,KALK,GAKK1B,IAAI,CAACO,QAAL,CAAcoB,WALnB,CAKLD,KALK;;AAAA,mBAMTA,KANS;AAAA;AAAA;AAAA;;AAAA,+CAOF9B,YAAY,CAAC8B,KAAK,CAACE,OAAP,CAPV;;AAAA;AAUbhC,cAAAA,YAAY,CAACd,CAAC,gGAAD,CAA2B;AAAEgC,gBAAAA,IAAI,EAAEU,IAAI,CAACV;AAAb,eAA3B,CAAD,CAAZ;;AAEA,kBAAIL,EAAE,KAAKe,IAAI,CAACf,EAAhB,EAAoB;AAChBf,gBAAAA,OAAO,CAACmC,IAAR;AACH;;AAdY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAD,GAAhB;AAgBH,GAlByB,EAmB1B,CAACpB,EAAD,CAnB0B,CAA9B;AAsBA,MAAMqB,0BAA0B,GAAG9E,OAAO,CACtC;AAAA,wBACI,oBAAC,oBAAD,qBACI,oBAAC,IAAD,qBACI,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAE;AAAZ,oBACI,oBAAC,MAAD;AAAQ,MAAA,KAAK,EAAEwC,IAAf;AAAqB,MAAA,QAAQ,EAAEC,OAA/B;AAAwC,MAAA,KAAK,EAAEX,CAAF;AAA7C,OACKE,OAAO,CAAC+C,GAAR,CAAY,iBAAwB;AAAA,UAArB9C,KAAqB,SAArBA,KAAqB;AAAA,UAAdC,OAAc,SAAdA,OAAc;AACjC,0BACI;AAAQ,QAAA,GAAG,EAAED,KAAb;AAAoB,QAAA,KAAK,EAAEJ,gBAAgB,CAACK,OAAD;AAA3C,SACKD,KADL,CADJ;AAKH,KANA,CADL,CADJ,CADJ,CADJ,CADJ;AAAA,GADsC,EAkBtC,CAACO,IAAD,CAlBsC,CAA1C;AAqBA,MAAMwC,YAAY,GAAG1C,MAAM,KAAK,EAAX,GAAgBU,IAAhB,GAAuBA,IAAI,CAACV,MAAL,CAAYuB,WAAZ,CAA5C;AACA,MAAMoB,SAAS,GAAGf,UAAU,CAACc,YAAD,CAA5B;AAEA,sBACI,oBAAC,QAAD;AACI,IAAA,KAAK,EAAElD,CAAF,6EADT;AAEI,IAAA,OAAO,eACH,oBAAC,eAAD;AACI,qBAAY,mBADhB;AAEI,MAAA,OAAO,EAAE;AAAA,eAAMY,OAAO,CAACmC,IAAR,CAAa,oCAAb,CAAN;AAAA;AAFb,oBAII,oBAAC,UAAD;AAAY,MAAA,IAAI,eAAE,oBAAC,OAAD;AAAlB,MAJJ,OAIuC/C,CAJvC,iFAHR;AAUI,IAAA,IAAI,EAAEmD,SAVV;AAWI,IAAA,OAAO,EAAEhC,WAAW,IAAIK,aAX5B;AAYI,IAAA,MAAM,eACF,oBAAC,QAAD;AAAU,MAAA,KAAK,EAAEhB,MAAjB;AAAyB,MAAA,QAAQ,EAAEC,SAAnC;AAA8C,MAAA,gBAAgB,EAAET,CAAF;AAA9D,MAbR;AAeI,IAAA,YAAY,EAAEgD,0BAflB;AAgBI,IAAA,kBAAkB,eACd,oBAAC,0BAAD;AACI,MAAA,IAAI,eAAE,oBAAC,UAAD,OADV;AAEI,qBAAa;AAFjB;AAjBR,KAuBK;AAAA,QAAG9B,IAAH,SAAGA,IAAH;AAAA,wBACG,oBAAC,UAAD;AAAY,qBAAY;AAAxB,OACKA,IAAI,CAAC+B,GAAL,CAAS,UAAAP,IAAI;AAAA,0BACV,oBAAC,QAAD;AAAU,QAAA,GAAG,EAAEA,IAAI,CAACf,EAApB;AAAwB,QAAA,QAAQ,EAAEe,IAAI,CAACf,EAAL,KAAYA;AAA9C,sBACI,oBAAC,YAAD;AACI,QAAA,OAAO,EAAE;AAAA,iBACLf,OAAO,CAACmC,IAAR,wCAA6CL,IAAI,CAACf,EAAlD,EADK;AAAA;AADb,SAKKe,IAAI,CAACpC,IALV,eAMI,oBAAC,qBAAD,QAAwBoC,IAAI,CAACT,WAA7B,CANJ,CADJ,eAUI,oBAAC,YAAD,qBACI,oBAAC,WAAD,QACKS,IAAI,CAACV,IAAL,KAAc,aAAd,gBACG,oBAAC,UAAD;AACI,QAAA,OAAO,EAAE;AAAA,iBAAMS,UAAU,CAACC,IAAD,CAAhB;AAAA,SADb;AAEI,uBAAa;AAFjB,QADH,gBAMG,oBAAC,OAAD;AACI,QAAA,SAAS,EAAE,QADf;AAEI,QAAA,OAAO,eAAE,kCAAO1C,CAAP;AAFb,sBAII,oBAAC,UAAD;AAAY,QAAA,QAAQ;AAApB,QAJJ,CAPR,CADJ,CAVJ,CADU;AAAA,KAAb,CADL,CADH;AAAA,GAvBL,CADJ;AA4DH,CAlJD;;AAoJA,eAAeO,cAAf","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, serializeSorters } from \"../utils\";\n\nconst t = i18n.ns(\"app-security/admin/groups/data-list\");\n\nconst SORTERS = [\n {\n label: t`Newest to oldest`,\n sorters: { createdOn: \"desc\" }\n },\n {\n label: t`Oldest to newest`,\n sorters: { createdOn: \"asc\" }\n },\n {\n label: t`Name A-Z`,\n sorters: { name: \"asc\" }\n },\n {\n label: t`Name Z-A`,\n sorters: { name: \"desc\" }\n }\n];\n\nconst GroupsDataList = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState(serializeSorters(SORTERS[0].sorters));\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, value]] = Object.entries(deserializeSorters(sort));\n return orderBy(groups, [key], [value]);\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, sorters }) => {\n return (\n <option key={label} value={serializeSorters(sorters)}>\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 }) => (\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.slug !== \"full-access\" ? (\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\nexport default GroupsDataList;\n"],"file":"GroupsDataList.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/Groups/GroupsForm.tsx"],"names":["React","useCallback","useMutation","useQuery","styled","pick","get","useRouter","i18n","Form","Grid","Cell","Input","Alert","ButtonDefault","ButtonIcon","ButtonPrimary","CircularProgress","validation","SimpleForm","SimpleFormFooter","SimpleFormContent","SimpleFormHeader","Typography","Permissions","useSnackbar","CREATE_GROUP","LIST_GROUPS","READ_GROUP","UPDATE_GROUP","SnackbarAction","isEmpty","EmptyView","t","ns","ButtonWrapper","display","justifyContent","GroupForm","location","history","showSnackbar","newGroup","URLSearchParams","search","id","getQuery","variables","skip","onCompleted","data","error","security","group","push","message","refetchQueries","query","create","createMutation","update","updateMutation","loading","find","item","onSubmit","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","operation","args","response","systemGroup","slug","showEmptyView","form","Bind","name","Boolean","bind","submit"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport styled from \"@emotion/styled\";\nimport pick from \"lodash/pick\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Permissions } from \"@webiny/app-admin/components/Permissions\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CREATE_GROUP, LIST_GROUPS, READ_GROUP, UPDATE_GROUP } from \"./graphql\";\nimport { SnackbarAction } from \"@webiny/ui/Snackbar\";\nimport isEmpty from \"lodash/isEmpty\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\n\nconst t = i18n.ns(\"app-security/admin/groups/form\");\n\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\nconst GroupForm = () => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const newGroup = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery(READ_GROUP, {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.security.group;\n if (error) {\n history.push(\"/access-management/groups\");\n showSnackbar(error.message);\n }\n }\n });\n\n const [create, createMutation] = useMutation(CREATE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const [update, updateMutation] = useMutation(UPDATE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const onSubmit = useCallback(\n async data => {\n if (!data.permissions || !data.permissions.length) {\n showSnackbar(t`You must configure permissions before saving!`, {\n timeout: 60000,\n dismissesOnAction: true,\n action: <SnackbarAction label={\"OK\"} />\n });\n return;\n }\n\n const isUpdate = data.createdOn;\n const [operation, args] = isUpdate\n ? [\n update,\n {\n variables: {\n id: data.id,\n data: pick(data, [\"name\", \"description\", \"permissions\"])\n }\n }\n ]\n : [\n create,\n {\n variables: {\n data: pick(data, [\"name\", \"slug\", \"description\", \"permissions\"])\n }\n }\n ];\n\n const response = await operation(args);\n\n const { data: group, error } = response.data.security.group;\n if (error) {\n return showSnackbar(error.message);\n }\n\n !isUpdate && history.push(`/access-management/groups?id=${group.id}`);\n showSnackbar(t`Group saved successfully!`);\n },\n [id]\n );\n\n const data = loading ? {} : get(getQuery, \"data.security.group.data\", {});\n\n const systemGroup = data.slug === \"full-access\";\n\n const showEmptyView = !newGroup && !loading && isEmpty(data);\n // Render \"No content\" selected view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display group details or create a...`}\n action={\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`New Group`}\n </ButtonDefault>\n }\n />\n );\n }\n\n return (\n <Form data={data} onSubmit={onSubmit}>\n {({ data, form, Bind }) => {\n return (\n <SimpleForm>\n {loading && <CircularProgress />}\n <SimpleFormHeader title={data.name ? data.name : \"Untitled\"} />\n <SimpleFormContent>\n <Grid>\n <Cell span={6}>\n <Bind\n name=\"name\"\n validators={validation.create(\"required,minLength:3\")}\n >\n <Input label={t`Name`} disabled={systemGroup} />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name=\"slug\"\n validators={validation.create(\"required,minLength:3\")}\n >\n <Input disabled={Boolean(data.id)} label={t`Slug`} />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"description\"\n validators={validation.create(\"maxLength:500\")}\n >\n <Input\n label={t`Description`}\n rows={3}\n disabled={systemGroup}\n />\n </Bind>\n </Cell>\n </Grid>\n {systemGroup && (\n <Grid>\n <Cell span={12}>\n <Alert type={\"info\"} title={\"Permissions are locked\"}>\n This is a protected system group and you can&apos;t\n modify its permissions.\n </Alert>\n </Cell>\n </Grid>\n )}\n {!systemGroup && (\n <Grid>\n <Cell span={12}>\n <Typography use={\"subtitle1\"}>{t`Permissions`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"permissions\"} defaultValue={[]}>\n {bind => (\n <Permissions id={data.id || \"new\"} {...bind} />\n )}\n </Bind>\n </Cell>\n </Grid>\n )}\n </SimpleFormContent>\n {systemGroup ? null : (\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/access-management/groups\")}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={form.submit}\n >{t`Save group`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n )}\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n\nexport default GroupForm;\n"],"file":"GroupsForm.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/Groups/graphql.ts"],"names":["gql","fields","LIST_GROUPS","READ_GROUP","CREATE_GROUP","UPDATE_GROUP","DELETE_GROUP"],"mappings":";;;;AAAA,OAAOA,GAAP,MAAgB,aAAhB;AAEA,IAAMC,MAAM,oFAAZ;AASA,OAAO,IAAMC,WAAgB,GAAGF,GAAH,6WAAtB;AAgBP,OAAO,IAAMG,UAAe,GAAGH,GAAH,yXAKNC,MALM,CAArB;AAgBP,OAAO,IAAMG,YAAiB,GAAGJ,GAAH,6aAKRC,MALQ,CAAvB;AAiBP,OAAO,IAAMI,YAAiB,GAAGL,GAAH,gcAKRC,MALQ,CAAvB;AAiBP,OAAO,IAAMK,YAAiB,GAAGN,GAAH,iUAAvB","sourcesContent":["import gql from \"graphql-tag\";\n\nconst fields = `\n id\n name\n slug\n description\n permissions\n createdOn\n`;\n\nexport const LIST_GROUPS: any = gql`\n query listGroups {\n security {\n groups: listGroups {\n data {\n id\n slug\n name\n description\n createdOn\n }\n }\n }\n }\n`;\n\nexport const READ_GROUP: any = gql`\n query getGroup($id: ID!) {\n security {\n group: getGroup(where: { id: $id }){\n data {\n ${fields}\n }\n error {\n code\n message\n }\n }\n }\n }\n`;\n\nexport const CREATE_GROUP: any = gql`\n mutation createGroup($data: SecurityGroupCreateInput!){\n security {\n group: createGroup(data: $data) {\n data {\n ${fields}\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport const UPDATE_GROUP: any = gql`\n mutation updateGroup($id: ID!, $data: SecurityGroupUpdateInput!){\n security {\n group: updateGroup(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_GROUP: any = gql`\n mutation deleteGroup($id: ID!) {\n security {\n deleteGroup(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n`;\n"],"file":"graphql.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ui/views/Groups/index.ts"],"names":["default","Groups"],"mappings":"AAAA,SAASA,OAAO,IAAIC,MAApB","sourcesContent":["export { default as Groups } from \"./Groups\";\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/views/utils.ts"],"names":["serializeSorters","data","Object","entries","key","value","deserializeSorters","split"],"mappings":";;AAAA,OAAO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAAC,IAAI,EAAI;AACpC,MAAI,CAACA,IAAL,EAAW;AACP,WAAOA,IAAP;AACH;;AACD,wBAAuBC,MAAM,CAACC,OAAP,CAAeF,IAAf,CAAvB;AAAA;AAAA;AAAA,MAAQG,GAAR;AAAA,MAAaC,KAAb;;AACA,mBAAUD,GAAV,cAAiBC,KAAjB;AACH,CANM;AAQP,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACL,IAAD,EAA4D;AAC1F,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,WAAOA,IAAP;AACH;;AAED,aAAqBA,IAAI,CAACM,KAAL,CAAW,GAAX,CAArB;AAAA;AAAA,MAAOH,GAAP;AAAA,MAAYC,KAAZ;;AACA,6BAAUD,GAAV,EAAgBC,KAAhB;AACH,CAPM","sourcesContent":["export const serializeSorters = data => {\n if (!data) {\n return data;\n }\n const [[key, value]] = Object.entries(data);\n return `${key}:${value}`;\n};\n\nexport const deserializeSorters = (data: string): Record<string, \"asc\" | \"desc\" | boolean> => {\n if (typeof data !== \"string\") {\n return data;\n }\n\n const [key, value] = data.split(\":\") as [string, \"asc\" | \"desc\" | boolean];\n return { [key]: value };\n};\n"],"file":"utils.js"}