@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 +2 -4
- package/admin/Cognito.js.map +1 -1
- package/admin/SecurityPermission.d.ts +2 -0
- package/admin/SecurityPermission.js +28 -0
- package/admin/SecurityPermission.js.map +1 -0
- package/package.json +20 -21
- package/admin/plugins/permissionRenderer/AdminUsersPermissions.d.ts +0 -7
- package/admin/plugins/permissionRenderer/AdminUsersPermissions.js +0 -129
- package/admin/plugins/permissionRenderer/AdminUsersPermissions.js.map +0 -1
- package/admin/plugins/permissionRenderer/index.d.ts +0 -3
- package/admin/plugins/permissionRenderer/index.js +0 -20
- package/admin/plugins/permissionRenderer/index.js.map +0 -1
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
|
|
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
|
-
|
|
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,
|
package/admin/Cognito.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","memo","AdminConfig","AdminLayout","
|
|
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,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": "
|
|
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.
|
|
13
|
-
"@webiny/admin-ui": "
|
|
14
|
-
"@webiny/api-core": "
|
|
15
|
-
"@webiny/app": "
|
|
16
|
-
"@webiny/app-admin": "
|
|
17
|
-
"@webiny/aws-sdk": "
|
|
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": "
|
|
20
|
-
"@webiny/form": "
|
|
21
|
-
"@webiny/handler-graphql": "
|
|
22
|
-
"@webiny/icons": "
|
|
23
|
-
"@webiny/
|
|
24
|
-
"@webiny/project": "
|
|
25
|
-
"@webiny/
|
|
26
|
-
"@webiny/
|
|
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": "
|
|
40
|
-
"@webiny/project-utils": "
|
|
41
|
-
"@webiny/wcp": "
|
|
42
|
-
"vitest": "
|
|
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": "
|
|
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,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":[]}
|