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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/components/GroupAutocomplete/graphql.js +0 -5
  3. package/components/GroupAutocomplete/graphql.js.map +1 -1
  4. package/components/GroupAutocomplete/index.js +2 -10
  5. package/components/GroupAutocomplete/index.js.map +1 -1
  6. package/components/NotAuthorizedError/NotAuthorizedError.js +0 -12
  7. package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
  8. package/components/NotAuthorizedError/index.js +0 -1
  9. package/components/NotAuthorizedError/index.js.map +1 -1
  10. package/index.js +0 -15
  11. package/index.js.map +1 -1
  12. package/package.json +13 -13
  13. package/plugins/constants.js +0 -1
  14. package/plugins/constants.js.map +1 -1
  15. package/plugins/index.js +0 -6
  16. package/plugins/index.js.map +1 -1
  17. package/plugins/installation.js +19 -44
  18. package/plugins/installation.js.map +1 -1
  19. package/plugins/permissionRenderer/SecurityPermissions.js +2 -34
  20. package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
  21. package/plugins/permissionRenderer/index.js +0 -12
  22. package/plugins/permissionRenderer/index.js.map +1 -1
  23. package/plugins/routes.js +0 -10
  24. package/plugins/routes.js.map +1 -1
  25. package/plugins/secureRouteError.js +0 -4
  26. package/plugins/secureRouteError.js.map +1 -1
  27. package/ui/elements/GroupAutocompleteElement.js +1 -16
  28. package/ui/elements/GroupAutocompleteElement.js.map +1 -1
  29. package/ui/views/ApiKeys/ApiKeyForm.js +62 -115
  30. package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
  31. package/ui/views/ApiKeys/ApiKeys.js +3 -10
  32. package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
  33. package/ui/views/ApiKeys/ApiKeysDataList.js +51 -98
  34. package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
  35. package/ui/views/ApiKeys/graphql.js +0 -5
  36. package/ui/views/ApiKeys/graphql.js.map +1 -1
  37. package/ui/views/ApiKeys/index.js +0 -2
  38. package/ui/views/ApiKeys/index.js.map +1 -1
  39. package/ui/views/ApiKeys/utils.js +0 -5
  40. package/ui/views/ApiKeys/utils.js.map +1 -1
  41. package/ui/views/Groups/Groups.js +3 -10
  42. package/ui/views/Groups/Groups.js.map +1 -1
  43. package/ui/views/Groups/GroupsDataList.js +52 -99
  44. package/ui/views/Groups/GroupsDataList.js.map +1 -1
  45. package/ui/views/Groups/GroupsForm.js +61 -114
  46. package/ui/views/Groups/GroupsForm.js.map +1 -1
  47. package/ui/views/Groups/graphql.js +0 -5
  48. package/ui/views/Groups/graphql.js.map +1 -1
  49. package/ui/views/Groups/index.js +0 -2
  50. package/ui/views/Groups/index.js.map +1 -1
  51. package/ui/views/utils.js +3 -9
  52. package/ui/views/utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","SECURITY","SECURITY_FULL_ACCESS","SECURITY_GROUP_ACCESS","SECURITY_API_KEY_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","SecurityPermissions","value","onChange","onFormChange","useCallback","data","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","groupAccessScope","apiKeyAccessScope","length","formData","useMemo","hasFullAccess","find","hasGroupAccess","hasApiKeyAccess","Bind","gridNoPaddingClass","marginTop"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nconst SECURITY = \"security\";\nconst SECURITY_FULL_ACCESS = `${SECURITY}.*`;\nconst SECURITY_GROUP_ACCESS = `${SECURITY}.group`;\nconst SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface SecurityPermissionsProps {\n value: SecurityPermission[];\n onChange: (value: SecurityPermission[]) => void;\n}\nexport const SecurityPermissions: React.FC<SecurityPermissionsProps> = ({ value, onChange }) => {\n const onFormChange = useCallback(\n data => {\n let newValue: SecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(SECURITY));\n }\n\n const permissions = [];\n if (data.accessLevel === FULL_ACCESS) {\n permissions.push({ name: SECURITY_FULL_ACCESS });\n } else if (data.accessLevel === CUSTOM_ACCESS) {\n if (data.groupAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_GROUP_ACCESS });\n }\n\n if (data.apiKeyAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_API_KEY_ACCESS });\n }\n }\n\n if (permissions && permissions.length) {\n newValue.push(...permissions);\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === SECURITY_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(SECURITY));\n if (permissions.length === 0) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data = {\n accessLevel: CUSTOM_ACCESS,\n groupAccessScope: NO_ACCESS,\n apiKeyAccessScope: NO_ACCESS\n };\n\n const hasGroupAccess = permissions.find(item => item.name === SECURITY_GROUP_ACCESS);\n if (hasGroupAccess) {\n data.groupAccessScope = FULL_ACCESS;\n }\n\n const hasApiKeyAccess = permissions.find(item => item.name === SECURITY_API_KEY_ACCESS);\n if (hasApiKeyAccess) {\n data.apiKeyAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => {\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <React.Fragment>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`API Keys`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"apiKeyAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Groups`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"groupAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n </React.Fragment>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","SECURITY","SECURITY_FULL_ACCESS","SECURITY_GROUP_ACCESS","SECURITY_API_KEY_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","SecurityPermissions","value","onChange","onFormChange","useCallback","data","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","groupAccessScope","apiKeyAccessScope","length","formData","useMemo","hasFullAccess","find","hasGroupAccess","hasApiKeyAccess","Bind","gridNoPaddingClass","marginTop"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nconst SECURITY = \"security\";\nconst SECURITY_FULL_ACCESS = `${SECURITY}.*`;\nconst SECURITY_GROUP_ACCESS = `${SECURITY}.group`;\nconst SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface SecurityPermissionsProps {\n value: SecurityPermission[];\n onChange: (value: SecurityPermission[]) => void;\n}\nexport const SecurityPermissions: React.FC<SecurityPermissionsProps> = ({ value, onChange }) => {\n const onFormChange = useCallback(\n data => {\n let newValue: SecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(SECURITY));\n }\n\n const permissions = [];\n if (data.accessLevel === FULL_ACCESS) {\n permissions.push({ name: SECURITY_FULL_ACCESS });\n } else if (data.accessLevel === CUSTOM_ACCESS) {\n if (data.groupAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_GROUP_ACCESS });\n }\n\n if (data.apiKeyAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_API_KEY_ACCESS });\n }\n }\n\n if (permissions && permissions.length) {\n newValue.push(...permissions);\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === SECURITY_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(SECURITY));\n if (permissions.length === 0) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data = {\n accessLevel: CUSTOM_ACCESS,\n groupAccessScope: NO_ACCESS,\n apiKeyAccessScope: NO_ACCESS\n };\n\n const hasGroupAccess = permissions.find(item => item.name === SECURITY_GROUP_ACCESS);\n if (hasGroupAccess) {\n data.groupAccessScope = FULL_ACCESS;\n }\n\n const hasApiKeyAccess = permissions.find(item => item.name === SECURITY_API_KEY_ACCESS);\n if (hasApiKeyAccess) {\n data.apiKeyAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => {\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <React.Fragment>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`API Keys`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"apiKeyAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Groups`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"groupAccessScope\"}>\n <Select label={t`Access Scope`}>\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n </Elevation>\n </React.Fragment>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
