@webiny/app-security-access-management 0.0.0-unstable.df7a8bb475 → 0.0.0-unstable.e2758ee1cf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Extension.js CHANGED
@@ -1,21 +1,19 @@
1
- import React, { memo } from "react";
2
- import { plugins } from "@webiny/plugins";
1
+ import React, { Fragment, memo } from "react";
3
2
  import { useRouter, AdminConfig, AdminLayout, Wcp } from "@webiny/app-admin";
4
3
  import { HasPermission } from "@webiny/app-admin";
5
- import { Permission } from "./plugins/constants.js";
4
+ import { Permission } from "./constants.js";
6
5
  import { Roles } from "./ui/views/Roles/index.js";
7
6
  import { Teams } from "./ui/views/Teams/index.js";
8
7
  import { ApiKeys } from "./ui/views/ApiKeys/index.js";
9
8
  import { Routes } from "./routes.js";
10
- import { permissionRendererPlugin } from "./plugins/permissionRenderer/index.js";
9
+ import { SecurityPermissions } from "./SecurityPermissions.js";
11
10
  const {
12
11
  Menu,
13
12
  Route
14
13
  } = AdminConfig;
15
14
  const AccessManagementExtension = () => {
16
15
  const router = useRouter();
17
- plugins.register(permissionRendererPlugin);
18
- return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
16
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SecurityPermissions, null), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
19
17
  name: Permission.Roles
20
18
  }, /*#__PURE__*/React.createElement(Route, {
21
19
  route: Routes.Roles.List,
@@ -74,7 +72,7 @@ const AccessManagementExtension = () => {
74
72
  to: router.getLink(Routes.ApiKeys.List),
75
73
  pinnable: true
76
74
  })
77
- })));
75
+ }))));
78
76
  };
79
77
  export const AccessManagement = /*#__PURE__*/memo(AccessManagementExtension);
80
78
 
