@webiny/app-security-access-management 5.36.2 → 5.37.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/components/GroupAutocomplete/graphql.js.map +1 -1
  2. package/components/GroupAutocomplete/index.js.map +1 -1
  3. package/components/GroupsMultiAutocomplete/graphql.d.ts +1 -0
  4. package/components/GroupsMultiAutocomplete/graphql.js +12 -0
  5. package/components/GroupsMultiAutocomplete/graphql.js.map +1 -0
  6. package/components/GroupsMultiAutocomplete/index.d.ts +5 -0
  7. package/components/GroupsMultiAutocomplete/index.js +24 -0
  8. package/components/GroupsMultiAutocomplete/index.js.map +1 -0
  9. package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
  10. package/components/NotAuthorizedError/index.js.map +1 -1
  11. package/components/TeamAutocomplete/graphql.d.ts +1 -0
  12. package/components/TeamAutocomplete/graphql.js +12 -0
  13. package/components/TeamAutocomplete/graphql.js.map +1 -0
  14. package/components/TeamAutocomplete/index.d.ts +5 -0
  15. package/components/TeamAutocomplete/index.js +23 -0
  16. package/components/TeamAutocomplete/index.js.map +1 -0
  17. package/index.js +28 -7
  18. package/index.js.map +1 -1
  19. package/package.json +19 -18
  20. package/plugins/constants.d.ts +1 -0
  21. package/plugins/constants.js +5 -4
  22. package/plugins/constants.js.map +1 -1
  23. package/plugins/index.js.map +1 -1
  24. package/plugins/installation.js.map +1 -1
  25. package/plugins/permissionRenderer/SecurityPermissions.js +60 -5
  26. package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
  27. package/plugins/permissionRenderer/index.js.map +1 -1
  28. package/plugins/routes.js.map +1 -1
  29. package/plugins/secureRouteError.js.map +1 -1
  30. package/types.d.ts +7 -0
  31. package/types.js.map +1 -1
  32. package/ui/elements/GroupAutocompleteElement.js.map +1 -1
  33. package/ui/elements/GroupsMultiAutocompleteElement.d.ts +6 -0
  34. package/ui/elements/GroupsMultiAutocompleteElement.js +49 -0
  35. package/ui/elements/GroupsMultiAutocompleteElement.js.map +1 -0
  36. package/ui/elements/TeamAutocompleteElement.d.ts +6 -0
  37. package/ui/elements/TeamAutocompleteElement.js +49 -0
  38. package/ui/elements/TeamAutocompleteElement.js.map +1 -0
  39. package/ui/views/ApiKeys/ApiKeyForm.js +19 -1
  40. package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
  41. package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
  42. package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
  43. package/ui/views/ApiKeys/graphql.js.map +1 -1
  44. package/ui/views/ApiKeys/index.js.map +1 -1
  45. package/ui/views/ApiKeys/utils.js +2 -2
  46. package/ui/views/ApiKeys/utils.js.map +1 -1
  47. package/ui/views/Groups/Groups.js.map +1 -1
  48. package/ui/views/Groups/GroupsDataList.js +8 -8
  49. package/ui/views/Groups/GroupsDataList.js.map +1 -1
  50. package/ui/views/Groups/GroupsForm.js +30 -17
  51. package/ui/views/Groups/GroupsForm.js.map +1 -1
  52. package/ui/views/Groups/graphql.js +1 -1
  53. package/ui/views/Groups/graphql.js.map +1 -1
  54. package/ui/views/Groups/index.js.map +1 -1
  55. package/ui/views/Teams/Teams.d.ts +8 -0
  56. package/ui/views/Teams/Teams.js +19 -0
  57. package/ui/views/Teams/Teams.js.map +1 -0
  58. package/ui/views/Teams/TeamsDataList.d.ts +5 -0
  59. package/ui/views/Teams/TeamsDataList.js +192 -0
  60. package/ui/views/Teams/TeamsDataList.js.map +1 -0
  61. package/ui/views/Teams/TeamsForm.d.ts +5 -0
  62. package/ui/views/Teams/TeamsForm.js +196 -0
  63. package/ui/views/Teams/TeamsForm.js.map +1 -0
  64. package/ui/views/Teams/graphql.d.ts +5 -0
  65. package/ui/views/Teams/graphql.js +21 -0
  66. package/ui/views/Teams/graphql.js.map +1 -0
  67. package/ui/views/Teams/index.d.ts +1 -0
  68. package/ui/views/Teams/index.js +16 -0
  69. package/ui/views/Teams/index.js.map +1 -0
  70. package/ui/views/utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["LIST_GROUPS","gql"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const LIST_GROUPS = 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"],"mappings":";;;;;;;;AAAA;AAA8B;AAEvB,IAAMA,WAAW,OAAGC,mBAAG,4XAc7B;AAAC"}
1
+ {"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_templateObject","LIST_GROUPS","gql","_taggedTemplateLiteral2","default","exports"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const LIST_GROUPS = 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"],"mappings":";;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,IAAAC,eAAA;AAEvB,IAAMC,WAAW,OAAGC,mBAAG,EAAAF,eAAA,KAAAA,eAAA,OAAAG,uBAAA,CAAAC,OAAA,iTAc7B;AAACC,OAAA,CAAAJ,WAAA,GAAAA,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["GroupAutocomplete","props","useQuery","LIST_GROUPS","data","loading","options","security","groups","undefined","value"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { AutoComplete, AutoCompleteProps } from \"@webiny/ui/AutoComplete\";\nimport { LIST_GROUPS } from \"./graphql\";\nimport { useQuery } from \"@apollo/react-hooks\";\n\ntype GroupAutocompleteProps = Partial<AutoCompleteProps>;\nexport const GroupAutocomplete: React.FC<GroupAutocompleteProps> = 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 ? undefined : props.value}\n />\n );\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAGO,IAAMA,iBAAmD,GAAG,SAAtDA,iBAAmD,CAAGC,KAAK,EAAI;EACxE,gBAA0B,IAAAC,oBAAQ,EAACC,oBAAW,CAAC;IAAvCC,IAAI,aAAJA,IAAI;IAAEC,OAAO,aAAPA,OAAO;EAErB,IAAMC,OAAO,GAAGD,OAAO,IAAI,CAACD,IAAI,GAAG,EAAE,GAAGA,IAAI,CAACG,QAAQ,CAACC,MAAM,CAACJ,IAAI;EAEjE,oBACI,6BAAC,0BAAY,oBACLH,KAAK;IACT,OAAO,EAAEK,OAAQ;IACjB,SAAS,EAAE,IAAK;IAChB,KAAK,EAAED,OAAO,GAAGI,SAAS,GAAGR,KAAK,CAACS;EAAM,GAC3C;AAEV,CAAC;AAAC"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_AutoComplete","_graphql","_reactHooks","GroupAutocomplete","props","_useQuery","useQuery","LIST_GROUPS","data","loading","options","security","groups","default","createElement","AutoComplete","Object","assign","valueProp","value","undefined","exports"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { AutoComplete, AutoCompleteProps } from \"@webiny/ui/AutoComplete\";\nimport { LIST_GROUPS } from \"./graphql\";\nimport { useQuery } from \"@apollo/react-hooks\";\n\ntype GroupAutocompleteProps = Partial<AutoCompleteProps>;\nexport const GroupAutocomplete: React.FC<GroupAutocompleteProps> = 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 ? undefined : props.value}\n />\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAGO,IAAMI,iBAAmD,GAAG,SAAtDA,iBAAmDA,CAAGC,KAAK,EAAI;EACxE,IAAAC,SAAA,GAA0B,IAAAC,oBAAQ,EAACC,oBAAW,CAAC;IAAvCC,IAAI,GAAAH,SAAA,CAAJG,IAAI;IAAEC,OAAO,GAAAJ,SAAA,CAAPI,OAAO;EAErB,IAAMC,OAAO,GAAGD,OAAO,IAAI,CAACD,IAAI,GAAG,EAAE,GAAGA,IAAI,CAACG,QAAQ,CAACC,MAAM,CAACJ,IAAI;EAEjE,oBACIX,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,aAAA,CAAAe,YAAY,EAAAC,MAAA,CAAAC,MAAA,KACLb,KAAK;IACTM,OAAO,EAAEA,OAAQ;IACjBQ,SAAS,EAAE,IAAK;IAChBC,KAAK,EAAEV,OAAO,GAAGW,SAAS,GAAGhB,KAAK,CAACe;EAAM,EAC5C,CAAC;AAEV,CAAC;AAACE,OAAA,CAAAlB,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1 @@
1
+ export declare const LIST_GROUPS: import("graphql").DocumentNode;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LIST_GROUPS = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
10
+ var _templateObject;
11
+ var LIST_GROUPS = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query listGroups {\n security {\n groups: listGroups {\n data {\n id\n slug\n name\n description\n createdOn\n }\n error {\n data\n message\n code\n }\n }\n }\n }\n"])));
12
+ exports.LIST_GROUPS = LIST_GROUPS;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_templateObject","LIST_GROUPS","gql","_taggedTemplateLiteral2","default","exports"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const LIST_GROUPS = gql`\n query listGroups {\n security {\n groups: listGroups {\n data {\n id\n slug\n name\n description\n createdOn\n }\n error {\n data\n message\n code\n }\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,IAAAC,eAAA;AAEvB,IAAMC,WAAW,OAAGC,mBAAG,EAAAF,eAAA,KAAAA,eAAA,OAAAG,uBAAA,CAAAC,OAAA,8aAmB7B;AAACC,OAAA,CAAAJ,WAAA,GAAAA,WAAA"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { MultiAutoCompleteProps } from "@webiny/ui/AutoComplete";
3
+ declare type GroupsMultiAutocompleteProps = Partial<MultiAutoCompleteProps>;
4
+ export declare const GroupsMultiAutoComplete: React.FC<GroupsMultiAutocompleteProps>;
5
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.GroupsMultiAutoComplete = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _AutoComplete = require("@webiny/ui/AutoComplete");
10
+ var _graphql = require("./graphql");
11
+ var _reactHooks = require("@apollo/react-hooks");
12
+ var GroupsMultiAutoComplete = function GroupsMultiAutoComplete(props) {
13
+ var _useQuery = (0, _reactHooks.useQuery)(_graphql.LIST_GROUPS),
14
+ data = _useQuery.data,
15
+ loading = _useQuery.loading;
16
+ var options = loading || !data ? [] : data.security.groups.data;
17
+ return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, props, {
18
+ options: options,
19
+ valueProp: "id",
20
+ unique: true,
21
+ value: loading ? undefined : props.value
22
+ }));
23
+ };
24
+ exports.GroupsMultiAutoComplete = GroupsMultiAutoComplete;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_AutoComplete","_graphql","_reactHooks","GroupsMultiAutoComplete","props","_useQuery","useQuery","LIST_GROUPS","data","loading","options","security","groups","default","createElement","MultiAutoComplete","Object","assign","valueProp","unique","value","undefined","exports"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { MultiAutoComplete, MultiAutoCompleteProps } from \"@webiny/ui/AutoComplete\";\nimport { LIST_GROUPS } from \"./graphql\";\nimport { useQuery } from \"@apollo/react-hooks\";\n\ntype GroupsMultiAutocompleteProps = Partial<MultiAutoCompleteProps>;\n\nexport const GroupsMultiAutoComplete: React.FC<GroupsMultiAutocompleteProps> = props => {\n const { data, loading } = useQuery(LIST_GROUPS);\n\n const options = loading || !data ? [] : data.security.groups.data;\n\n return (\n <MultiAutoComplete\n {...props}\n options={options}\n valueProp={\"id\"}\n unique={true}\n value={loading ? undefined : props.value}\n />\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAIO,IAAMI,uBAA+D,GAAG,SAAlEA,uBAA+DA,CAAGC,KAAK,EAAI;EACpF,IAAAC,SAAA,GAA0B,IAAAC,oBAAQ,EAACC,oBAAW,CAAC;IAAvCC,IAAI,GAAAH,SAAA,CAAJG,IAAI;IAAEC,OAAO,GAAAJ,SAAA,CAAPI,OAAO;EAErB,IAAMC,OAAO,GAAGD,OAAO,IAAI,CAACD,IAAI,GAAG,EAAE,GAAGA,IAAI,CAACG,QAAQ,CAACC,MAAM,CAACJ,IAAI;EAEjE,oBACIX,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,aAAA,CAAAe,iBAAiB,EAAAC,MAAA,CAAAC,MAAA,KACVb,KAAK;IACTM,OAAO,EAAEA,OAAQ;IACjBQ,SAAS,EAAE,IAAK;IAChBC,MAAM,EAAE,IAAK;IACbC,KAAK,EAAEX,OAAO,GAAGY,SAAS,GAAGjB,KAAK,CAACgB;EAAM,EAC5C,CAAC;AAEV,CAAC;AAACE,OAAA,CAAAnB,uBAAA,GAAAA,uBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["ContentWrapper","styled","display","paddingTop","textAlign","margin","styles","authErrorImgStyle","css","width","paddingBottom","bodyStyle","color","linkStyle","textDecoration","NotAuthorizedError","authErrorImg"],"sources":["NotAuthorizedError.tsx"],"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: React.FC = () => {\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"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,cAAc,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EACjCC,OAAO,EAAE,OAAO;EAChBC,UAAU,EAAE,KAAK;EACjBC,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEF,IAAMC,MAAM,GAAG;EACXC,iBAAiB,eAAE,IAAAC,YAAG,EAAC;IACnBC,KAAK,EAAE,OAAO;IACdC,aAAa,EAAE;EACnB,CAAC,6BAAC;EACFC,SAAS,eAAE,IAAAH,YAAG,EAAC;IACXI,KAAK,EAAE,6CAA6C;IACpDV,OAAO,EAAE;EACb,CAAC,qBAAC;EACFW,SAAS,eAAE,IAAAL,YAAG,EAAC;IACXM,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE;MACPA,cAAc,EAAE;IACpB;EACJ,CAAC;AACL,CAAC;AAEM,IAAMC,kBAA4B,GAAG,SAA/BA,kBAA4B,GAAS;EAC9C,oBACI,oBAAC,cAAc,qBACX,oBAAC,oBAAM;IAAC,KAAK,EAAE;EAAiB,EAAG,eAEnC;IAAK,SAAS,EAAET,MAAM,CAACC,iBAAkB;IAAC,GAAG,EAAES,yBAAa;IAAC,GAAG,EAAC;EAAgB,EAAG,eAEpF,oBAAC,sBAAU;IAAC,GAAG,EAAE,OAAQ;IAAC,SAAS,EAAEV,MAAM,CAACK;EAAU,GAAC,4CAEvD,CAAa,eAEb,oBAAC,sBAAU;IAAC,GAAG,EAAE,OAAQ;IAAC,SAAS,EAAEL,MAAM,CAACK;EAAU,GAAC,sDAEvD,CAAa,eAEb,oBAAC,iBAAI;IAAC,EAAE,EAAC,GAAG;IAAC,SAAS,EAAEL,MAAM,CAACO;EAAU,GAAC,eAE1C,CAAO,CACM;AAEzB,CAAC;AAAC"}
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_reactRouter","_emotion","_styled","_interopRequireDefault","_reactHelmet","_SecureRouteError","_Typography","ContentWrapper","styled","target","label","display","paddingTop","textAlign","margin","styles","authErrorImgStyle","css","width","paddingBottom","bodyStyle","color","linkStyle","textDecoration","NotAuthorizedError","createElement","default","title","className","src","authErrorImg","alt","Typography","use","Link","to","exports"],"sources":["NotAuthorizedError.tsx"],"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: React.FC = () => {\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"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,iBAAA,GAAAF,sBAAA,CAAAJ,OAAA;AACA,IAAAO,WAAA,GAAAP,OAAA;AAEA,IAAMQ,cAAc,oBAAGC,eAAM,EAAC,KAAK;EAAAC,MAAA;EAAAC,KAAA;AAAA,GAAE;EACjCC,OAAO,EAAE,OAAO;EAChBC,UAAU,EAAE,KAAK;EACjBC,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEF,IAAMC,MAAM,GAAG;EACXC,iBAAiB,eAAE,IAAAC,YAAG,EAAC;IACnBC,KAAK,EAAE,OAAO;IACdC,aAAa,EAAE;EACnB,CAAC,6BAAC;EACFC,SAAS,eAAE,IAAAH,YAAG,EAAC;IACXI,KAAK,EAAE,6CAA6C;IACpDV,OAAO,EAAE;EACb,CAAC,qBAAC;EACFW,SAAS,eAAE,IAAAL,YAAG,EAAC;IACXM,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE;MACPA,cAAc,EAAE;IACpB;EACJ,CAAC;AACL,CAAC;AAEM,IAAMC,kBAA4B,GAAG,SAA/BA,kBAA4BA,CAAA,EAAS;EAC9C,oBACI3B,KAAA,CAAA4B,aAAA,CAAClB,cAAc,qBACXV,KAAA,CAAA4B,aAAA,CAACrB,YAAA,CAAAsB,OAAM;IAACC,KAAK,EAAE;EAAiB,CAAE,CAAC,eAEnC9B,KAAA,CAAA4B,aAAA;IAAKG,SAAS,EAAEb,MAAM,CAACC,iBAAkB;IAACa,GAAG,EAAEC,yBAAa;IAACC,GAAG,EAAC;EAAgB,CAAE,CAAC,eAEpFlC,KAAA,CAAA4B,aAAA,CAACnB,WAAA,CAAA0B,UAAU;IAACC,GAAG,EAAE,OAAQ;IAACL,SAAS,EAAEb,MAAM,CAACK;EAAU,GAAC,4CAE3C,CAAC,eAEbvB,KAAA,CAAA4B,aAAA,CAACnB,WAAA,CAAA0B,UAAU;IAACC,GAAG,EAAE,OAAQ;IAACL,SAAS,EAAEb,MAAM,CAACK;EAAU,GAAC,sDAE3C,CAAC,eAEbvB,KAAA,CAAA4B,aAAA,CAACzB,YAAA,CAAAkC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACP,SAAS,EAAEb,MAAM,CAACO;EAAU,GAAC,eAEpC,CACM,CAAC;AAEzB,CAAC;AAACc,OAAA,CAAAZ,kBAAA,GAAAA,kBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { NotAuthorizedError } from \"./NotAuthorizedError\";\n"],"mappings":";;;;;;;;;;;AAAA"}
1
+ {"version":3,"names":["_NotAuthorizedError","require"],"sources":["index.ts"],"sourcesContent":["export { NotAuthorizedError } from \"./NotAuthorizedError\";\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA"}
@@ -0,0 +1 @@
1
+ export declare const LIST_TEAMS: import("graphql").DocumentNode;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LIST_TEAMS = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
10
+ var _templateObject;
11
+ var LIST_TEAMS = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query listTeams {\n security {\n teams: listTeams {\n data {\n id\n slug\n name\n description\n createdOn\n }\n }\n }\n }\n"])));
12
+ exports.LIST_TEAMS = LIST_TEAMS;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_graphqlTag","_interopRequireDefault","require","_templateObject","LIST_TEAMS","gql","_taggedTemplateLiteral2","default","exports"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const LIST_TEAMS = gql`\n query listTeams {\n security {\n teams: listTeams {\n data {\n id\n slug\n name\n description\n createdOn\n }\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,IAAAC,eAAA;AAEvB,IAAMC,UAAU,OAAGC,mBAAG,EAAAF,eAAA,KAAAA,eAAA,OAAAG,uBAAA,CAAAC,OAAA,8SAc5B;AAACC,OAAA,CAAAJ,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { AutoCompleteProps } from "@webiny/ui/AutoComplete";
3
+ declare type TeamAutocompleteProps = Partial<AutoCompleteProps>;
4
+ export declare const TeamAutocomplete: React.FC<TeamAutocompleteProps>;
5
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TeamAutocomplete = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _AutoComplete = require("@webiny/ui/AutoComplete");
10
+ var _graphql = require("./graphql");
11
+ var _reactHooks = require("@apollo/react-hooks");
12
+ var TeamAutocomplete = function TeamAutocomplete(props) {
13
+ var _useQuery = (0, _reactHooks.useQuery)(_graphql.LIST_TEAMS),
14
+ data = _useQuery.data,
15
+ loading = _useQuery.loading;
16
+ var options = loading || !data ? [] : data.security.teams.data;
17
+ return /*#__PURE__*/_react.default.createElement(_AutoComplete.AutoComplete, Object.assign({}, props, {
18
+ options: options,
19
+ valueProp: "id",
20
+ value: loading ? undefined : props.value
21
+ }));
22
+ };
23
+ exports.TeamAutocomplete = TeamAutocomplete;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_AutoComplete","_graphql","_reactHooks","TeamAutocomplete","props","_useQuery","useQuery","LIST_TEAMS","data","loading","options","security","teams","default","createElement","AutoComplete","Object","assign","valueProp","value","undefined","exports"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { AutoComplete, AutoCompleteProps } from \"@webiny/ui/AutoComplete\";\nimport { LIST_TEAMS } from \"./graphql\";\nimport { useQuery } from \"@apollo/react-hooks\";\n\ntype TeamAutocompleteProps = Partial<AutoCompleteProps>;\nexport const TeamAutocomplete: React.FC<TeamAutocompleteProps> = props => {\n const { data, loading } = useQuery(LIST_TEAMS);\n\n const options = loading || !data ? [] : data.security.teams.data;\n\n return (\n <AutoComplete\n {...props}\n options={options}\n valueProp={\"id\"}\n value={loading ? undefined : props.value}\n />\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAGO,IAAMI,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAGC,KAAK,EAAI;EACtE,IAAAC,SAAA,GAA0B,IAAAC,oBAAQ,EAACC,mBAAU,CAAC;IAAtCC,IAAI,GAAAH,SAAA,CAAJG,IAAI;IAAEC,OAAO,GAAAJ,SAAA,CAAPI,OAAO;EAErB,IAAMC,OAAO,GAAGD,OAAO,IAAI,CAACD,IAAI,GAAG,EAAE,GAAGA,IAAI,CAACG,QAAQ,CAACC,KAAK,CAACJ,IAAI;EAEhE,oBACIX,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,aAAA,CAAAe,YAAY,EAAAC,MAAA,CAAAC,MAAA,KACLb,KAAK;IACTM,OAAO,EAAEA,OAAQ;IACjBQ,SAAS,EAAE,IAAK;IAChBC,KAAK,EAAEV,OAAO,GAAGW,SAAS,GAAGhB,KAAK,CAACe;EAAM,EAC5C,CAAC;AAEV,CAAC;AAACE,OAAA,CAAAlB,gBAAA,GAAAA,gBAAA"}
package/index.js CHANGED
@@ -12,6 +12,7 @@ var _appAdmin = require("@webiny/app-admin");
12
12
  var _appSecurity = require("@webiny/app-security");