@@ -1,30 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
-
12
9
  var _react = _interopRequireDefault(require("react"));
13
-
14
10
  var _i18n = require("@webiny/app/i18n");
15
-
16
11
  var _Accordion = require("@webiny/ui/Accordion");
17
-
18
12
  var _baselineSecurity24px = require("@webiny/app-admin/assets/icons/baseline-security-24px.svg");
19
-
20
13
  var _SecurityPermissions = require("./SecurityPermissions");
21
-
22
14
  var _PermissionRendererPlugin = require("@webiny/app-admin/plugins/PermissionRendererPlugin");
23
-
24
15
  var _templateObject, _templateObject2;
25
-
26
16
  var t = _i18n.i18n.ns("app-security-admin-users/plugins/permissionRenderer");
27
-
28
17
  var _default = new _PermissionRendererPlugin.PermissionRendererPlugin({
29
18
  render: function render(props) {
30
19
  return /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
@@ -35,5 +24,4 @@ var _default = new _PermissionRendererPlugin.PermissionRendererPlugin({
35
24
  }, /*#__PURE__*/_react.default.createElement(_SecurityPermissions.SecurityPermissions, props));
36
25
  }
37
26
  });
38
-
39
27
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","PermissionRendererPlugin","render","props"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as SecurityIcon } from \"@webiny/app-admin/assets/icons/baseline-security-24px.svg\";\nimport { SecurityPermissions } from \"./SecurityPermissions\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nexport default new PermissionRendererPlugin({\n render(props) {\n return (\n <AccordionItem\n icon={<SecurityIcon />}\n title={t`Security`}\n description={t`Manage Security app access permissions.`}\n data-testid={\"permission.security\"}\n >\n <SecurityPermissions {...props} />\n </AccordionItem>\n );\n }\n});\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,qDAAR,CAAV;;eAEe,IAAIC,kDAAJ,CAA6B;EACxCC,MADwC,kBACjCC,KADiC,EAC1B;IACV,oBACI,6BAAC,wBAAD;MACI,IAAI,eAAE,6BAAC,oCAAD,OADV;MAEI,KAAK,EAAEL,CAAF,2FAFT;MAGI,WAAW,EAAEA,CAAF,4HAHf;MAII,eAAa;IAJjB,gBAMI,6BAAC,wCAAD,EAAyBK,KAAzB,CANJ,CADJ;EAUH;AAZuC,CAA7B,C"}
1
+ {"version":3,"names":["t","i18n","ns","PermissionRendererPlugin","render","props"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as SecurityIcon } from \"@webiny/app-admin/assets/icons/baseline-security-24px.svg\";\nimport { SecurityPermissions } from \"./SecurityPermissions\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nexport default new PermissionRendererPlugin({\n render(props) {\n return (\n <AccordionItem\n icon={<SecurityIcon />}\n title={t`Security`}\n description={t`Manage Security app access permissions.`}\n data-testid={\"permission.security\"}\n >\n <SecurityPermissions {...props} />\n </AccordionItem>\n );\n }\n});\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAA8F;AAE9F,IAAMA,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,qDAAqD,CAAC;AAAC,eAE1D,IAAIC,kDAAwB,CAAC;EACxCC,MAAM,kBAACC,KAAK,EAAE;IACV,oBACI,6BAAC,wBAAa;MACV,IAAI,eAAE,6BAAC,oCAAY,OAAI;MACvB,KAAK,EAAEL,CAAC,2FAAW;MACnB,WAAW,EAAEA,CAAC,4HAA0C;MACxD,eAAa;IAAsB,gBAEnC,6BAAC,wCAAmB,EAAKK,KAAK,CAAI,CACtB;EAExB;AACJ,CAAC,CAAC;AAAA"}
package/plugins/routes.js CHANGED
@@ -1,28 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _reactHelmet = _interopRequireDefault(require("react-helmet"));
13
-
14
10
  var _reactRouter = require("@webiny/react-router");