package/Extension.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","plugins","useRouter","AdminConfig","AdminLayout","Wcp","HasPermission","Permission","Roles","Teams","ApiKeys","Routes","permissionRendererPlugin","Menu","Route","AccessManagementExtension","router","register","createElement","name","route","List","element","title","CanUseTeams","any","parent","Group","text","Link","to","getLink","pinnable","AccessManagement"],"sources":["Extension.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { useRouter, AdminConfig, AdminLayout, Wcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { Permission } from \"~/plugins/constants.js\";\nimport { Roles } from \"~/ui/views/Roles/index.js\";\nimport { Teams } from \"~/ui/views/Teams/index.js\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { permissionRendererPlugin } from \"~/plugins/permissionRenderer/index.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nconst AccessManagementExtension = () => {\n const router = useRouter();\n\n plugins.register(permissionRendererPlugin);\n\n return (\n <AdminConfig>\n <HasPermission name={Permission.Roles}>\n <Route\n route={Routes.Roles.List}\n element={\n <AdminLayout title={\"Access Management - Roles\"}>\n <Roles />\n </AdminLayout>\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Route\n route={Routes.Teams.List}\n element={\n <AdminLayout title={\"Access Management - Teams\"}>\n <Teams />\n </AdminLayout>\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n <HasPermission name={Permission.ApiKeys}>\n <Route\n route={Routes.ApiKeys.List}\n element={\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n }\n />\n </HasPermission>\n\n <HasPermission any={[Permission.Roles, Permission.ApiKeys, Permission.Teams]}>\n <Menu\n name={\"security.settings\"}\n parent={\"settings\"}\n element={<Menu.Group text={\"Access Management\"} />}\n />\n </HasPermission>\n <HasPermission name={Permission.Roles}>\n <Menu\n name={\"security.roles\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"Roles\"}\n to={router.getLink(Routes.Roles.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Menu\n name={\"security.teams\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"Teams\"}\n to={router.getLink(Routes.Teams.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n\n <HasPermission name={Permission.ApiKeys}>\n <Menu\n name={\"security.apiKeys\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"API Keys\"}\n to={router.getLink(Routes.ApiKeys.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n </AdminConfig>\n );\n};\n\nexport const AccessManagement = memo(AccessManagementExtension);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,SAAS,EAAEC,WAAW,EAAEC,WAAW,EAAEC,GAAG,QAAQ,mBAAmB;AAC5E,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,UAAU;AACnB,SAASC,KAAK;AACd,SAASC,KAAK;AACd,SAASC,OAAO;AAChB,SAASC,MAAM;AACf,SAASC,wBAAwB;AAEjC,MAAM;EAAEC,IAAI;EAAEC;AAAM,CAAC,GAAGX,WAAW;AAEnC,MAAMY,yBAAyB,GAAGA,CAAA,KAAM;EACpC,MAAMC,MAAM,GAAGd,SAAS,CAAC,CAAC;EAE1BD,OAAO,CAACgB,QAAQ,CAACL,wBAAwB,CAAC;EAE1C,oBACIb,KAAA,CAAAmB,aAAA,CAACf,WAAW,qBACRJ,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACa,IAAI,EAAEZ,UAAU,CAACC;EAAM,gBAClCT,KAAA,CAAAmB,aAAA,CAACJ,KAAK;IACFM,KAAK,EAAET,MAAM,CAACH,KAAK,CAACa,IAAK;IACzBC,OAAO,eACHvB,KAAA,CAAAmB,aAAA,CAACd,WAAW;MAACmB,KAAK,EAAE;IAA4B,gBAC5CxB,KAAA,CAAAmB,aAAA,CAACV,KAAK,MAAE,CACC;EAChB,CACJ,CACU,CAAC,eAChBT,KAAA,CAAAmB,aAAA,CAACb,GAAG,CAACmB,WAAW,qBACZzB,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACa,IAAI,EAAEZ,UAAU,CAACE;EAAM,gBAClCV,KAAA,CAAAmB,aAAA,CAACJ,KAAK;IACFM,KAAK,EAAET,MAAM,CAACF,KAAK,CAACY,IAAK;IACzBC,OAAO,eACHvB,KAAA,CAAAmB,aAAA,CAACd,WAAW;MAACmB,KAAK,EAAE;IAA4B,gBAC5CxB,KAAA,CAAAmB,aAAA,CAACT,KAAK,MAAE,CACC;EAChB,CACJ,CACU,CACF,CAAC,eAClBV,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACa,IAAI,EAAEZ,UAAU,CAACG;EAAQ,gBACpCX,KAAA,CAAAmB,aAAA,CAACJ,KAAK;IACFM,KAAK,EAAET,MAAM,CAACD,OAAO,CAACW,IAAK;IAC3BC,OAAO,eACHvB,KAAA,CAAAmB,aAAA,CAACd,WAAW;MAACmB,KAAK,EAAE;IAA+B,gBAC/CxB,KAAA,CAAAmB,aAAA,CAACR,OAAO,MAAE,CACD;EAChB,CACJ,CACU,CAAC,eAEhBX,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACmB,GAAG,EAAE,CAAClB,UAAU,CAACC,KAAK,EAAED,UAAU,CAACG,OAAO,EAAEH,UAAU,CAACE,KAAK;EAAE,gBACzEV,KAAA,CAAAmB,aAAA,CAACL,IAAI;IACDM,IAAI,EAAE,mBAAoB;IAC1BO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eAAEvB,KAAA,CAAAmB,aAAA,CAACL,IAAI,CAACc,KAAK;MAACC,IAAI,EAAE;IAAoB,CAAE;EAAE,CACtD,CACU,CAAC,eAChB7B,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACa,IAAI,EAAEZ,UAAU,CAACC;EAAM,gBAClCT,KAAA,CAAAmB,aAAA,CAACL,IAAI;IACDM,IAAI,EAAE,gBAAiB;IACvBO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eACHvB,KAAA,CAAAmB,aAAA,CAACL,IAAI,CAACgB,IAAI;MACND,IAAI,EAAE,OAAQ;MACdE,EAAE,EAAEd,MAAM,CAACe,OAAO,CAACpB,MAAM,CAACH,KAAK,CAACa,IAAI,CAAE;MACtCW,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAChBjC,KAAA,CAAAmB,aAAA,CAACb,GAAG,CAACmB,WAAW,qBACZzB,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACa,IAAI,EAAEZ,UAAU,CAACE;EAAM,gBAClCV,KAAA,CAAAmB,aAAA,CAACL,IAAI;IACDM,IAAI,EAAE,gBAAiB;IACvBO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eACHvB,KAAA,CAAAmB,aAAA,CAACL,IAAI,CAACgB,IAAI;MACND,IAAI,EAAE,OAAQ;MACdE,EAAE,EAAEd,MAAM,CAACe,OAAO,CAACpB,MAAM,CAACF,KAAK,CAACY,IAAI,CAAE;MACtCW,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CACF,CAAC,eAElBjC,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACa,IAAI,EAAEZ,UAAU,CAACG;EAAQ,gBACpCX,KAAA,CAAAmB,aAAA,CAACL,IAAI;IACDM,IAAI,EAAE,kBAAmB;IACzBO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eACHvB,KAAA,CAAAmB,aAAA,CAACL,IAAI,CAACgB,IAAI;MACND,IAAI,EAAE,UAAW;MACjBE,EAAE,EAAEd,MAAM,CAACe,OAAO,CAACpB,MAAM,CAACD,OAAO,CAACW,IAAI,CAAE;MACxCW,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CACN,CAAC;AAEtB,CAAC;AAED,OAAO,MAAMC,gBAAgB,gBAAGjC,IAAI,CAACe,yBAAyB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","memo","useRouter","AdminConfig","AdminLayout","Wcp","HasPermission","Permission","Roles","Teams","ApiKeys","Routes","SecurityPermissions","Menu","Route","AccessManagementExtension","router","createElement","name","route","List","element","title","CanUseTeams","any","parent","Group","text","Link","to","getLink","pinnable","AccessManagement"],"sources":["Extension.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { useRouter, AdminConfig, AdminLayout, Wcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { Permission } from \"~/constants.js\";\nimport { Roles } from \"~/ui/views/Roles/index.js\";\nimport { Teams } from \"~/ui/views/Teams/index.js\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { SecurityPermissions } from \"./SecurityPermissions.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nconst AccessManagementExtension = () => {\n const router = useRouter();\n\n return (\n <Fragment>\n <SecurityPermissions />\n <AdminConfig>\n <HasPermission name={Permission.Roles}>\n <Route\n route={Routes.Roles.List}\n element={\n <AdminLayout title={\"Access Management - Roles\"}>\n <Roles />\n </AdminLayout>\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Route\n route={Routes.Teams.List}\n element={\n <AdminLayout title={\"Access Management - Teams\"}>\n <Teams />\n </AdminLayout>\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n <HasPermission name={Permission.ApiKeys}>\n <Route\n route={Routes.ApiKeys.List}\n element={\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n }\n />\n </HasPermission>\n\n <HasPermission any={[Permission.Roles, Permission.ApiKeys, Permission.Teams]}>\n <Menu\n name={\"security.settings\"}\n parent={\"settings\"}\n element={<Menu.Group text={\"Access Management\"} />}\n />\n </HasPermission>\n <HasPermission name={Permission.Roles}>\n <Menu\n name={\"security.roles\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"Roles\"}\n to={router.getLink(Routes.Roles.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Menu\n name={\"security.teams\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"Teams\"}\n to={router.getLink(Routes.Teams.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n\n <HasPermission name={Permission.ApiKeys}>\n <Menu\n name={\"security.apiKeys\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"API Keys\"}\n to={router.getLink(Routes.ApiKeys.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n </AdminConfig>\n </Fragment>\n );\n};\n\nexport const AccessManagement = memo(AccessManagementExtension);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SecurityPermissions: () => React.JSX.Element;
@@ -0,0 +1,45 @@
1
+ import React, { useMemo } from "react";
2
+ import { AdminConfig, useWcp } from "@webiny/app-admin";
3
+ import { ReactComponent as PermissionsIcon } from "@webiny/icons/security.svg";
4
+ const {
5
+ Security
6
+ } = AdminConfig;
7
+ export const SecurityPermissions = () => {
8
+ const wcp = useWcp();
9
+ const teams = wcp.canUseTeams();
10
+ const schema = useMemo(() => {
11
+ const entities = [{
12
+ id: "apiKey",
13
+ title: "API Keys",
14
+ permission: "security.apiKey",
15
+ scopes: ["full"]
16
+ }, {
17
+ id: "group",
18
+ title: "Roles",
19
+ permission: "security.group",
20
+ scopes: ["full"]
21
+ }];
22
+ if (teams) {
23
+ entities.push({
24
+ id: "team",
25
+ title: "Teams",
26
+ permission: "security.team",
27
+ scopes: ["full"]
28
+ });
29
+ }
30
+ return {
31
+ prefix: "security",
32
+ fullAccess: true,
33
+ entities
34
+ };
35
+ }, [teams]);
36
+ return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Security.Permissions, {
37
+ name: "security",
38
+ title: "Security",
39
+ description: "Manage Security permissions.",
40
+ icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
41
+ schema: schema
42
+ }));
43
+ };
44
+
45
+ //# sourceMappingURL=SecurityPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","AdminConfig","useWcp","ReactComponent","PermissionsIcon","Security","SecurityPermissions","wcp","teams","canUseTeams","schema","entities","id","title","permission","scopes","push","prefix","fullAccess","createElement","Permissions","name","description","icon"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { AdminConfig, useWcp } from \"@webiny/app-admin\";\nimport type { EntityDefinition } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/security.svg\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermissions = () => {\n const wcp = useWcp();\n const teams = wcp.canUseTeams();\n\n const schema = useMemo(() => {\n const entities: EntityDefinition[] = [\n {\n id: \"apiKey\",\n title: \"API Keys\",\n permission: \"security.apiKey\",\n scopes: [\"full\"]\n },\n {\n id: \"group\",\n title: \"Roles\",\n permission: \"security.group\",\n scopes: [\"full\"]\n }\n ];\n\n if (teams) {\n entities.push({\n id: \"team\",\n title: \"Teams\",\n permission: \"security.team\",\n scopes: [\"full\"]\n });\n }\n\n return {\n prefix: \"security\",\n fullAccess: true,\n entities\n };\n }, [teams]);\n\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"security\"\n title=\"Security\"\n description=\"Manage Security permissions.\"\n icon={<PermissionsIcon />}\n schema={schema}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,WAAW,EAAEC,MAAM,QAAQ,mBAAmB;AAEvD,SAASC,cAAc,IAAIC,eAAe,QAAQ,4BAA4B;AAE9E,MAAM;EAAEC;AAAS,CAAC,GAAGJ,WAAW;AAEhC,OAAO,MAAMK,mBAAmB,GAAGA,CAAA,KAAM;EACrC,MAAMC,GAAG,GAAGL,MAAM,CAAC,CAAC;EACpB,MAAMM,KAAK,GAAGD,GAAG,CAACE,WAAW,CAAC,CAAC;EAE/B,MAAMC,MAAM,GAAGV,OAAO,CAAC,MAAM;IACzB,MAAMW,QAA4B,GAAG,CACjC;MACIC,EAAE,EAAE,QAAQ;MACZC,KAAK,EAAE,UAAU;MACjBC,UAAU,EAAE,iBAAiB;MAC7BC,MAAM,EAAE,CAAC,MAAM;IACnB,CAAC,EACD;MACIH,EAAE,EAAE,OAAO;MACXC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,gBAAgB;MAC5BC,MAAM,EAAE,CAAC,MAAM;IACnB,CAAC,CACJ;IAED,IAAIP,KAAK,EAAE;MACPG,QAAQ,CAACK,IAAI,CAAC;QACVJ,EAAE,EAAE,MAAM;QACVC,KAAK,EAAE,OAAO;QACdC,UAAU,EAAE,eAAe;QAC3BC,MAAM,EAAE,CAAC,MAAM;MACnB,CAAC,CAAC;IACN;IAEA,OAAO;MACHE,MAAM,EAAE,UAAU;MAClBC,UAAU,EAAE,IAAI;MAChBP;IACJ,CAAC;EACL,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,oBACIT,KAAA,CAAAoB,aAAA,CAAClB,WAAW,qBACRF,KAAA,CAAAoB,aAAA,CAACd,QAAQ,CAACe,WAAW;IACjBC,IAAI,EAAC,UAAU;IACfR,KAAK,EAAC,UAAU;IAChBS,WAAW,EAAC,8BAA8B;IAC1CC,IAAI,eAAExB,KAAA,CAAAoB,aAAA,CAACf,eAAe,MAAE,CAAE;IAC1BM,MAAM,EAAEA;EAAO,CAClB,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-security-access-management",
3
- "version": "0.0.0-unstable.df7a8bb475",
3
+ "version": "0.0.0-unstable.e2758ee1cf",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -15,14 +15,13 @@
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
17
  "@apollo/react-hooks": "3.1.5",