13
13
  var _constants = require("./plugins/constants");
14
14
  var _Groups = require("./ui/views/Groups");
15
+ var _Teams = require("./ui/views/Teams");
15
16
  var _ApiKeys = require("./ui/views/ApiKeys");
16
17
  var _plugins2 = _interopRequireDefault(require("./plugins"));
17
18
  /**
@@ -25,14 +26,28 @@ var _default = function _default() {
25
26
  exports.default = _default;
26
27
  var AccessManagementExtension = function AccessManagementExtension() {
27
28
  _plugins.plugins.register((0, _plugins2.default)());
29
+ var _useWcp = (0, _appAdmin.useWcp)(),
30
+ getProject = _useWcp.getProject;
31
+ var project = getProject();
32
+ var teams = false;
33
+ if (project) {
34
+ teams = project.package.features.advancedAccessControlLayer.options.teams;
35
+ }
28
36
  return /*#__PURE__*/_react.default.createElement(_appAdmin.Plugins, null, /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
29
37
  name: _constants.Permission.Groups
30
38
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddRoute, {
31
39
  exact: true,
32
- path: "/access-management/groups"
40
+ path: "/access-management/roles"
33
41
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.Layout, {
34
- title: "Access Management - Groups"
35
- }, /*#__PURE__*/_react.default.createElement(_Groups.Groups, null)))), /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
42
+ title: "Access Management - Roles"
43
+ }, /*#__PURE__*/_react.default.createElement(_Groups.Groups, null)))), " ", teams && /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
44
+ name: _constants.Permission.Teams
45
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddRoute, {
46
+ exact: true,
47
+ path: "/access-management/teams"
48
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.Layout, {
49
+ title: "Access Management - Teams"
50
+ }, /*#__PURE__*/_react.default.createElement(_Teams.Teams, null)))), /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
36
51
  name: _constants.Permission.ApiKeys