15
-
16
11
  var _AdminLayout = require("@webiny/app-admin/components/AdminLayout");
17
-
18
12
  var _components = require("@webiny/app-security/components");
19
-
20
13
  var _Groups = require("../ui/views/Groups");
21
-
22
14
  var _ApiKeys = require("../ui/views/ApiKeys");
23
-
24
15
  var _constants = require("./constants");
25
-
26
16
  var plugins = [{
27
17
  name: "route-security-groups",
28
18
  type: "route",
@@ -1 +1 @@
1
- {"version":3,"names":["plugins","name","type","route","Permission","Groups","ApiKeys"],"sources":["routes.tsx"],"sourcesContent":["import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport { Route } from \"@webiny/react-router\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport { SecureRoute } from \"@webiny/app-security/components\";\nimport { RoutePlugin } from \"@webiny/app/types\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport { Permission } from \"./constants\";\n\nconst plugins: RoutePlugin[] = [\n {\n name: \"route-security-groups\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/groups\"}\n render={() => (\n <SecureRoute permission={Permission.Groups}>\n <AdminLayout>\n <Helmet title={\"Access Management - Groups\"} />\n <Groups />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n },\n {\n name: \"route-security-api-keys\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/api-keys\"}\n render={() => (\n <SecureRoute permission={Permission.ApiKeys}>\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n }\n];\n\nexport default plugins;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA,IAAMA,OAAsB,GAAG,CAC3B;EACIC,IAAI,EAAE,uBADV;EAEIC,IAAI,EAAE,OAFV;EAGIC,KAAK,eACD,6BAAC,kBAAD;IACI,KAAK,MADT;IAEI,IAAI,EAAE,2BAFV;IAGI,MAAM,EAAE;MAAA,oBACJ,6BAAC,uBAAD;QAAa,UAAU,EAAEC,qBAAA,CAAWC;MAApC,gBACI,6BAAC,wBAAD,qBACI,6BAAC,oBAAD;QAAQ,KAAK,EAAE;MAAf,EADJ,eAEI,6BAAC,cAAD,OAFJ,CADJ,CADI;IAAA;EAHZ;AAJR,CAD2B,EAmB3B;EACIJ,IAAI,EAAE,yBADV;EAEIC,IAAI,EAAE,OAFV;EAGIC,KAAK,eACD,6BAAC,kBAAD;IACI,KAAK,MADT;IAEI,IAAI,EAAE,6BAFV;IAGI,MAAM,EAAE;MAAA,oBACJ,6BAAC,uBAAD;QAAa,UAAU,EAAEC,qBAAA,CAAWE;MAApC,gBACI,6BAAC,wBAAD;QAAa,KAAK,EAAE;MAApB,gBACI,6BAAC,gBAAD,OADJ,CADJ,CADI;IAAA;EAHZ;AAJR,CAnB2B,CAA/B;eAsCeN,O"}
1
+ {"version":3,"names":["plugins","name","type","route","Permission","Groups","ApiKeys"],"sources":["routes.tsx"],"sourcesContent":["import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport { Route } from \"@webiny/react-router\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport { SecureRoute } from \"@webiny/app-security/components\";\nimport { RoutePlugin } from \"@webiny/app/types\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport { Permission } from \"./constants\";\n\nconst plugins: RoutePlugin[] = [\n {\n name: \"route-security-groups\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/groups\"}\n render={() => (\n <SecureRoute permission={Permission.Groups}>\n <AdminLayout>\n <Helmet title={\"Access Management - Groups\"} />\n <Groups />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n },\n {\n name: \"route-security-api-keys\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/api-keys\"}\n render={() => (\n <SecureRoute permission={Permission.ApiKeys}>\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n }\n];\n\nexport default plugins;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAMA,OAAsB,GAAG,CAC3B;EACIC,IAAI,EAAE,uBAAuB;EAC7BC,IAAI,EAAE,OAAO;EACbC,KAAK,eACD,6BAAC,kBAAK;IACF,KAAK;IACL,IAAI,EAAE,2BAA4B;IAClC,MAAM,EAAE;MAAA,oBACJ,6BAAC,uBAAW;QAAC,UAAU,EAAEC,qBAAU,CAACC;MAAO,gBACvC,6BAAC,wBAAW,qBACR,6BAAC,oBAAM;QAAC,KAAK,EAAE;MAA6B,EAAG,eAC/C,6BAAC,cAAM,OAAG,CACA,CACJ;IAAA;EAChB;AAGd,CAAC,EACD;EACIJ,IAAI,EAAE,yBAAyB;EAC/BC,IAAI,EAAE,OAAO;EACbC,KAAK,eACD,6BAAC,kBAAK;IACF,KAAK;IACL,IAAI,EAAE,6BAA8B;IACpC,MAAM,EAAE;MAAA,oBACJ,6BAAC,uBAAW;QAAC,UAAU,EAAEC,qBAAU,CAACE;MAAQ,gBACxC,6BAAC,wBAAW;QAAC,KAAK,EAAE;MAA+B,gBAC/C,6BAAC,gBAAO,OAAG,CACD,CACJ;IAAA;EAChB;AAGd,CAAC,CACJ;AAAC,eAEaN,OAAO;AAAA"}
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var React = _interopRequireWildcard(require("react"));
11
-
12
9
  var _NotAuthorizedError = require("../components/NotAuthorizedError");
13
-
14
10
  var plugin = {
15
11
  type: "secure-route-error",
16
12
  name: "secure-route-error",
@@ -1 +1 @@
1
- {"version":3,"names":["plugin","type","name","render"],"sources":["secureRouteError.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { NotAuthorizedError } from \"~/components/NotAuthorizedError\";\n\ntype SecureRouteErrorPlugin = Plugin & { render: () => React.ReactNode };\n\nconst plugin: SecureRouteErrorPlugin = {\n type: \"secure-route-error\",\n name: \"secure-route-error\",\n render(): React.ReactElement {\n return <NotAuthorizedError />;\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;AAAA;;AAEA;;AAIA,IAAMA,MAA8B,GAAG;EACnCC,IAAI,EAAE,oBAD6B;EAEnCC,IAAI,EAAE,oBAF6B;EAGnCC,MAHmC,oBAGN;IACzB,oBAAO,oBAAC,sCAAD,OAAP;EACH;AALkC,CAAvC;eAQeH,M"}
1
+ {"version":3,"names":["plugin","type","name","render"],"sources":["secureRouteError.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { NotAuthorizedError } from \"~/components/NotAuthorizedError\";\n\ntype SecureRouteErrorPlugin = Plugin & { render: () => React.ReactNode };\n\nconst plugin: SecureRouteErrorPlugin = {\n type: \"secure-route-error\",\n name: \"secure-route-error\",\n render(): React.ReactElement {\n return <NotAuthorizedError />;\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;AAAA;AAEA;AAIA,IAAMA,MAA8B,GAAG;EACnCC,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAE,oBAAoB;EAC1BC,MAAM,oBAAuB;IACzB,oBAAO,oBAAC,sCAAkB,OAAG;EACjC;AACJ,CAAC;AAAC,eAEaH,MAAM;AAAA"}
@@ -1,53 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.GroupAutocompleteElement = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
-
16
11
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
17
-
18
12
  var _react = _interopRequireDefault(require("react"));
19
-
20
13
  var _InputElement2 = require("@webiny/app-admin/ui/elements/form/InputElement");
21
-
22
14
  var _GroupAutocomplete = require("../../components/GroupAutocomplete");
23
-
24
15
  var GroupAutocompleteElement = /*#__PURE__*/function (_InputElement) {
25
16
  (0, _inherits2.default)(GroupAutocompleteElement, _InputElement);
26
-
27
17
  var _super = (0, _createSuper2.default)(GroupAutocompleteElement);
28
-
29
18
  function GroupAutocompleteElement() {
30
19
  (0, _classCallCheck2.default)(this, GroupAutocompleteElement);
31
20
  return _super.apply(this, arguments);
32
21
  }
33
-
34
22
  (0, _createClass2.default)(GroupAutocompleteElement, [{
35
23
  key: "render",
36
24
  value: function render(props) {
37
25
  var formProps = props.formProps;
38
26
  var _ref = formProps,
39
- Bind = _ref.Bind;
27
+ Bind = _ref.Bind;
40
28
  var validators = this.config.validators;
41
29
  /**
42
30
  * TODO @ts-refactor @bruno
43
31
  * Figure out what can validators be.
44
32
  */
45
-
46
33
  if (validators && typeof validators !== "function") {
47
34
  console.log("packages/app-security-access-management/src/ui/elements/GroupAutocompleteElement.tsx validators is set but not a function.");
48
35
  console.log(validators);
49
36
  }
50
-
51
37
  return /*#__PURE__*/_react.default.createElement(Bind, {
52
38
  name: this.id,
53
39
  validators: typeof validators === "function" ? validators({
@@ -60,5 +46,4 @@ var GroupAutocompleteElement = /*#__PURE__*/function (_InputElement) {
60
46
  }]);
61
47
  return GroupAutocompleteElement;
62
48
  }(_InputElement2.InputElement);
63
-
64
49
  exports.GroupAutocompleteElement = GroupAutocompleteElement;
@@ -1 +1 @@
1
- {"version":3,"names":["GroupAutocompleteElement","props","formProps","Bind","validators","config","console","log","id","InputElement"],"sources":["GroupAutocompleteElement.tsx"],"sourcesContent":["import React from \"react\";\nimport { FormRenderPropParams } from \"@webiny/form\";\nimport { InputElement } from \"@webiny/app-admin/ui/elements/form/InputElement\";\nimport { GroupAutocomplete } from \"~/components/GroupAutocomplete\";\nimport { FormFieldElementRenderProps } from \"@webiny/app-admin/ui/elements/form/FormFieldElement\";\n\nexport class GroupAutocompleteElement extends InputElement {\n public override render(props: FormFieldElementRenderProps): React.ReactElement {\n const { formProps } = props;\n const { Bind } = formProps as FormRenderPropParams;\n const validators = this.config.validators;\n /**\n * TODO @ts-refactor @bruno\n * Figure out what can validators be.\n */\n if (validators && typeof validators !== \"function\") {\n console.log(\n \"packages/app-security-access-management/src/ui/elements/GroupAutocompleteElement.tsx validators is set but not a function.\"\n );\n console.log(validators);\n }\n return (\n <Bind\n name={this.id}\n validators={typeof validators === \"function\" ? validators({ formProps }) : []}\n >\n <GroupAutocomplete label={\"Group\"} />\n </Bind>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;IAGaA,wB;;;;;;;;;;;;WACT,gBAAuBC,KAAvB,EAA+E;MAC3E,IAAQC,SAAR,GAAsBD,KAAtB,CAAQC,SAAR;MACA,WAAiBA,SAAjB;MAAA,IAAQC,IAAR,QAAQA,IAAR;MACA,IAAMC,UAAU,GAAG,KAAKC,MAAL,CAAYD,UAA/B;MACA;AACR;AACA;AACA;;MACQ,IAAIA,UAAU,IAAI,OAAOA,UAAP,KAAsB,UAAxC,EAAoD;QAChDE,OAAO,CAACC,GAAR,CACI,4HADJ;QAGAD,OAAO,CAACC,GAAR,CAAYH,UAAZ;MACH;;MACD,oBACI,6BAAC,IAAD;QACI,IAAI,EAAE,KAAKI,EADf;QAEI,UAAU,EAAE,OAAOJ,UAAP,KAAsB,UAAtB,GAAmCA,UAAU,CAAC;UAAEF,SAAS,EAATA;QAAF,CAAD,CAA7C,GAA+D;MAF/E,gBAII,6BAAC,oCAAD;QAAmB,KAAK,EAAE;MAA1B,EAJJ,CADJ;IAQH;;;EAvByCO,2B"}
1
+ {"version":3,"names":["GroupAutocompleteElement","props","formProps","Bind","validators","config","console","log","id","InputElement"],"sources":["GroupAutocompleteElement.tsx"],"sourcesContent":["import React from \"react\";\nimport { FormRenderPropParams } from \"@webiny/form\";\nimport { InputElement } from \"@webiny/app-admin/ui/elements/form/InputElement\";\nimport { GroupAutocomplete } from \"~/components/GroupAutocomplete\";\nimport { FormFieldElementRenderProps } from \"@webiny/app-admin/ui/elements/form/FormFieldElement\";\n\nexport class GroupAutocompleteElement extends InputElement {\n public override render(props: FormFieldElementRenderProps): React.ReactElement {\n const { formProps } = props;\n const { Bind } = formProps as FormRenderPropParams;\n const validators = this.config.validators;\n /**\n * TODO @ts-refactor @bruno\n * Figure out what can validators be.\n */\n if (validators && typeof validators !== \"function\") {\n console.log(\n \"packages/app-security-access-management/src/ui/elements/GroupAutocompleteElement.tsx validators is set but not a function.\"\n );\n console.log(validators);\n }\n return (\n <Bind\n name={this.id}\n validators={typeof validators === \"function\" ? validators({ formProps }) : []}\n >\n <GroupAutocomplete label={\"Group\"} />\n </Bind>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;AAEA;AACA;AAAmE,IAGtDA,wBAAwB;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA,OACjC,gBAAuBC,KAAkC,EAAsB;MAC3E,IAAQC,SAAS,GAAKD,KAAK,CAAnBC,SAAS;MACjB,WAAiBA,SAAS;QAAlBC,IAAI,QAAJA,IAAI;MACZ,IAAMC,UAAU,GAAG,IAAI,CAACC,MAAM,CAACD,UAAU;MACzC;AACR;AACA;AACA;MACQ,IAAIA,UAAU,IAAI,OAAOA,UAAU,KAAK,UAAU,EAAE;QAChDE,OAAO,CAACC,GAAG,CACP,4HAA4H,CAC/H;QACDD,OAAO,CAACC,GAAG,CAACH,UAAU,CAAC;MAC3B;MACA,oBACI,6BAAC,IAAI;QACD,IAAI,EAAE,IAAI,CAACI,EAAG;QACd,UAAU,EAAE,OAAOJ,UAAU,KAAK,UAAU,GAAGA,UAAU,CAAC;UAAEF,SAAS,EAATA;QAAU,CAAC,CAAC,GAAG;MAAG,gBAE9E,6BAAC,oCAAiB;QAAC,KAAK,EAAE;MAAQ,EAAG,CAClC;IAEf;EAAC;EAAA;AAAA,EAvByCO,2BAAY;AAAA"}
@@ -1,72 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.ApiKeyForm = void 0;
11
-
12
9
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _reactHooks = require("@apollo/react-hooks");
23
-
24
15
  var _get = _interopRequireDefault(require("lodash/get"));
25
-
26
16
  var _reactRouter = require("@webiny/react-router");
27
-
28
17
  var _i18n = require("@webiny/app/i18n");
29
-
30
18
  var _form = require("@webiny/form");
31
-
32
19
  var _Grid = require("@webiny/ui/Grid");
33
-
34
20
  var _Input = require("@webiny/ui/Input");
35
-
36
21
  var _Button = require("@webiny/ui/Button");
37
-
38
22
  var _Progress = require("@webiny/ui/Progress");
39
-
40
23
  var _FormElementMessage = require("@webiny/ui/FormElementMessage");
41
-
42
24
  var _Permissions = require("@webiny/app-admin/components/Permissions");
43
-
44
25
  var _validation = require("@webiny/validation");
45
-
46
26
  var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
47
-
48
27
  var _Typography = require("@webiny/ui/Typography");
49
-
50
28
  var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
51
-
52
29
  var _utils = require("./utils");
53
-
54
30
  var GQL = _interopRequireWildcard(require("./graphql"));
55
-
56
31
  var _Snackbar = require("@webiny/ui/Snackbar");
57
-
58
32
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
59
-
60
33
  var _EmptyView = _interopRequireDefault(require("@webiny/app-admin/components/EmptyView"));
61
-
62
34
  var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
63
-
64
35
  var _styled = _interopRequireDefault(require("@emotion/styled"));
65
-
66
36
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
67
-
68
37
  var t = _i18n.i18n.ns("app-security-admin-users/admin/api-keys/form");
69
-
70
38
  var ButtonWrapper = /*#__PURE__*/(0, _styled.default)("div", {
71
39
  target: "e18bg2x40",
72
40
  label: "ButtonWrapper"
@@ -74,15 +42,12 @@ var ButtonWrapper = /*#__PURE__*/(0, _styled.default)("div", {
74
42
  display: "flex",
75
43
  justifyContent: "space-between"
76
44
  });
77
-
78
45
  var ApiKeyForm = function ApiKeyForm() {
79
46
  var _useRouter = (0, _reactRouter.useRouter)(),
80
- location = _useRouter.location,
81
- history = _useRouter.history;
82
-
47
+ location = _useRouter.location,
48
+ history = _useRouter.history;
83
49
  var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
84
- showSnackbar = _useSnackbar.showSnackbar;
85
-
50
+ showSnackbar = _useSnackbar.showSnackbar;
86
51
  var newEntry = new URLSearchParams(location.search).get("new") === "true";
87
52
  var id = new URLSearchParams(location.search).get("id");
88
53
  var getQuery = (0, _reactHooks.useQuery)(GQL.READ_API_KEY, {
@@ -94,105 +59,89 @@ var ApiKeyForm = function ApiKeyForm() {
94
59
  if (!data) {
95
60
  return;
96
61
  }
97
-
98
62
  var error = data.security.apiKey.error;
99
-
100
63
  if (error) {
101
64
  history.push("/access-management/api-keys");
102
65
  showSnackbar(error.message);
103
66
  }
104
67
  }
105
68
  });
106
-
107
69
  var _useMutation = (0, _reactHooks.useMutation)(GQL.CREATE_API_KEY, {
108
- refetchQueries: [{
109
- query: GQL.LIST_API_KEYS
110
- }]
111
- }),
112
- _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
113
- create = _useMutation2[0],
114
- createMutation = _useMutation2[1];
115
-
70
+ refetchQueries: [{
71
+ query: GQL.LIST_API_KEYS
72
+ }]
73
+ }),
74
+ _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
75
+ create = _useMutation2[0],
76
+ createMutation = _useMutation2[1];
116
77
  var _useMutation3 = (0, _reactHooks.useMutation)(GQL.UPDATE_API_KEY, {
117
- refetchQueries: [{
118
- query: GQL.LIST_API_KEYS
119
- }]
120
- }),
121
- _useMutation4 = (0, _slicedToArray2.default)(_useMutation3, 2),
122
- update = _useMutation4[0],
123
- updateMutation = _useMutation4[1];
124
-
78
+ refetchQueries: [{
79
+ query: GQL.LIST_API_KEYS
80
+ }]
81
+ }),
82
+ _useMutation4 = (0, _slicedToArray2.default)(_useMutation3, 2),
83
+ update = _useMutation4[0],
84
+ updateMutation = _useMutation4[1];
125
85
  var loading = [getQuery, createMutation, updateMutation].find(function (item) {
126
86
  return item.loading;
127
87
  });
128
88
  var onSubmit = (0, _react.useCallback)( /*#__PURE__*/function () {
129
89
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(data) {
130
90
  var isUpdate, _ref2, _ref3, operation, args, response, error, id;
131
-
132
91
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
133
- while (1) {
134
- switch (_context.prev = _context.next) {
135
- case 0:
136
- if (!(!data.permissions || !data.permissions.length)) {
137
- _context.next = 3;
138
- break;
92
+ while (1) switch (_context.prev = _context.next) {
93
+ case 0:
94
+ if (!(!data.permissions || !data.permissions.length)) {
95
+ _context.next = 3;
96
+ break;
97
+ }
98
+ showSnackbar(t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["You must configure permissions before saving!"]))), {
99
+ timeout: 60000,
100
+ dismissesOnAction: true,
101
+ action: /*#__PURE__*/_react.default.createElement(_Snackbar.SnackbarAction, {
102
+ label: "OK"
103
+ })
104
+ });
105
+ return _context.abrupt("return");
106
+ case 3:
107
+ isUpdate = data.createdOn;
108
+ _ref2 = isUpdate ? [update, {
109
+ variables: {
110
+ id: data.id,
111
+ data: (0, _utils.pickDataForAPI)(data)
139
112
  }
140
-
141
- showSnackbar(t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["You must configure permissions before saving!"]))), {
142
- timeout: 60000,
143
- dismissesOnAction: true,
144
- action: /*#__PURE__*/_react.default.createElement(_Snackbar.SnackbarAction, {
145
- label: "OK"
146
- })
147
- });
148
- return _context.abrupt("return");
149
-
150
- case 3:
151
- isUpdate = data.createdOn;
152
- _ref2 = isUpdate ? [update, {
153
- variables: {
154
- id: data.id,
155
- data: (0, _utils.pickDataForAPI)(data)
156
- }
157
- }] : [create, {
158
- variables: {
159
- data: (0, _utils.pickDataForAPI)(data)
160
- }
161
- }], _ref3 = (0, _slicedToArray2.default)(_ref2, 2), operation = _ref3[0], args = _ref3[1];
162
- _context.next = 7;
163
- return operation(args);
164
-
165
- case 7:
166
- response = _context.sent;
167
- error = response.data.security.apiKey.error;
168
-
169
- if (!error) {
170
- _context.next = 11;
171
- break;
113
+ }] : [create, {
114
+ variables: {
115
+ data: (0, _utils.pickDataForAPI)(data)
172
116
  }
173
-
174
- return _context.abrupt("return", showSnackbar(error.message));
175
-
176
- case 11:
177
- id = response.data.security.apiKey.data.id;
178
- !isUpdate && history.push("/access-management/api-keys?id=".concat(id));
179
- showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["API key saved successfully."]))));
180
-
181
- case 14:
182
- case "end":
183
- return _context.stop();
184
- }
117
+ }], _ref3 = (0, _slicedToArray2.default)(_ref2, 2), operation = _ref3[0], args = _ref3[1];
118
+ _context.next = 7;
119
+ return operation(args);
120
+ case 7:
121
+ response = _context.sent;
122
+ error = response.data.security.apiKey.error;
123
+ if (!error) {
124
+ _context.next = 11;
125
+ break;
126
+ }
127
+ return _context.abrupt("return", showSnackbar(error.message));
128
+ case 11:
129
+ id = response.data.security.apiKey.data.id;
130
+ !isUpdate && history.push("/access-management/api-keys?id=".concat(id));
131
+ showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["API key saved successfully."]))));
132
+ case 14:
133
+ case "end":
134
+ return _context.stop();
185
135
  }
186
136
  }, _callee);
187
137
  }));
188
-
189
138
  return function (_x) {
190
139
  return _ref.apply(this, arguments);
191
140
  };
192
141
  }(), [id]);
