@webiny/cognito 0.0.0-unstable.df7a8bb475 → 6.0.0-rc.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.
package/admin/Cognito.js CHANGED
@@ -1,13 +1,12 @@
1
1
  import React, { Fragment, memo } from "react";
2
2
  import { AdminConfig, AdminLayout } from "@webiny/app-admin";
3
- import { plugins } from "@webiny/plugins";
4
3
  import { HasPermission } from "@webiny/app-admin";
5
4
  import { useRouter } from "@webiny/app-admin";
6
5
  import { Permission } from "./plugins/constants.js";
7
6
  import { UsersView } from "./ui/views/Users/UsersView.js";
8
7
  import { UserAccountForm } from "./ui/views/Account/index.js";
9
8
  import { AccountDetails } from "./plugins/userMenu/AccountDetails.js";
10
- import permissionRenderer from "./plugins/permissionRenderer/index.js";
9
+ import { SecurityPermission } from "./SecurityPermission.js";
11
10
  import { CognitoLogin } from "./CognitoLogin.js";
12
11
  import { Routes } from "./routes.js";
13
12
  const {
@@ -18,8 +17,7 @@ const CognitoIdP = props => {
18
17
  const {
19
18
  getLink
20
19
  } = useRouter();
21
- plugins.register([permissionRenderer]);
22
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(CognitoLogin, props.login), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
20
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SecurityPermission, null), /*#__PURE__*/React.createElement(CognitoLogin, props.login), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
23
21
  name: Permission.Users
24
22
  }, /*#__PURE__*/React.createElement(Route, {
25
23
  route: Routes.Users.List,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Fragment","memo","AdminConfig","AdminLayout","plugins","HasPermission","useRouter","Permission","UsersView","UserAccountForm","AccountDetails","permissionRenderer","CognitoLogin","Routes","Route","Menu","CognitoIdP","props","getLink","register","createElement","login","name","Users","route","List","element","title","Account","parent","after","Link","text","to","pinnable","User","accountRoute","CognitoAdmin"],"sources":["Cognito.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { plugins } from \"@webiny/plugins\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Permission } from \"./plugins/constants.js\";\nimport { UsersView } from \"./ui/views/Users/UsersView.js\";\nimport { UserAccountForm } from \"./ui/views/Account/index.js\";\nimport { AccountDetails } from \"./plugins/userMenu/AccountDetails.js\";\nimport permissionRenderer from \"./plugins/permissionRenderer/index.js\";\nimport { CognitoLogin, type CognitoLoginProps } from \"./CognitoLogin.js\";\nimport { Routes } from \"./routes.js\";\n\nconst { Route, Menu } = AdminConfig;\n\nexport interface CognitoAdminProps {\n login: CognitoLoginProps;\n}\n\nconst CognitoIdP = (props: CognitoAdminProps) => {\n const { getLink } = useRouter();\n\n plugins.register([permissionRenderer]);\n\n return (\n <Fragment>\n <CognitoLogin {...props.login} />\n <AdminConfig>\n <HasPermission name={Permission.Users}>\n <Route\n route={Routes.Users.List}\n element={\n <AdminLayout title={\"Admin Users\"}>\n <UsersView />\n </AdminLayout>\n }\n />\n\n <Route\n route={Routes.Users.Account}\n element={\n <AdminLayout title={\"User Account\"}>\n <UserAccountForm />\n </AdminLayout>\n }\n />\n\n <Menu\n name={\"cognito.settings.adminUsers\"}\n parent={\"settings\"}\n after={\"security.settings\"}\n element={\n <Menu.Link\n text={\"Users\"}\n to={getLink(Routes.Users.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n\n <Menu.User\n name={\"accountSettings\"}\n after={\"userInfo\"}\n element={<AccountDetails accountRoute={getLink(Routes.Users.Account)} />}\n />\n </AdminConfig>\n </Fragment>\n );\n};\n\nexport const CognitoAdmin = memo(CognitoIdP);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,IAAI,QAAQ,OAAO;AAC7C,SAASC,WAAW,EAAEC,WAAW,QAAQ,mBAAmB;AAC5D,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,UAAU;AACnB,SAASC,SAAS;AAClB,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,OAAOC,kBAAkB;AACzB,SAASC,YAAY;AACrB,SAASC,MAAM;AAEf,MAAM;EAAEC,KAAK;EAAEC;AAAK,CAAC,GAAGb,WAAW;AAMnC,MAAMc,UAAU,GAAIC,KAAwB,IAAK;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAGZ,SAAS,CAAC,CAAC;EAE/BF,OAAO,CAACe,QAAQ,CAAC,CAACR,kBAAkB,CAAC,CAAC;EAEtC,oBACIZ,KAAA,CAAAqB,aAAA,CAACpB,QAAQ,qBACLD,KAAA,CAAAqB,aAAA,CAACR,YAAY,EAAKK,KAAK,CAACI,KAAQ,CAAC,eACjCtB,KAAA,CAAAqB,aAAA,CAAClB,WAAW,qBACRH,KAAA,CAAAqB,aAAA,CAACf,aAAa;IAACiB,IAAI,EAAEf,UAAU,CAACgB;EAAM,gBAClCxB,KAAA,CAAAqB,aAAA,CAACN,KAAK;IACFU,KAAK,EAAEX,MAAM,CAACU,KAAK,CAACE,IAAK;IACzBC,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACjB,WAAW;MAACwB,KAAK,EAAE;IAAc,gBAC9B5B,KAAA,CAAAqB,aAAA,CAACZ,SAAS,MAAE,CACH;EAChB,CACJ,CAAC,eAEFT,KAAA,CAAAqB,aAAA,CAACN,KAAK;IACFU,KAAK,EAAEX,MAAM,CAACU,KAAK,CAACK,OAAQ;IAC5BF,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACjB,WAAW;MAACwB,KAAK,EAAE;IAAe,gBAC/B5B,KAAA,CAAAqB,aAAA,CAACX,eAAe,MAAE,CACT;EAChB,CACJ,CAAC,eAEFV,KAAA,CAAAqB,aAAA,CAACL,IAAI;IACDO,IAAI,EAAE,6BAA8B;IACpCO,MAAM,EAAE,UAAW;IACnBC,KAAK,EAAE,mBAAoB;IAC3BJ,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACL,IAAI,CAACgB,IAAI;MACNC,IAAI,EAAE,OAAQ;MACdC,EAAE,EAAEf,OAAO,CAACL,MAAM,CAACU,KAAK,CAACE,IAAI,CAAE;MAC/BS,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAEhBnC,KAAA,CAAAqB,aAAA,CAACL,IAAI,CAACoB,IAAI;IACNb,IAAI,EAAE,iBAAkB;IACxBQ,KAAK,EAAE,UAAW;IAClBJ,OAAO,eAAE3B,KAAA,CAAAqB,aAAA,CAACV,cAAc;MAAC0B,YAAY,EAAElB,OAAO,CAACL,MAAM,CAACU,KAAK,CAACK,OAAO;IAAE,CAAE;EAAE,CAC5E,CACQ,CACP,CAAC;AAEnB,CAAC;AAED,OAAO,MAAMS,YAAY,gBAAGpC,IAAI,CAACe,UAAU,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","memo","AdminConfig","AdminLayout","HasPermission","useRouter","Permission","UsersView","UserAccountForm","AccountDetails","SecurityPermission","CognitoLogin","Routes","Route","Menu","CognitoIdP","props","getLink","createElement","login","name","Users","route","List","element","title","Account","parent","after","Link","text","to","pinnable","User","accountRoute","CognitoAdmin"],"sources":["Cognito.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Permission } from \"./plugins/constants.js\";\nimport { UsersView } from \"./ui/views/Users/UsersView.js\";\nimport { UserAccountForm } from \"./ui/views/Account/index.js\";\nimport { AccountDetails } from \"./plugins/userMenu/AccountDetails.js\";\nimport { SecurityPermission } from \"./SecurityPermission.js\";\nimport { CognitoLogin, type CognitoLoginProps } from \"./CognitoLogin.js\";\nimport { Routes } from \"./routes.js\";\n\nconst { Route, Menu } = AdminConfig;\n\nexport interface CognitoAdminProps {\n login: CognitoLoginProps;\n}\n\nconst CognitoIdP = (props: CognitoAdminProps) => {\n const { getLink } = useRouter();\n\n return (\n <Fragment>\n <SecurityPermission />\n <CognitoLogin {...props.login} />\n <AdminConfig>\n <HasPermission name={Permission.Users}>\n <Route\n route={Routes.Users.List}\n element={\n <AdminLayout title={\"Admin Users\"}>\n <UsersView />\n </AdminLayout>\n }\n />\n\n <Route\n route={Routes.Users.Account}\n element={\n <AdminLayout title={\"User Account\"}>\n <UserAccountForm />\n </AdminLayout>\n }\n />\n\n <Menu\n name={\"cognito.settings.adminUsers\"}\n parent={\"settings\"}\n after={\"security.settings\"}\n element={\n <Menu.Link\n text={\"Users\"}\n to={getLink(Routes.Users.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n\n <Menu.User\n name={\"accountSettings\"}\n after={\"userInfo\"}\n element={<AccountDetails accountRoute={getLink(Routes.Users.Account)} />}\n />\n </AdminConfig>\n </Fragment>\n );\n};\n\nexport const CognitoAdmin = memo(CognitoIdP);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,IAAI,QAAQ,OAAO;AAC7C,SAASC,WAAW,EAAEC,WAAW,QAAQ,mBAAmB;AAC5D,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,UAAU;AACnB,SAASC,SAAS;AAClB,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AACrB,SAASC,MAAM;AAEf,MAAM;EAAEC,KAAK;EAAEC;AAAK,CAAC,GAAGZ,WAAW;AAMnC,MAAMa,UAAU,GAAIC,KAAwB,IAAK;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAGZ,SAAS,CAAC,CAAC;EAE/B,oBACIN,KAAA,CAAAmB,aAAA,CAAClB,QAAQ,qBACLD,KAAA,CAAAmB,aAAA,CAACR,kBAAkB,MAAE,CAAC,eACtBX,KAAA,CAAAmB,aAAA,CAACP,YAAY,EAAKK,KAAK,CAACG,KAAQ,CAAC,eACjCpB,KAAA,CAAAmB,aAAA,CAAChB,WAAW,qBACRH,KAAA,CAAAmB,aAAA,CAACd,aAAa;IAACgB,IAAI,EAAEd,UAAU,CAACe;EAAM,gBAClCtB,KAAA,CAAAmB,aAAA,CAACL,KAAK;IACFS,KAAK,EAAEV,MAAM,CAACS,KAAK,CAACE,IAAK;IACzBC,OAAO,eACHzB,KAAA,CAAAmB,aAAA,CAACf,WAAW;MAACsB,KAAK,EAAE;IAAc,gBAC9B1B,KAAA,CAAAmB,aAAA,CAACX,SAAS,MAAE,CACH;EAChB,CACJ,CAAC,eAEFR,KAAA,CAAAmB,aAAA,CAACL,KAAK;IACFS,KAAK,EAAEV,MAAM,CAACS,KAAK,CAACK,OAAQ;IAC5BF,OAAO,eACHzB,KAAA,CAAAmB,aAAA,CAACf,WAAW;MAACsB,KAAK,EAAE;IAAe,gBAC/B1B,KAAA,CAAAmB,aAAA,CAACV,eAAe,MAAE,CACT;EAChB,CACJ,CAAC,eAEFT,KAAA,CAAAmB,aAAA,CAACJ,IAAI;IACDM,IAAI,EAAE,6BAA8B;IACpCO,MAAM,EAAE,UAAW;IACnBC,KAAK,EAAE,mBAAoB;IAC3BJ,OAAO,eACHzB,KAAA,CAAAmB,aAAA,CAACJ,IAAI,CAACe,IAAI;MACNC,IAAI,EAAE,OAAQ;MACdC,EAAE,EAAEd,OAAO,CAACL,MAAM,CAACS,KAAK,CAACE,IAAI,CAAE;MAC/BS,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAEhBjC,KAAA,CAAAmB,aAAA,CAACJ,IAAI,CAACmB,IAAI;IACNb,IAAI,EAAE,iBAAkB;IACxBQ,KAAK,EAAE,UAAW;IAClBJ,OAAO,eAAEzB,KAAA,CAAAmB,aAAA,CAACT,cAAc;MAACyB,YAAY,EAAEjB,OAAO,CAACL,MAAM,CAACS,KAAK,CAACK,OAAO;IAAE,CAAE;EAAE,CAC5E,CACQ,CACP,CAAC;AAEnB,CAAC;AAED,OAAO,MAAMS,YAAY,gBAAGlC,IAAI,CAACc,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SecurityPermission: () => React.JSX.Element;
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import { AdminConfig } from "@webiny/app-admin";
3
+ import { ReactComponent as PermissionsIcon } from "@webiny/icons/group.svg";
4
+ const {
5
+ Security
6
+ } = AdminConfig;
7
+ export const SecurityPermission = () => {
8
+ return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Security.Permissions, {
9
+ name: "admin-users",
10
+ title: "Admin Users",
11
+ description: "Manage Admin Users permissions.",
12
+ icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
13
+ schema: {
14
+ prefix: "adminUsers",
15
+ fullAccess: {
16
+ name: "adminUsers.*"
17
+ },
18
+ entities: [{
19
+ id: "user",
20
+ title: "Users",
21
+ permission: "adminUsers.user",
22
+ scopes: ["full"]
23
+ }]
24
+ }
25
+ }));
26
+ };
27
+
28
+ //# sourceMappingURL=SecurityPermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","AdminConfig","ReactComponent","PermissionsIcon","Security","SecurityPermission","createElement","Permissions","name","title","description","icon","schema","prefix","fullAccess","entities","id","permission","scopes"],"sources":["SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/group.svg\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"admin-users\"\n title=\"Admin Users\"\n description=\"Manage Admin Users permissions.\"\n icon={<PermissionsIcon />}\n schema={{\n prefix: \"adminUsers\",\n fullAccess: { name: \"adminUsers.*\" },\n entities: [\n {\n id: \"user\",\n title: \"Users\",\n permission: \"adminUsers.user\",\n scopes: [\"full\"]\n }\n ]\n }}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,cAAc,IAAIC,eAAe,QAAQ,yBAAyB;AAE3E,MAAM;EAAEC;AAAS,CAAC,GAAGH,WAAW;AAEhC,OAAO,MAAMI,kBAAkB,GAAGA,CAAA,KAAM;EACpC,oBACIL,KAAA,CAAAM,aAAA,CAACL,WAAW,qBACRD,KAAA,CAAAM,aAAA,CAACF,QAAQ,CAACG,WAAW;IACjBC,IAAI,EAAC,aAAa;IAClBC,KAAK,EAAC,aAAa;IACnBC,WAAW,EAAC,iCAAiC;IAC7CC,IAAI,eAAEX,KAAA,CAAAM,aAAA,CAACH,eAAe,MAAE,CAAE;IAC1BS,MAAM,EAAE;MACJC,MAAM,EAAE,YAAY;MACpBC,UAAU,EAAE;QAAEN,IAAI,EAAE;MAAe,CAAC;MACpCO,QAAQ,EAAE,CACN;QACIC,EAAE,EAAE,MAAM;QACVP,KAAK,EAAE,OAAO;QACdQ,UAAU,EAAE,iBAAiB;QAC7BC,MAAM,EAAE,CAAC,MAAM;MACnB,CAAC;IAET;EAAE,CACL,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/cognito",
3
- "version": "0.0.0-unstable.df7a8bb475",
3
+ "version": "6.0.0-rc.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -9,22 +9,21 @@
9
9
  "author": "Webiny Ltd.",