18
- "@webiny/admin-ui": "0.0.0-unstable.df7a8bb475",
19
- "@webiny/app": "0.0.0-unstable.df7a8bb475",
20
- "@webiny/app-admin": "0.0.0-unstable.df7a8bb475",
21
- "@webiny/form": "0.0.0-unstable.df7a8bb475",
22
- "@webiny/icons": "0.0.0-unstable.df7a8bb475",
23
- "@webiny/plugins": "0.0.0-unstable.df7a8bb475",
24
- "@webiny/ui": "0.0.0-unstable.df7a8bb475",
25
- "@webiny/validation": "0.0.0-unstable.df7a8bb475",
18
+ "@webiny/admin-ui": "0.0.0-unstable.e2758ee1cf",
19
+ "@webiny/app": "0.0.0-unstable.e2758ee1cf",
20
+ "@webiny/app-admin": "0.0.0-unstable.e2758ee1cf",
21
+ "@webiny/form": "0.0.0-unstable.e2758ee1cf",
22
+ "@webiny/icons": "0.0.0-unstable.e2758ee1cf",
23
+ "@webiny/ui": "0.0.0-unstable.e2758ee1cf",
24
+ "@webiny/validation": "0.0.0-unstable.e2758ee1cf",
26
25
  "graphql-tag": "2.12.6",