37
52
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddRoute, {
38
53
  exact: true,
@@ -40,7 +55,7 @@ var AccessManagementExtension = function AccessManagementExtension() {
40
55
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.Layout, {
41
56
  title: "Access Management - API Keys"
42
57
  }, /*#__PURE__*/_react.default.createElement(_ApiKeys.ApiKeys, null)))), /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
43
- any: [_constants.Permission.Groups, _constants.Permission.ApiKeys]
58
+ any: [_constants.Permission.Groups, _constants.Permission.ApiKeys, _constants.Permission.Teams]
44
59
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
45
60
  name: "settings"
46
61
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
@@ -49,9 +64,15 @@ var AccessManagementExtension = function AccessManagementExtension() {
49
64
  }, /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
50
65
  name: _constants.Permission.Groups
51
66
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
52
- name: "settings.accessManagement.groups",
53
- label: "Groups",
54
- path: "/access-management/groups"
67
+ name: "settings.accessManagement.roles",
68
+ label: "Roles",
69
+ path: "/access-management/roles"
70
+ })), teams && /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
71
+ name: _constants.Permission.Teams
72
+ }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
73
+ name: "settings.accessManagement.teams",
74
+ label: "Teams",
75
+ path: "/access-management/teams"
55
76
  })), /*#__PURE__*/_react.default.createElement(_appSecurity.HasPermission, {
56
77
  name: _constants.Permission.ApiKeys
57
78
  }, /*#__PURE__*/_react.default.createElement(_appAdmin.AddMenu, {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["AccessManagementExtension","plugins","register","accessManagementPugins","Permission","Groups","ApiKeys","AccessManagement","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Layout, Plugins, AddMenu, AddRoute } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-security\";\nimport { Permission } from \"~/plugins/constants\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport accessManagementPugins from \"./plugins\";\n\n/**\n * TODO @ts-refactor\n * Find out why is there empty default export\n */\n// @ts-ignore\nexport default () => [];\n\nexport const AccessManagementExtension = () => {\n plugins.register(accessManagementPugins());\n\n return (\n <Plugins>\n <HasPermission name={Permission.Groups}>\n <AddRoute exact path={\"/access-management/groups\"}>\n <Layout title={\"Access Management - Groups\"}>\n <Groups />\n </Layout>\n </AddRoute>\n </HasPermission>\n <HasPermission name={Permission.ApiKeys}>\n <AddRoute exact path={\"/access-management/api-keys\"}>\n <Layout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </Layout>\n </AddRoute>\n </HasPermission>\n <HasPermission any={[Permission.Groups, Permission.ApiKeys]}>\n <AddMenu name={\"settings\"}>\n <AddMenu name={\"settings.accessManagement\"} label={\"Access Management\"}>\n <HasPermission name={Permission.Groups}>\n <AddMenu\n name={\"settings.accessManagement.groups\"}\n label={\"Groups\"}\n path={\"/access-management/groups\"}\n />\n </HasPermission>\n <HasPermission name={Permission.ApiKeys}>\n <AddMenu\n name={\"settings.accessManagement.apiKeys\"}\n label={\"API Keys\"}\n path={\"/access-management/api-keys\"}\n />\n </HasPermission>\n </AddMenu>\n </AddMenu>\n </HasPermission>\n </Plugins>\n );\n};\n\nexport const AccessManagement = memo(AccessManagementExtension);\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA,eACe;EAAA,OAAM,EAAE;AAAA;AAAA;AAEhB,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyB,GAAS;EAC3CC,gBAAO,CAACC,QAAQ,CAAC,IAAAC,iBAAsB,GAAE,CAAC;EAE1C,oBACI,6BAAC,iBAAO,qBACJ,6BAAC,0BAAa;IAAC,IAAI,EAAEC,qBAAU,CAACC;EAAO,gBACnC,6BAAC,kBAAQ;IAAC,KAAK;IAAC,IAAI,EAAE;EAA4B,gBAC9C,6BAAC,gBAAM;IAAC,KAAK,EAAE;EAA6B,gBACxC,6BAAC,cAAM,OAAG,CACL,CACF,CACC,eAChB,6BAAC,0BAAa;IAAC,IAAI,EAAED,qBAAU,CAACE;EAAQ,gBACpC,6BAAC,kBAAQ;IAAC,KAAK;IAAC,IAAI,EAAE;EAA8B,gBAChD,6BAAC,gBAAM;IAAC,KAAK,EAAE;EAA+B,gBAC1C,6BAAC,gBAAO,OAAG,CACN,CACF,CACC,eAChB,6BAAC,0BAAa;IAAC,GAAG,EAAE,CAACF,qBAAU,CAACC,MAAM,EAAED,qBAAU,CAACE,OAAO;EAAE,gBACxD,6BAAC,iBAAO;IAAC,IAAI,EAAE;EAAW,gBACtB,6BAAC,iBAAO;IAAC,IAAI,EAAE,2BAA4B;IAAC,KAAK,EAAE;EAAoB,gBACnE,6BAAC,0BAAa;IAAC,IAAI,EAAEF,qBAAU,CAACC;EAAO,gBACnC,6BAAC,iBAAO;IACJ,IAAI,EAAE,kCAAmC;IACzC,KAAK,EAAE,QAAS;IAChB,IAAI,EAAE;EAA4B,EACpC,CACU,eAChB,6BAAC,0BAAa;IAAC,IAAI,EAAED,qBAAU,CAACE;EAAQ,gBACpC,6BAAC,iBAAO;IACJ,IAAI,EAAE,mCAAoC;IAC1C,KAAK,EAAE,UAAW;IAClB,IAAI,EAAE;EAA8B,EACtC,CACU,CACV,CACJ,CACE,CACV;AAElB,CAAC;AAAC;AAEK,IAAMC,gBAAgB,gBAAG,IAAAC,WAAI,EAACR,yBAAyB,CAAC;AAAC"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_plugins","_appAdmin","_appSecurity","_constants","_Groups","_Teams","_ApiKeys","_plugins2","_interopRequireDefault","_default","exports","default","AccessManagementExtension","plugins","register","accessManagementPlugins","_useWcp","useWcp","getProject","project","teams","package","features","advancedAccessControlLayer","options","createElement","Plugins","HasPermission","name","Permission","Groups","AddRoute","exact","path","Layout","title","Teams","ApiKeys","any","AddMenu","label","AccessManagement","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Layout, Plugins, AddMenu, AddRoute, useWcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-security\";\nimport { Permission } from \"~/plugins/constants\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { Teams } from \"~/ui/views/Teams\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport accessManagementPlugins from \"./plugins\";\n\n/**\n * TODO @ts-refactor\n * Find out why is there empty default export\n */\n// @ts-ignore\nexport default () => [];\n\nexport const AccessManagementExtension = () => {\n plugins.register(accessManagementPlugins());\n\n const { getProject } = useWcp();\n\n const project = getProject();\n let teams = false;\n if (project) {\n teams = project.package.features.advancedAccessControlLayer.options.teams;\n }\n\n return (\n <Plugins>\n <HasPermission name={Permission.Groups}>\n <AddRoute exact path={\"/access-management/roles\"}>\n <Layout title={\"Access Management - Roles\"}>\n <Groups />\n </Layout>\n </AddRoute>\n </HasPermission>{\" \"}\n {teams && (\n <HasPermission name={Permission.Teams}>\n <AddRoute exact path={\"/access-management/teams\"}>\n <Layout title={\"Access Management - Teams\"}>\n <Teams />\n </Layout>\n </AddRoute>\n </HasPermission>\n )}\n <HasPermission name={Permission.ApiKeys}>\n <AddRoute exact path={\"/access-management/api-keys\"}>\n <Layout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </Layout>\n </AddRoute>\n </HasPermission>\n <HasPermission any={[Permission.Groups, Permission.ApiKeys, Permission.Teams]}>\n <AddMenu name={\"settings\"}>\n <AddMenu name={\"settings.accessManagement\"} label={\"Access Management\"}>\n <HasPermission name={Permission.Groups}>\n <AddMenu\n name={\"settings.accessManagement.roles\"}\n label={\"Roles\"}\n path={\"/access-management/roles\"}\n />\n </HasPermission>\n {teams && (\n <HasPermission name={Permission.Teams}>\n <AddMenu\n name={\"settings.accessManagement.teams\"}\n label={\"Teams\"}\n path={\"/access-management/teams\"}\n />\n </HasPermission>\n )}\n\n <HasPermission name={Permission.ApiKeys}>\n <AddMenu\n name={\"settings.accessManagement.apiKeys\"}\n label={\"API Keys\"}\n path={\"/access-management/api-keys\"}\n />\n </HasPermission>\n </AddMenu>\n </AddMenu>\n </HasPermission>\n </Plugins>\n );\n};\n\nexport const AccessManagement = memo(AccessManagementExtension);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-security-access-management",
3
- "version": "5.36.2",
3
+ "version": "5.37.0-beta.1",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,14 +15,16 @@
15
15
  "dependencies": {
16
16
  "@apollo/react-hooks": "3.1.5",
17
17
  "@emotion/styled": "11.10.6",
18
- "@webiny/app": "5.36.2",
19
- "@webiny/app-admin": "5.36.2",
20
- "@webiny/app-security": "5.36.2",
21
- "@webiny/form": "5.36.2",
22
- "@webiny/plugins": "5.36.2",
23
- "@webiny/react-router": "5.36.2",
24
- "@webiny/ui": "5.36.2",
25
- "@webiny/validation": "5.36.2",
18
+ "@material-design-icons/svg": "0.12.1",
19
+ "@webiny/app": "5.37.0-beta.1",
20
+ "@webiny/app-admin": "5.37.0-beta.1",
21
+ "@webiny/app-security": "5.37.0-beta.1",
22
+ "@webiny/feature-flags": "5.37.0-beta.1",
23
+ "@webiny/form": "5.37.0-beta.1",
24
+ "@webiny/plugins": "5.37.0-beta.1",
25
+ "@webiny/react-router": "5.37.0-beta.1",
26
+ "@webiny/ui": "5.37.0-beta.1",
27
+ "@webiny/validation": "5.37.0-beta.1",
26
28
  "emotion": "10.0.27",
27
29
  "graphql-tag": "2.12.6",
28
30
  "lodash": "4.17.21",
@@ -31,17 +33,16 @@
31
33
  "react-helmet": "6.1.0"
32
34
  },
33
35
  "devDependencies": {
34
- "@babel/cli": "7.20.7",
35
- "@babel/core": "7.20.12",
36
+ "@babel/cli": "7.22.6",
37
+ "@babel/core": "7.22.8",
36
38
  "@babel/plugin-proposal-class-properties": "7.18.6",
37
- "@babel/preset-env": "7.20.2",
38
- "@babel/preset-react": "7.18.6",
39
- "@babel/preset-typescript": "7.18.6",
39
+ "@babel/preset-env": "7.22.7",
40
+ "@babel/preset-react": "7.22.5",
41
+ "@babel/preset-typescript": "7.22.5",
40
42
  "@types/react-helmet": "6.1.6",
41
- "@webiny/cli": "5.36.2",
42
- "@webiny/project-utils": "5.36.2",
43
+ "@webiny/cli": "5.37.0-beta.1",
44
+ "@webiny/project-utils": "5.37.0-beta.1",
43
45
  "babel-plugin-emotion": "9.2.11",
44
- "babel-plugin-lodash": "3.3.4",
45
46
  "rimraf": "3.0.2",
46
47
  "ttypescript": "1.5.15",
47
48
  "typescript": "4.7.4"
@@ -61,5 +62,5 @@
61
62
  ]
62
63
  }
63
64
  },
64
- "gitHead": "908c591cd08d81da267ed6152e880b52e1157c8b"
65
+ "gitHead": "176c29425477d1daaca1b7da79bacc79a1d35f6e"
65
66
  }
@@ -1,4 +1,5 @@
1
1
  export declare enum Permission {
2
2
  Groups = "security.group",
3
+ Teams = "security.team",
3
4
  ApiKeys = "security.apiKey"
4
5
  }
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Permission = void 0;
7
- var Permission;
8
- exports.Permission = Permission;
9
- (function (Permission) {
7
+ var Permission = /*#__PURE__*/function (Permission) {
10
8
  Permission["Groups"] = "security.group";
9
+ Permission["Teams"] = "security.team";
11
10
  Permission["ApiKeys"] = "security.apiKey";
12
- })(Permission || (exports.Permission = Permission = {}));
11
+ return Permission;
12
+ }({});
13
+ exports.Permission = Permission;
@@ -1 +1 @@
1
- {"version":3,"names":["Permission"],"sources":["constants.ts"],"sourcesContent":["export enum Permission {\n Groups = \"security.group\",\n ApiKeys = \"security.apiKey\"\n}\n"],"mappings":";;;;;;IAAYA,UAAU;AAAA;AAAA,WAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;AAAA,GAAVA,UAAU,0BAAVA,UAAU"}
1
+ {"version":3,"names":["Permission","exports"],"sources":["constants.ts"],"sourcesContent":["export enum Permission {\n Groups = \"security.group\",\n Teams = \"security.team\",\n ApiKeys = \"security.apiKey\"\n}\n"],"mappings":";;;;;;IAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAAC,OAAA,CAAAD,UAAA,GAAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["installation","permissionRenderer","secureRouteError"],"sources":["index.ts"],"sourcesContent":["import { PluginCollection } from \"@webiny/plugins/types\";\nimport installation from \"./installation\";\nimport permissionRenderer from \"./permissionRenderer\";\nimport secureRouteError from \"~/plugins/secureRouteError\";\n\nexport default (): PluginCollection => [installation, permissionRenderer, secureRouteError];\n"],"mappings":";;;;;;;AACA;AACA;AACA;AAA0D,eAE3C;EAAA,OAAwB,CAACA,qBAAY,EAAEC,2BAAkB,EAAEC,yBAAgB,CAAC;AAAA;AAAA"}
1
+ {"version":3,"names":["_installation","_interopRequireDefault","require","_permissionRenderer","_secureRouteError","_default","installation","permissionRenderer","secureRouteError","exports","default"],"sources":["index.ts"],"sourcesContent":["import { PluginCollection } from \"@webiny/plugins/types\";\nimport installation from \"./installation\";\nimport permissionRenderer from \"./permissionRenderer\";\nimport secureRouteError from \"~/plugins/secureRouteError\";\n\nexport default (): PluginCollection => [installation, permissionRenderer, secureRouteError];\n"],"mappings":";;;;;;;AACA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,iBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA0D,IAAAG,QAAA,GAE3C,SAAAA,SAAA;EAAA,OAAwB,CAACC,qBAAY,EAAEC,2BAAkB,EAAEC,yBAAgB,CAAC;AAAA;AAAAC,OAAA,CAAAC,OAAA,GAAAL,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["SimpleFormPlaceholder","styled","minHeight","minWidth","IS_INSTALLED","gql","INSTALL","SecurityInstaller","onInstalled","client","useApolloClient","useState","error","setError","useEffect","mutate","mutation","then","data","security","install","message","setTimeout","label","plugin","name","type","title","dependencies","secure","getInstalledVersion","query","version","render"],"sources":["installation.tsx"],"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\ninterface SecurityInstallerProps {\n onInstalled: () => void;\n}\nconst SecurityInstaller: React.FC<SecurityInstallerProps> = ({ 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"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqC;AAGrC,IAAMA,qBAAqB,oBAAGC,eAAM;EAAA;EAAA;AAAA,GAAK;EACrCC,SAAS,EAAE,GAAG;EACdC,QAAQ,EAAE;AACd,CAAC,CAAC;AAEF,IAAMC,YAAY,OAAGC,mBAAG,kLAMvB;AAED,IAAMC,OAAO,OAAGD,mBAAG,6TAYlB;AAKD,IAAME,iBAAmD,GAAG,SAAtDA,iBAAmD,OAAwB;EAAA,IAAlBC,WAAW,QAAXA,WAAW;EACtE,IAAMC,MAAM,GAAG,IAAAC,2BAAe,GAAE;EAChC,gBAA0B,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAA;IAAjCC,KAAK;IAAEC,QAAQ;EAEtB,IAAAC,gBAAS,EAAC,YAAM;IACZL,MAAM,CAACM,MAAM,CAAC;MAAEC,QAAQ,EAAEV;IAAQ,CAAC,CAAC,CAACW,IAAI,CAAC,iBAAc;MAAA,IAAXC,IAAI,SAAJA,IAAI;MAC7C,IAAQN,KAAK,GAAKM,IAAI,CAACC,QAAQ,CAACC,OAAO,CAA/BR,KAAK;MACb,IAAIA,KAAK,EAAE;QACPC,QAAQ,CAACD,KAAK,CAACS,OAAO,CAAC;QACvB;MACJ;;MAEA;MACAC,UAAU,CAACd,WAAW,EAAE,IAAI,CAAC;IACjC,CAAC,CAAC;EACN,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMe,KAAK,GAAGX,KAAK,gBACf,6BAAC,YAAK;IAAC,KAAK,wBAAyB;IAAC,IAAI,EAAE;EAAS,GAChDA,KAAK,CACF,2BAGX;EAED,oBACI,6BAAC,sBAAU,qBACP,6BAAC,0BAAgB;IAAC,KAAK,EAAEW;EAAM,EAAG,eAClC,6BAAC,6BAAiB,qBACd,6BAAC,qBAAqB,OAAG,CACT,CACX;AAErB,CAAC;AAED,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,6BAA6B;EACnCC,IAAI,EAAE,oBAAoB;EAC1BC,KAAK,YAAY;EACjBC,YAAY,EAAE,8BAA8B;EAC5CC,MAAM,EAAE,KAAK;EACPC,mBAAmB,sCAAa;IAAA;MAAA;MAAA;QAAA;UAAA;YAAVrB,MAAM,SAANA,MAAM;YAAA;YAAA,OACPA,MAAM,CAACsB,KAAK,CAAC;cAAEA,KAAK,EAAE3B;YAAa,CAAC,CAAC;UAAA;YAAA;YAApDc,IAAI,uBAAJA,IAAI;YAAA,iCACLA,IAAI,CAACC,QAAQ,CAACa,OAAO;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAChC,CAAC;EACDC,MAAM,yBAAkB;IAAA,IAAfzB,WAAW,SAAXA,WAAW;IAChB,oBAAO,6BAAC,iBAAiB;MAAC,WAAW,EAAEA;IAAY,EAAG;EAC1D;AACJ,CAAC;AAAC,eAEagB,MAAM;AAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_graphqlTag","_interopRequireDefault","_reactHooks","_Alert","_Progress","_SimpleForm","_styled","_templateObject","_templateObject2","SimpleFormPlaceholder","styled","target","label","minHeight","minWidth","IS_INSTALLED","gql","_taggedTemplateLiteral2","default","INSTALL","SecurityInstaller","_ref","onInstalled","client","useApolloClient","_useState","useState","_useState2","_slicedToArray2","error","setError","useEffect","mutate","mutation","then","_ref2","data","security","install","message","setTimeout","createElement","Alert","title","type","SimpleForm","CircularProgress","SimpleFormContent","plugin","name","dependencies","secure","getInstalledVersion","_ref3","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","_yield$client$query","wrap","_callee$","_context","prev","next","query","sent","abrupt","version","stop","render","_ref4","_default","exports"],"sources":["installation.tsx"],"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\ninterface SecurityInstallerProps {\n onInstalled: () => void;\n}\nconst SecurityInstaller: React.FC<SecurityInstallerProps> = ({ 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"],"mappings":"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"}
@@ -15,11 +15,14 @@ var _Permissions = require("@webiny/app-admin/components/Permissions");
15
15
  var _form = require("@webiny/form");