193
142
  var data = (0, _get.default)(getQuery, "data.security.apiKey.data", {});
194
- var showEmptyView = !newEntry && !loading && (0, _isEmpty.default)(data); // Render "No content" selected view.
195
-
143
+ var showEmptyView = !newEntry && !loading && (0, _isEmpty.default)(data);
144
+ // Render "No content" selected view.
196
145
  if (showEmptyView) {
197
146
  return /*#__PURE__*/_react.default.createElement(_EmptyView.default, {
198
147
  title: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Click on the left side list to display API key details or create a..."]))),
@@ -206,14 +155,13 @@ var ApiKeyForm = function ApiKeyForm() {
206
155
  }), " ", t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["New API Key"]))))
207
156
  });
208
157
  }
209
-
210
158
  return /*#__PURE__*/_react.default.createElement(_form.Form, {
211
159
  data: data,
212
160
  onSubmit: onSubmit
213
161
  }, function (_ref4) {
214
162
  var data = _ref4.data,
215
- form = _ref4.form,
216
- Bind = _ref4.Bind;
163
+ form = _ref4.form,
164
+ Bind = _ref4.Bind;
217
165
  return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
218
166
  title: data.name ? data.name : "Untitled"
219
167
  }), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
@@ -284,5 +232,4 @@ var ApiKeyForm = function ApiKeyForm() {
284
232
  }, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Save API key"])))))));