27
26
  "lodash": "4.17.23",
28
27
  "react": "18.2.0",
@@ -31,7 +30,7 @@
31
30
  "devDependencies": {
32
31
  "@emotion/babel-plugin": "11.13.5",
33
32
  "@types/react-helmet": "6.1.11",
34
- "@webiny/build-tools": "0.0.0-unstable.df7a8bb475",
33
+ "@webiny/build-tools": "0.0.0-unstable.e2758ee1cf",
35
34
  "rimraf": "6.1.3",
36
35
  "typescript": "5.9.3"
37
36
  },
@@ -46,5 +45,5 @@
46
45
  ]
47
46
  }
48
47
  },
49
- "gitHead": "df7a8bb4755a1da047f0af8c56bdb649cc81bf7d"
48
+ "gitHead": "e2758ee1cfa3b9a7152e9bb995a90ccabd33266f"
50
49
  }
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- import type { Identity } from "@webiny/app-admin/domain/Identity.js";
3
- interface SecurityPermissionsProps {
4
- value: Identity.Permission[];
5
- onChange: (value: Identity.Permission[]) => void;
6
- }
7
- export declare const SecurityPermissions: ({ value, onChange }: SecurityPermissionsProps) => React.JSX.Element;
8
- export {};
@@ -1,174 +0,0 @@
1
- import React, { Fragment, useCallback, useMemo } from "react";
2
- import { Grid, Cell } from "@webiny/ui/Grid/index.js";
3
- import { Select } from "@webiny/ui/Select/index.js";
4
- import { i18n } from "@webiny/app/i18n/index.js";
5
- import { useWcp, CannotUseAaclAlert, PermissionInfo, gridWithPaddingClass, PermissionsGroup } from "@webiny/app-admin";
6
- import { Form } from "@webiny/form";
7
- import { useSecurity } from "@webiny/app-admin";
8
- const t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
9
- const SECURITY = "security";
10
- const SECURITY_FULL_ACCESS = `${SECURITY}.*`;
11
- const SECURITY_GROUP_ACCESS = `${SECURITY}.group`;
12
- const SECURITY_TEAM_ACCESS = `${SECURITY}.team`;
13
- const SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;
14
- const FULL_ACCESS = "full";
15
- const NO_ACCESS = "no";
16
- const CUSTOM_ACCESS = "custom";
17
- export const SecurityPermissions = ({
18
- value,
19
- onChange
20
- }) => {
21
- const {
22
- getPermission
23
- } = useSecurity();
24
- const wcp = useWcp();
25
-
26
- // We disable form elements for custom permissions if AACL cannot be used.
27
- const cannotUseAacl = useMemo(() => {
28
- return !getPermission("aacl", true);
29
- }, []);
30
- const teams = wcp.canUseTeams();
31
- const onFormChange = useCallback(formData => {
32
- let newValue = [];
33
- if (Array.isArray(value)) {
34
- // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.
35
- newValue = value.filter(item => !item.name.startsWith(SECURITY));
36
- }
37
- const permissions = [];
38
- if (formData.accessLevel === FULL_ACCESS) {
39
- permissions.push({
40
- name: SECURITY_FULL_ACCESS
41
- });
42
- } else if (formData.accessLevel === CUSTOM_ACCESS) {
43
- if (formData.groupAccessScope === FULL_ACCESS) {
44
- permissions.push({
45
- name: SECURITY_GROUP_ACCESS
46
- });
47
- }
48
- if (formData.teamAccessScope === FULL_ACCESS) {
49
- permissions.push({
50
- name: SECURITY_TEAM_ACCESS
51
- });
52
- }
53
- if (formData.apiKeyAccessScope === FULL_ACCESS) {
54
- permissions.push({
55
- name: SECURITY_API_KEY_ACCESS
56
- });
57
- }
58
- }
59
- if (permissions && permissions.length) {
60
- newValue.push(...permissions);
61
- }
62
- onChange(newValue);
63
- }, [value]);
64
- const formData = useMemo(() => {
65
- if (!Array.isArray(value)) {
66
- return {
67
- accessLevel: NO_ACCESS
68
- };
69
- }
70
- const hasFullAccess = value.find(item => item.name === SECURITY_FULL_ACCESS || item.name === "*");
71
- if (hasFullAccess) {
72
- return {
73
- accessLevel: FULL_ACCESS
74
- };
75
- }
76
- const permissions = value.filter(item => item.name.startsWith(SECURITY));
77
- if (permissions.length === 0) {
78
- return {
79
- accessLevel: NO_ACCESS
80
- };
81
- }
82
- const data = {
83
- accessLevel: CUSTOM_ACCESS,
84
- groupAccessScope: NO_ACCESS,
85
- teamAccessScope: NO_ACCESS,
86
- apiKeyAccessScope: NO_ACCESS
87
- };
88
- const hasGroupAccess = permissions.find(item => item.name === SECURITY_GROUP_ACCESS);
89
- if (hasGroupAccess) {
90
- data.groupAccessScope = FULL_ACCESS;
91
- }
92
- const hasTeamAccess = permissions.find(item => item.name === SECURITY_TEAM_ACCESS);
93
- if (hasTeamAccess) {
94
- data.teamAccessScope = FULL_ACCESS;
95
- }
96
- const hasApiKeyAccess = permissions.find(item => item.name === SECURITY_API_KEY_ACCESS);
97
- if (hasApiKeyAccess) {
98
- data.apiKeyAccessScope = FULL_ACCESS;
99
- }
100
- return data;
101
- }, []);
102
- return /*#__PURE__*/React.createElement(Form, {
103
- data: formData,
104
- onChange: onFormChange
105
- }, ({
106
- data,
107
- Bind
108
- }) => {
109
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, {
110
- className: gridWithPaddingClass
111
- }, /*#__PURE__*/React.createElement(Cell, {
112
- span: 12
113
- }, data.accessLevel === "custom" && cannotUseAacl && /*#__PURE__*/React.createElement(CannotUseAaclAlert, null))), /*#__PURE__*/React.createElement(Grid, {
114
- className: gridWithPaddingClass
115
- }, /*#__PURE__*/React.createElement(Cell, {
116
- span: 6
117
- }, /*#__PURE__*/React.createElement(PermissionInfo, {
118
- title: t`Access Level`
119
- })), /*#__PURE__*/React.createElement(Cell, {
120
- span: 6
121
- }, /*#__PURE__*/React.createElement(Bind, {
122
- name: "accessLevel"
123
- }, /*#__PURE__*/React.createElement(Select, null, /*#__PURE__*/React.createElement("option", {
124
- value: NO_ACCESS
125
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
126
- value: FULL_ACCESS
127
- }, t`Full access`), /*#__PURE__*/React.createElement("option", {
128
- value: CUSTOM_ACCESS
129
- }, t`Custom access`))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/React.createElement("div", {
130
- className: "mt-lg"
131
- }, /*#__PURE__*/React.createElement(PermissionsGroup, {
132
- title: t`API Keys`
133
- }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
134
- span: 12
135
- }, /*#__PURE__*/React.createElement(Bind, {
136
- name: "apiKeyAccessScope"
137
- }, /*#__PURE__*/React.createElement(Select, {
138
- label: t`Access Scope`,
139
- disabled: cannotUseAacl
140
- }, /*#__PURE__*/React.createElement("option", {
141
- value: NO_ACCESS
142
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
143
- value: FULL_ACCESS
144
- }, t`Full access`)))))), /*#__PURE__*/React.createElement(PermissionsGroup, {
145
- title: t`Roles`
146
- }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
147
- span: 12
148
- }, /*#__PURE__*/React.createElement(Bind, {
149
- name: "groupAccessScope"
150
- }, /*#__PURE__*/React.createElement(Select, {
151
- label: t`Access Scope`,
152
- disabled: cannotUseAacl
153
- }, /*#__PURE__*/React.createElement("option", {
154
- value: NO_ACCESS
155
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
156
- value: FULL_ACCESS
157
- }, t`Full access`)))))), teams && /*#__PURE__*/React.createElement(PermissionsGroup, {
158
- title: t`Teams`
159
- }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
160
- span: 12
161
- }, /*#__PURE__*/React.createElement(Bind, {
162
- name: "teamAccessScope"
163
- }, /*#__PURE__*/React.createElement(Select, {
164
- label: t`Access Scope`,
165
- disabled: cannotUseAacl
166
- }, /*#__PURE__*/React.createElement("option", {
167
- value: NO_ACCESS
168
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
169
- value: FULL_ACCESS
170
- }, t`Full access`))))))));
171
- });
172
- };
173
-
174
- //# sourceMappingURL=SecurityPermissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Fragment","useCallback","useMemo","Grid","Cell","Select","i18n","useWcp","CannotUseAaclAlert","PermissionInfo","gridWithPaddingClass","PermissionsGroup","Form","useSecurity","t","ns","SECURITY","SECURITY_FULL_ACCESS","SECURITY_GROUP_ACCESS","SECURITY_TEAM_ACCESS","SECURITY_API_KEY_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","SecurityPermissions","value","onChange","getPermission","wcp","cannotUseAacl","teams","canUseTeams","onFormChange","formData","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","groupAccessScope","teamAccessScope","apiKeyAccessScope","length","hasFullAccess","find","data","hasGroupAccess","hasTeamAccess","hasApiKeyAccess","createElement","Bind","className","span","title","label","disabled"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid/index.js\";\nimport { Select } from \"@webiny/ui/Select/index.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport {\n useWcp,\n CannotUseAaclAlert,\n PermissionInfo,\n gridWithPaddingClass,\n PermissionsGroup,\n type AaclPermission\n} from \"@webiny/app-admin\";\nimport { Form } from \"@webiny/form\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport type { Identity } from \"@webiny/app-admin/domain/Identity.js\";\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_TEAM_ACCESS = `${SECURITY}.team`;\nconst SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface SecurityPermissionsProps {\n value: Identity.Permission[];\n onChange: (value: Identity.Permission[]) => void;\n}\n\nexport const SecurityPermissions = ({ value, onChange }: SecurityPermissionsProps) => {\n const { getPermission } = useSecurity();\n const wcp = useWcp();\n\n // We disable form elements for custom permissions if AACL cannot be used.\n const cannotUseAacl = useMemo(() => {\n return !getPermission<AaclPermission>(\"aacl\", true);\n }, []);\n\n const teams = wcp.canUseTeams();\n\n const onFormChange = useCallback(\n (formData: Identity.Permission) => {\n let newValue: Identity.Permission[] = [];\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 (formData.accessLevel === FULL_ACCESS) {\n permissions.push({ name: SECURITY_FULL_ACCESS });\n } else if (formData.accessLevel === CUSTOM_ACCESS) {\n if (formData.groupAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_GROUP_ACCESS });\n }\n\n if (formData.teamAccessScope === FULL_ACCESS) {\n permissions.push({ name: SECURITY_TEAM_ACCESS });\n }\n\n if (formData.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 teamAccessScope: 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 const hasTeamAccess = permissions.find(item => item.name === SECURITY_TEAM_ACCESS);\n if (hasTeamAccess) {\n data.teamAccessScope = 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={gridWithPaddingClass}>\n <Cell span={12}>\n {data.accessLevel === \"custom\" && cannotUseAacl && (\n <CannotUseAaclAlert />\n )}\n </Cell>\n </Grid>\n <Grid className={gridWithPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select>\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 <div className={\"mt-lg\"}>\n <PermissionsGroup title={t`API Keys`}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"apiKeyAccessScope\"}>\n <Select\n label={t`Access Scope`}\n disabled={cannotUseAacl}\n >\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 </PermissionsGroup>\n <PermissionsGroup title={t`Roles`}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"groupAccessScope\"}>\n <Select\n label={t`Access Scope`}\n disabled={cannotUseAacl}\n >\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 </PermissionsGroup>\n {teams && (\n <PermissionsGroup title={t`Teams`}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"teamAccessScope\"}>\n <Select\n label={t`Access Scope`}\n disabled={cannotUseAacl}\n >\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 </PermissionsGroup>\n )}\n </div>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin.js";
2
- export declare const permissionRendererPlugin: PermissionRendererPlugin;
@@ -1,22 +0,0 @@
1
- import React from "react";
2
- import { i18n } from "@webiny/app/i18n/index.js";
3
- import { Accordion } from "@webiny/admin-ui";
4
- import { ReactComponent as PermissionsIcon } from "@webiny/icons/security.svg";
5
- import { SecurityPermissions } from "./SecurityPermissions.js";
6
- import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin.js";
7
- const t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
8
- export const permissionRendererPlugin = new PermissionRendererPlugin({
9
- render(props) {
10
- return /*#__PURE__*/React.createElement(Accordion.Item, {
11
- icon: /*#__PURE__*/React.createElement(Accordion.Item.Icon, {
12
- icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
13
- label: "Security Permissions"
14
- }),
15
- title: t`Security`,
16
- description: t`Manage Security app access permissions.`,
17
- "data-testid": "permission.security"
18
- }, /*#__PURE__*/React.createElement(SecurityPermissions, props));
19
- }
20
- });
21
-
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","i18n","Accordion","ReactComponent","PermissionsIcon","SecurityPermissions","PermissionRendererPlugin","t","ns","permissionRendererPlugin","render","props","createElement","Item","icon","Icon","label","title","description"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/security.svg\";\nimport { SecurityPermissions } from \"./SecurityPermissions.js\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin.js\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nexport const permissionRendererPlugin = new PermissionRendererPlugin({\n render(props) {\n return (\n <Accordion.Item\n icon={\n <Accordion.Item.Icon\n icon={<PermissionsIcon />}\n label={\"Security Permissions\"}\n />\n }\n title={t`Security`}\n description={t`Manage Security app access permissions.`}\n data-testid={\"permission.security\"}\n >\n <SecurityPermissions {...props} />\n </Accordion.Item>\n );\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,cAAc,IAAIC,eAAe,QAAQ,4BAA4B;AAC9E,SAASC,mBAAmB;AAC5B,SAASC,wBAAwB,QAAQ,uDAAuD;AAEhG,MAAMC,CAAC,GAAGN,IAAI,CAACO,EAAE,CAAC,qDAAqD,CAAC;AAExE,OAAO,MAAMC,wBAAwB,GAAG,IAAIH,wBAAwB,CAAC;EACjEI,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIX,KAAA,CAAAY,aAAA,CAACV,SAAS,CAACW,IAAI;MACXC,IAAI,eACAd,KAAA,CAAAY,aAAA,CAACV,SAAS,CAACW,IAAI,CAACE,IAAI;QAChBD,IAAI,eAAEd,KAAA,CAAAY,aAAA,CAACR,eAAe,MAAE,CAAE;QAC1BY,KAAK,EAAE;MAAuB,CACjC,CACJ;MACDC,KAAK,EAAEV,CAAC,UAAW;MACnBW,WAAW,EAAEX,CAAC,yCAA0C;MACxD,eAAa;IAAsB,gBAEnCP,KAAA,CAAAY,aAAA,CAACP,mBAAmB,EAAKM,KAAQ,CACrB,CAAC;EAEzB;AACJ,CAAC,CAAC","ignoreList":[]}
File without changes
File without changes
File without changes