10
10
  "dependencies": {
11
11
  "@apollo/react-hooks": "3.1.5",
12
- "@aws-amplify/auth": "5.6.17",
13
- "@webiny/admin-ui": "0.0.0-unstable.df7a8bb475",
14
- "@webiny/api-core": "0.0.0-unstable.df7a8bb475",
15
- "@webiny/app": "0.0.0-unstable.df7a8bb475",
16
- "@webiny/app-admin": "0.0.0-unstable.df7a8bb475",
17
- "@webiny/aws-sdk": "0.0.0-unstable.df7a8bb475",
12
+ "@aws-amplify/auth": "5.6.18",
13
+ "@webiny/admin-ui": "6.0.0-rc.0",
14
+ "@webiny/api-core": "6.0.0-rc.0",
15
+ "@webiny/app": "6.0.0-rc.0",
16
+ "@webiny/app-admin": "6.0.0-rc.0",
17
+ "@webiny/aws-sdk": "6.0.0-rc.0",
18
18
  "@webiny/di": "*",
19
- "@webiny/feature": "0.0.0-unstable.df7a8bb475",
20
- "@webiny/form": "0.0.0-unstable.df7a8bb475",
21
- "@webiny/handler-graphql": "0.0.0-unstable.df7a8bb475",
22
- "@webiny/icons": "0.0.0-unstable.df7a8bb475",
23
- "@webiny/plugins": "0.0.0-unstable.df7a8bb475",
24
- "@webiny/project": "0.0.0-unstable.df7a8bb475",
25
- "@webiny/project-aws": "0.0.0-unstable.df7a8bb475",
26
- "@webiny/ui": "0.0.0-unstable.df7a8bb475",
27
- "@webiny/validation": "0.0.0-unstable.df7a8bb475",
19
+ "@webiny/feature": "6.0.0-rc.0",
20
+ "@webiny/form": "6.0.0-rc.0",
21
+ "@webiny/handler-graphql": "6.0.0-rc.0",
22
+ "@webiny/icons": "6.0.0-rc.0",
23
+ "@webiny/project": "6.0.0-rc.0",
24
+ "@webiny/project-aws": "6.0.0-rc.0",
25
+ "@webiny/ui": "6.0.0-rc.0",
26
+ "@webiny/validation": "6.0.0-rc.0",
28
27
  "graphql": "16.12.0",
29
28
  "graphql-tag": "2.12.6",
30
29
  "jsonwebtoken": "9.0.3",
@@ -36,14 +35,14 @@
36
35
  },