285
233
  });
286
234
  };
287
-
288
235
  exports.ApiKeyForm = ApiKeyForm;
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","ApiKeyForm","useRouter","location","history","useSnackbar","showSnackbar","newEntry","URLSearchParams","search","get","id","getQuery","useQuery","GQL","READ_API_KEY","variables","skip","onCompleted","data","error","security","apiKey","push","message","useMutation","CREATE_API_KEY","refetchQueries","query","LIST_API_KEYS","create","createMutation","UPDATE_API_KEY","update","updateMutation","loading","find","item","onSubmit","useCallback","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","pickDataForAPI","operation","args","response","showEmptyView","isEmpty","form","Bind","name","validation","token","background","padding","paddingLeft","lineHeight","verticalAlign","position","right","bind","ev","submit"],"sources":["ApiKeyForm.tsx"],"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\";\nimport { ApiKey } from \"~/types\";\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});\nexport interface ApiKeyFormProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const ApiKeyForm: React.FC<ApiKeyFormProps> = () => {\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: ApiKey[] = 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\n label={t`Name`}\n data-testid=\"sam.key.new.form.name\"\n />\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\n label={t`Description`}\n rows={4}\n data-testid=\"sam.key.new.form.description\"\n />\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 data-testid=\"sam.key.new.form.button.cancel\"\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n data-testid=\"sam.key.new.form.button.save\"\n >{t`Save API key`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","ApiKeyForm","useRouter","location","history","useSnackbar","showSnackbar","newEntry","URLSearchParams","search","get","id","getQuery","useQuery","GQL","READ_API_KEY","variables","skip","onCompleted","data","error","security","apiKey","push","message","useMutation","CREATE_API_KEY","refetchQueries","query","LIST_API_KEYS","create","createMutation","UPDATE_API_KEY","update","updateMutation","loading","find","item","onSubmit","useCallback","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","pickDataForAPI","operation","args","response","showEmptyView","isEmpty","form","Bind","name","validation","token","background","padding","paddingLeft","lineHeight","verticalAlign","position","right","bind","ev","submit"],"sources":["ApiKeyForm.tsx"],"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\";\nimport { ApiKey } from \"~/types\";\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});\nexport interface ApiKeyFormProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const ApiKeyForm: React.FC<ApiKeyFormProps> = () => {\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: ApiKey[] = 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\n label={t`Name`}\n data-testid=\"sam.key.new.form.name\"\n />\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\n label={t`Description`}\n rows={4}\n data-testid=\"sam.key.new.form.description\"\n />\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 data-testid=\"sam.key.new.form.button.cancel\"\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n data-testid=\"sam.key.new.form.button.save\"\n >{t`Save API key`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}