16
16
  var _Elevation = require("@webiny/ui/Elevation");
17
17
  var _Typography = require("@webiny/ui/Typography");
18
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
18
+ var _appSecurity = require("@webiny/app-security");
19
+ var _appAdmin = require("@webiny/app-admin");
20
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
19
21
  var t = _i18n.i18n.ns("app-security-admin-users/plugins/permissionRenderer");
20
22
  var SECURITY = "security";
21
23
  var SECURITY_FULL_ACCESS = "".concat(SECURITY, ".*");
22
24
  var SECURITY_GROUP_ACCESS = "".concat(SECURITY, ".group");
25
+ var SECURITY_TEAM_ACCESS = "".concat(SECURITY, ".team");
23
26
  var SECURITY_API_KEY_ACCESS = "".concat(SECURITY, ".apiKey");
24
27
  var FULL_ACCESS = "full";
25
28
  var NO_ACCESS = "no";
@@ -27,6 +30,20 @@ var CUSTOM_ACCESS = "custom";
27
30
  var SecurityPermissions = function SecurityPermissions(_ref) {
28
31
  var value = _ref.value,
29
32
  onChange = _ref.onChange;
33
+ var _useSecurity = (0, _appSecurity.useSecurity)(),
34
+ getPermission = _useSecurity.getPermission;
35
+ var _useWcp = (0, _appAdmin.useWcp)(),
36
+ getProject = _useWcp.getProject;
37
+
38
+ // We disable form elements for custom permissions if AACL cannot be used.
39
+ var cannotUseAacl = (0, _react.useMemo)(function () {
40
+ return !getPermission("aacl", true);
41
+ }, []);
42
+ var project = getProject();
43
+ var teams = false;
44
+ if (project) {
45
+ teams = project.package.features.advancedAccessControlLayer.options.teams;
46
+ }
30
47
  var onFormChange = (0, _react.useCallback)(function (data) {
31
48
  var newValue = [];
32
49
  if (Array.isArray(value)) {
@@ -46,6 +63,11 @@ var SecurityPermissions = function SecurityPermissions(_ref) {
46
63
  name: SECURITY_GROUP_ACCESS
47
64
  });
48
65
  }
66
+ if (data.teamAccessScope === FULL_ACCESS) {
67
+ permissions.push({
68
+ name: SECURITY_TEAM_ACCESS
69
+ });
70
+ }
49
71
  if (data.apiKeyAccessScope === FULL_ACCESS) {
50
72
  permissions.push({
51
73
  name: SECURITY_API_KEY_ACCESS
@@ -83,6 +105,7 @@ var SecurityPermissions = function SecurityPermissions(_ref) {
83
105
  var data = {
84
106
  accessLevel: CUSTOM_ACCESS,
85
107
  groupAccessScope: NO_ACCESS,
108
+ teamAccessScope: NO_ACCESS,
86
109
  apiKeyAccessScope: NO_ACCESS
87
110
  };
88
111
  var hasGroupAccess = permissions.find(function (item) {
@@ -91,6 +114,12 @@ var SecurityPermissions = function SecurityPermissions(_ref) {
91
114
  if (hasGroupAccess) {
92
115
  data.groupAccessScope = FULL_ACCESS;
93
116
  }
117
+ var hasTeamAccess = permissions.find(function (item) {
118
+ return item.name === SECURITY_TEAM_ACCESS;
119
+ });
120
+ if (hasTeamAccess) {
121
+ data.teamAccessScope = FULL_ACCESS;
122
+ }
94
123
  var hasApiKeyAccess = permissions.find(function (item) {
95
124
  return item.name === SECURITY_API_KEY_ACCESS;
96
125
  });
@@ -107,6 +136,10 @@ var SecurityPermissions = function SecurityPermissions(_ref) {
107
136
  Bind = _ref2.Bind;
108
137
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
109
138
  className: _Permissions.gridNoPaddingClass
139
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
140
+ span: 12
141
+ }, data.accessLevel === "custom" && cannotUseAacl && /*#__PURE__*/_react.default.createElement(_Permissions.CannotUseAaclAlert, null))), /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
142
+ className: _Permissions.gridNoPaddingClass
110
143
  }, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
111
144
  span: 6
112
145
  }, /*#__PURE__*/_react.default.createElement(_Permissions.PermissionInfo, {
@@ -137,7 +170,8 @@ var SecurityPermissions = function SecurityPermissions(_ref) {
137
170
  }, /*#__PURE__*/_react.default.createElement(Bind, {
138
171
  name: "apiKeyAccessScope"
139
172
  }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
140
- label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Access Scope"])))
173
+ label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
174
+ disabled: cannotUseAacl
141
175
  }, /*#__PURE__*/_react.default.createElement("option", {
142
176
  value: NO_ACCESS
143
177
  }, t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
@@ -151,17 +185,38 @@ var SecurityPermissions = function SecurityPermissions(_ref) {
151
185
  span: 12
152
186
  }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
153
187
  use: "overline"
154
- }, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Groups"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
188
+ }, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Roles"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
155
189
  span: 12
156
190
  }, /*#__PURE__*/_react.default.createElement(Bind, {
157
191
  name: "groupAccessScope"
158
192
  }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
159
- label: t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Access Scope"])))
193
+ label: t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
194
+ disabled: cannotUseAacl
160
195
  }, /*#__PURE__*/_react.default.createElement("option", {
161
196
  value: NO_ACCESS
162
197
  }, t(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
163
198
  value: FULL_ACCESS
164
- }, t(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2.default)(["Full access"])))))))))));
199
+ }, t(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2.default)(["Full access"]))))))))), teams && /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
200
+ z: 1,
201
+ style: {
202
+ marginTop: 10
203
+ }
204
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
205
+ span: 12
206
+ }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
207
+ use: "overline"
208
+ }, t(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2.default)(["Teams"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
209
+ span: 12
210
+ }, /*#__PURE__*/_react.default.createElement(Bind, {
211
+ name: "teamAccessScope"
212
+ }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
213
+ label: t(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
214
+ disabled: cannotUseAacl
215
+ }, /*#__PURE__*/_react.default.createElement("option", {
216
+ value: NO_ACCESS
217
+ }, t(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
218
+ value: FULL_ACCESS
219
+ }, t(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2.default)(["Full access"])))))))))));
165
220
  });
166
221
  };
167
222
  exports.SecurityPermissions = SecurityPermissions;