37
36
  "devDependencies": {
38
37
  "@types/react": "18.2.79",
39
- "@webiny/build-tools": "0.0.0-unstable.df7a8bb475",
40
- "@webiny/project-utils": "0.0.0-unstable.df7a8bb475",
41
- "@webiny/wcp": "0.0.0-unstable.df7a8bb475",
42
- "vitest": "3.2.4"
38
+ "@webiny/build-tools": "6.0.0-rc.0",
39
+ "@webiny/project-utils": "6.0.0-rc.0",
40
+ "@webiny/wcp": "6.0.0-rc.0",
41
+ "vitest": "4.0.18"
43
42
  },
44
43
  "publishConfig": {
45
44
  "access": "public",
46
45
  "directory": "dist"
47
46
  },
48
- "gitHead": "df7a8bb4755a1da047f0af8c56bdb649cc81bf7d"
47
+ "gitHead": "0f2aa699f4642e550ab62c96fcd050e8d02345c9"
49
48
  }
@@ -1,7 +0,0 @@
1
- import React from "react";
2
- import type { Identity } from "@webiny/app-admin/domain/Identity.js";
3
- export interface AdminUsersPermissionsProps {
4
- value: Identity.Permission[];
5
- onChange: (value: Identity.Permission[]) => void;
6
- }
7
- export declare const AdminUsersPermissions: ({ value, onChange }: AdminUsersPermissionsProps) => React.JSX.Element;
@@ -1,129 +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 { 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 ADMIN_USERS = "adminUsers";
10
- const ADMIN_USERS_FULL_ACCESS = `${ADMIN_USERS}.*`;
11
- const ADMIN_USERS_USER_ACCESS = `${ADMIN_USERS}.user`;
12
- const FULL_ACCESS = "full";
13
- const NO_ACCESS = "no";
14
- const CUSTOM_ACCESS = "custom";
15
- export const AdminUsersPermissions = ({
16
- value,
17
- onChange
18
- }) => {
19
- const {
20
- getPermission
21
- } = useSecurity();
22
-
23
- // We disable form elements for custom permissions if AACL cannot be used.
24
- const cannotUseAAcl = useMemo(() => {
25
- return !getPermission("aacl", true);
26
- }, []);
27
- const onFormChange = useCallback(data => {
28
- let newValue = [];
29
- if (Array.isArray(value)) {
30
- // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.
31
- newValue = value.filter(item => !item.name.startsWith(ADMIN_USERS));
32
- }
33
- const permissions = [];
34
- if (data.accessLevel === FULL_ACCESS) {
35
- permissions.push({
36
- name: ADMIN_USERS_FULL_ACCESS
37
- });
38
- } else if (data.accessLevel === CUSTOM_ACCESS) {
39
- if (data.userAccessScope === FULL_ACCESS) {
40
- permissions.push({
41
- name: ADMIN_USERS_USER_ACCESS
42
- });
43
- }
44
- }
45
- if (permissions && permissions.length) {
46
- newValue.push(...permissions);
47
- }
48
- onChange(newValue);
49
- }, [value]);
50
- const formData = useMemo(() => {
51
- if (!Array.isArray(value)) {
52
- return {
53
- accessLevel: NO_ACCESS
54
- };
55
- }
56
- const hasFullAccess = value.find(item => item.name === ADMIN_USERS_FULL_ACCESS || item.name === "*");
57
- if (hasFullAccess) {
58
- return {
59
- accessLevel: FULL_ACCESS
60
- };
61
- }
62
- const permissions = value.filter(item => item.name.startsWith(ADMIN_USERS));
63
- if (permissions.length === 0) {
64
- return {
65
- accessLevel: NO_ACCESS
66
- };
67
- }
68
- const data = {
69
- accessLevel: CUSTOM_ACCESS,
70
- userAccessScope: NO_ACCESS
71
- };
72
- const hasUserAccess = permissions.find(item => item.name === ADMIN_USERS_USER_ACCESS);
73
- if (hasUserAccess) {
74
- data.userAccessScope = FULL_ACCESS;
75
- }
76
- return data;
77
- }, []);
78
- return /*#__PURE__*/React.createElement(Form, {
79
- data: formData,
80
- onChange: onFormChange
81
- }, ({
82
- data,
83
- Bind
84
- }) => {
85
- const disableUserAccessScope = data.groupAccessScope === NO_ACCESS;
86
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, {
87
- className: gridWithPaddingClass
88
- }, /*#__PURE__*/React.createElement(Cell, {
89
- span: 12
90
- }, data.accessLevel === "custom" && cannotUseAAcl && /*#__PURE__*/React.createElement(CannotUseAaclAlert, null))), /*#__PURE__*/React.createElement(Grid, {
91
- className: gridWithPaddingClass
92
- }, /*#__PURE__*/React.createElement(Cell, {
93
- span: 6
94
- }, /*#__PURE__*/React.createElement(PermissionInfo, {
95
- title: t`Access Level`
96
- })), /*#__PURE__*/React.createElement(Cell, {
97
- span: 6
98
- }, /*#__PURE__*/React.createElement(Bind, {
99
- name: "accessLevel"
100
- }, /*#__PURE__*/React.createElement(Select, null, /*#__PURE__*/React.createElement("option", {
101
- value: NO_ACCESS
102
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
103
- value: FULL_ACCESS
104
- }, t`Full access`), /*#__PURE__*/React.createElement("option", {
105
- value: CUSTOM_ACCESS
106
- }, t`Custom access`))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/React.createElement("div", {
107
- className: "mt-lg"
108
- }, /*#__PURE__*/React.createElement(PermissionsGroup, {
109
- title: t`Users`
110
- }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
111
- span: 12
112
- }, /*#__PURE__*/React.createElement(Bind, {
113
- name: "userAccessScope"
114
- }, ({
115
- value,
116
- ...props
117
- }) => /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {
118
- label: t`Access Scope`,
119
- disabled: cannotUseAAcl || disableUserAccessScope,
120
- value: disableUserAccessScope ? NO_ACCESS : value
121
- }), /*#__PURE__*/React.createElement("option", {
122
- value: NO_ACCESS
123
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
124
- value: FULL_ACCESS
125
- }, t`Full access`))))))));
126
- });
127
- };
128
-
129
- //# sourceMappingURL=AdminUsersPermissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Fragment","useCallback","useMemo","Grid","Cell","Select","i18n","CannotUseAaclAlert","PermissionInfo","gridWithPaddingClass","PermissionsGroup","Form","useSecurity","t","ns","ADMIN_USERS","ADMIN_USERS_FULL_ACCESS","ADMIN_USERS_USER_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","AdminUsersPermissions","value","onChange","getPermission","cannotUseAAcl","onFormChange","data","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","userAccessScope","length","formData","hasFullAccess","find","hasUserAccess","createElement","Bind","disableUserAccessScope","groupAccessScope","className","span","title","props","Object","assign","label","disabled"],"sources":["AdminUsersPermissions.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 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 ADMIN_USERS = \"adminUsers\";\nconst ADMIN_USERS_FULL_ACCESS = `${ADMIN_USERS}.*`;\nconst ADMIN_USERS_USER_ACCESS = `${ADMIN_USERS}.user`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\nexport interface AdminUsersPermissionsProps {\n value: Identity.Permission[];\n onChange: (value: Identity.Permission[]) => void;\n}\n\ninterface OnFormChangeCallable {\n (data: Identity.Permission): void;\n}\n\nexport const AdminUsersPermissions = ({ value, onChange }: AdminUsersPermissionsProps) => {\n const { getPermission } = useSecurity();\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 onFormChange = useCallback<OnFormChangeCallable>(\n data => {\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(ADMIN_USERS));\n }\n\n const permissions = [];\n if (data.accessLevel === FULL_ACCESS) {\n permissions.push({ name: ADMIN_USERS_FULL_ACCESS });\n } else if (data.accessLevel === CUSTOM_ACCESS) {\n if (data.userAccessScope === FULL_ACCESS) {\n permissions.push({ name: ADMIN_USERS_USER_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 === ADMIN_USERS_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(ADMIN_USERS));\n if (permissions.length === 0) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data = {\n accessLevel: CUSTOM_ACCESS,\n userAccessScope: NO_ACCESS\n };\n\n const hasUserAccess = permissions.find(item => item.name === ADMIN_USERS_USER_ACCESS);\n if (hasUserAccess) {\n data.userAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => {\n const disableUserAccessScope = data.groupAccessScope === NO_ACCESS;\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`Users`}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"userAccessScope\"}>\n {({ value, ...props }) => (\n <Select\n {...props}\n label={t`Access Scope`}\n disabled={\n cannotUseAAcl || disableUserAccessScope\n }\n value={\n disableUserAccessScope\n ? NO_ACCESS\n : value\n }\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 )}\n </Bind>\n </Cell>\n </Grid>\n </PermissionsGroup>\n </div>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin.js";
2
- declare const _default: PermissionRendererPlugin;
3
- export default _default;
@@ -1,20 +0,0 @@
1
- import React from "react";
2
- import { Accordion } from "@webiny/admin-ui";
3
- import { ReactComponent as PermissionsIcon } from "@webiny/icons/group.svg";
4
- import { AdminUsersPermissions } from "./AdminUsersPermissions.js";
5
- import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin.js";
6
- export default new PermissionRendererPlugin({
7
- render(props) {
8
- return /*#__PURE__*/React.createElement(Accordion.Item, {
9
- icon: /*#__PURE__*/React.createElement(Accordion.Item.Icon, {
10
- icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
11
- label: "Admin Users Permissions"
12
- }),
13
- title: `Admin Users`,
14
- description: `Manage Admin Users access permissions.`,
15
- "data-testid": "permission.adminUsers"
16
- }, /*#__PURE__*/React.createElement(AdminUsersPermissions, props));
17
- }
18
- });
19
-
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Accordion","ReactComponent","PermissionsIcon","AdminUsersPermissions","PermissionRendererPlugin","render","props","createElement","Item","icon","Icon","label","title","description"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/group.svg\";\nimport { AdminUsersPermissions } from \"./AdminUsersPermissions.js\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin.js\";\n\nexport default new PermissionRendererPlugin({\n render(props) {\n return (\n <Accordion.Item\n icon={\n <Accordion.Item.Icon\n icon={<PermissionsIcon />}\n label={\"Admin Users Permissions\"}\n />\n }\n title={`Admin Users`}\n description={`Manage Admin Users access permissions.`}\n data-testid={\"permission.adminUsers\"}\n >\n <AdminUsersPermissions {...props} />\n </Accordion.Item>\n );\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,cAAc,IAAIC,eAAe,QAAQ,yBAAyB;AAC3E,SAASC,qBAAqB;AAC9B,SAASC,wBAAwB,QAAQ,uDAAuD;AAEhG,eAAe,IAAIA,wBAAwB,CAAC;EACxCC,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIP,KAAA,CAAAQ,aAAA,CAACP,SAAS,CAACQ,IAAI;MACXC,IAAI,eACAV,KAAA,CAAAQ,aAAA,CAACP,SAAS,CAACQ,IAAI,CAACE,IAAI;QAChBD,IAAI,eAAEV,KAAA,CAAAQ,aAAA,CAACL,eAAe,MAAE,CAAE;QAC1BS,KAAK,EAAE;MAA0B,CACpC,CACJ;MACDC,KAAK,EAAE,aAAc;MACrBC,WAAW,EAAE,wCAAyC;MACtD,eAAa;IAAwB,gBAErCd,KAAA,CAAAQ,aAAA,CAACJ,qBAAqB,EAAKG,KAAQ,CACvB,CAAC;EAEzB;AACJ,CAAC,CAAC","ignoreList":[]}