@webiny/app-audit-logs 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.
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SecurityPermission: () => React.JSX.Element;
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { AdminConfig } from "@webiny/app-admin";
3
+ import { ReactComponent as PermissionsIcon } from "@webiny/icons/manage_search.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: "audit-logs",
10
+ title: "Audit Logs",
11
+ description: "Manage Audit Logs permissions.",
12
+ icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
13
+ schema: {
14
+ prefix: "al",
15
+ fullAccess: true
16
+ }
17
+ }));
18
+ };
19
+
20
+ //# 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"],"sources":["SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/manage_search.svg\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"audit-logs\"\n title=\"Audit Logs\"\n description=\"Manage Audit Logs permissions.\"\n icon={<PermissionsIcon />}\n schema={{\n prefix: \"al\",\n fullAccess: true\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,iCAAiC;AAEnF,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,YAAY;IACjBC,KAAK,EAAC,YAAY;IAClBC,WAAW,EAAC,gCAAgC;IAC5CC,IAAI,eAAEX,KAAA,CAAAM,aAAA,CAACH,eAAe,MAAE,CAAE;IAC1BS,MAAM,EAAE;MACJC,MAAM,EAAE,IAAI;MACZC,UAAU,EAAE;IAChB;EAAE,CACL,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
package/hooks/schema.d.ts CHANGED
@@ -8,12 +8,12 @@ export declare const auditLogSchema: zod.ZodObject<{
8
8
  type: zod.ZodOptional<zod.ZodString>;
9
9
  }, "strip", zod.ZodTypeAny, {
10
10
  id: string;
11
- type?: string | undefined;
12
11
  displayName?: string | undefined;
12
+ type?: string | undefined;
13
13
  }, {
14
14
  id: string;
15
- type?: string | undefined;
16
15
  displayName?: string | undefined;
16
+ type?: string | undefined;
17
17
  }>;
18
18
  createdOn: zod.ZodEffects<zod.ZodDate, Date, unknown>;
19
19
  app: zod.ZodString;
@@ -30,8 +30,8 @@ export declare const auditLogSchema: zod.ZodObject<{
30
30
  action: ActionType;
31
31
  createdBy: {
32
32
  id: string;
33
- type?: string | undefined;
34
33
  displayName?: string | undefined;
34
+ type?: string | undefined;
35
35
  };
36
36
  createdOn: Date;
37
37
  app: string;
@@ -46,8 +46,8 @@ export declare const auditLogSchema: zod.ZodObject<{
46
46
  action: ActionType;
47
47
  createdBy: {
48
48
  id: string;
49
- type?: string | undefined;
50
49
  displayName?: string | undefined;
50
+ type?: string | undefined;
51
51
  };
52
52
  app: string;
53
53
  message: string;
@@ -65,12 +65,12 @@ export declare const listAuditLogsSchema: zod.ZodArray<zod.ZodObject<{
65
65
  type: zod.ZodOptional<zod.ZodString>;
66
66
  }, "strip", zod.ZodTypeAny, {
67
67
  id: string;
68
- type?: string | undefined;
69
68
  displayName?: string | undefined;
69
+ type?: string | undefined;
70
70
  }, {
71
71
  id: string;
72
- type?: string | undefined;
73
72
  displayName?: string | undefined;
73
+ type?: string | undefined;
74
74
  }>;
75
75
  createdOn: zod.ZodEffects<zod.ZodDate, Date, unknown>;
76
76
  app: zod.ZodString;
@@ -87,8 +87,8 @@ export declare const listAuditLogsSchema: zod.ZodArray<zod.ZodObject<{
87
87
  action: ActionType;
88
88
  createdBy: {
89
89
  id: string;
90
- type?: string | undefined;
91
90
  displayName?: string | undefined;
91
+ type?: string | undefined;
92
92
  };
93
93
  createdOn: Date;
94
94
  app: string;
@@ -103,8 +103,8 @@ export declare const listAuditLogsSchema: zod.ZodArray<zod.ZodObject<{
103
103
  action: ActionType;
104
104
  createdBy: {
105
105
  id: string;
106
- type?: string | undefined;
107
106
  displayName?: string | undefined;
107
+ type?: string | undefined;
108
108
  };
109
109
  app: string;
110
110
  message: string;
package/index.js CHANGED
@@ -4,7 +4,7 @@ import { ReactComponent as Icon } from "@webiny/icons/manage_search.svg";
4
4
  import { AdminConfig, AdminLayout, useWcp } from "@webiny/app-admin";
5
5
  import { HasPermission } from "@webiny/app-admin";
6
6
  import { LogsModule } from "./views/Logs/LogsModule.js";
7
- import { AuditLogsPermissions } from "./plugins/permissionRenderer/index.js";
7
+ import { SecurityPermission } from "./SecurityPermission.js";
8
8
  import { LogsView } from "./views/Logs/LogsView.js";
9
9
  import { AuditLogsListWithConfig } from "./config/list/index.js";
10
10
  import { Routes } from "./routes.js";
@@ -18,7 +18,7 @@ export const AuditLogs = () => {
18
18
  if (!wcp.canUseAuditLogs()) {
19
19
  return null;
20
20
  }
21
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LogsModule, null), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
21
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LogsModule, null), /*#__PURE__*/React.createElement(SecurityPermission, null), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
22
22
  any: ["al.*"]
23
23
  }, /*#__PURE__*/React.createElement(Menu, {
24
24
  name: "auditLogs",
@@ -36,7 +36,7 @@ export const AuditLogs = () => {
36
36
  element: /*#__PURE__*/React.createElement(AdminLayout, {
37
37
  title: "Audit Logs - Logs"
38
38
  }, /*#__PURE__*/React.createElement(AuditLogsListWithConfig, null, /*#__PURE__*/React.createElement(LogsView, null)))
39
- }))), /*#__PURE__*/React.createElement(AuditLogsPermissions, null));
39
+ }))));
40
40
  };
41
41
 
42
42
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRouter","ReactComponent","Icon","AdminConfig","AdminLayout","useWcp","HasPermission","LogsModule","AuditLogsPermissions","LogsView","AuditLogsListWithConfig","Routes","Menu","Route","AuditLogs","wcp","router","canUseAuditLogs","createElement","Fragment","any","name","pinnable","element","Link","text","icon","label","to","getLink","AuditLogsList","route","title"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as Icon } from \"@webiny/icons/manage_search.svg\";\nimport { AdminConfig, AdminLayout, useWcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { LogsModule } from \"~/views/Logs/LogsModule.js\";\nimport { AuditLogsPermissions } from \"~/plugins/permissionRenderer/index.js\";\nimport { LogsView } from \"~/views/Logs/LogsView.js\";\nimport { AuditLogsListWithConfig } from \"~/config/list/index.js\";\nimport { Routes } from \"~/routes.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const AuditLogs = () => {\n const wcp = useWcp();\n const router = useRouter();\n\n if (!wcp.canUseAuditLogs()) {\n return null;\n }\n\n return (\n <>\n <LogsModule />\n <AdminConfig>\n <HasPermission any={[\"al.*\"]}>\n <Menu\n name=\"auditLogs\"\n pinnable\n element={\n <Menu.Link\n text={\"Audit Logs\"}\n icon={<Menu.Link.Icon element={<Icon />} label={\"Audit Logs\"} />}\n to={router.getLink(Routes.AuditLogsList)}\n />\n }\n />\n <Route\n route={Routes.AuditLogsList}\n element={\n <AdminLayout title={\"Audit Logs - Logs\"}>\n <AuditLogsListWithConfig>\n <LogsView />\n </AuditLogsListWithConfig>\n </AdminLayout>\n }\n />\n </HasPermission>\n </AdminConfig>\n <AuditLogsPermissions />\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,IAAIC,IAAI,QAAQ,iCAAiC;AACxE,SAASC,WAAW,EAAEC,WAAW,EAAEC,MAAM,QAAQ,mBAAmB;AACpE,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,UAAU;AACnB,SAASC,oBAAoB;AAC7B,SAASC,QAAQ;AACjB,SAASC,uBAAuB;AAChC,SAASC,MAAM;AAEf,MAAM;EAAEC,IAAI;EAAEC;AAAM,CAAC,GAAGV,WAAW;AAEnC,OAAO,MAAMW,SAAS,GAAGA,CAAA,KAAM;EAC3B,MAAMC,GAAG,GAAGV,MAAM,CAAC,CAAC;EACpB,MAAMW,MAAM,GAAGhB,SAAS,CAAC,CAAC;EAE1B,IAAI,CAACe,GAAG,CAACE,eAAe,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACf;EAEA,oBACIlB,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoB,QAAA,qBACIpB,KAAA,CAAAmB,aAAA,CAACX,UAAU,MAAE,CAAC,eACdR,KAAA,CAAAmB,aAAA,CAACf,WAAW,qBACRJ,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACc,GAAG,EAAE,CAAC,MAAM;EAAE,gBACzBrB,KAAA,CAAAmB,aAAA,CAACN,IAAI;IACDS,IAAI,EAAC,WAAW;IAChBC,QAAQ;IACRC,OAAO,eACHxB,KAAA,CAAAmB,aAAA,CAACN,IAAI,CAACY,IAAI;MACNC,IAAI,EAAE,YAAa;MACnBC,IAAI,eAAE3B,KAAA,CAAAmB,aAAA,CAACN,IAAI,CAACY,IAAI,CAACtB,IAAI;QAACqB,OAAO,eAAExB,KAAA,CAAAmB,aAAA,CAAChB,IAAI,MAAE,CAAE;QAACyB,KAAK,EAAE;MAAa,CAAE,CAAE;MACjEC,EAAE,EAAEZ,MAAM,CAACa,OAAO,CAAClB,MAAM,CAACmB,aAAa;IAAE,CAC5C;EACJ,CACJ,CAAC,eACF/B,KAAA,CAAAmB,aAAA,CAACL,KAAK;IACFkB,KAAK,EAAEpB,MAAM,CAACmB,aAAc;IAC5BP,OAAO,eACHxB,KAAA,CAAAmB,aAAA,CAACd,WAAW;MAAC4B,KAAK,EAAE;IAAoB,gBACpCjC,KAAA,CAAAmB,aAAA,CAACR,uBAAuB,qBACpBX,KAAA,CAAAmB,aAAA,CAACT,QAAQ,MAAE,CACU,CAChB;EAChB,CACJ,CACU,CACN,CAAC,eACdV,KAAA,CAAAmB,aAAA,CAACV,oBAAoB,MAAE,CACzB,CAAC;AAEX,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useRouter","ReactComponent","Icon","AdminConfig","AdminLayout","useWcp","HasPermission","LogsModule","SecurityPermission","LogsView","AuditLogsListWithConfig","Routes","Menu","Route","AuditLogs","wcp","router","canUseAuditLogs","createElement","Fragment","any","name","pinnable","element","Link","text","icon","label","to","getLink","AuditLogsList","route","title"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as Icon } from \"@webiny/icons/manage_search.svg\";\nimport { AdminConfig, AdminLayout, useWcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { LogsModule } from \"~/views/Logs/LogsModule.js\";\nimport { SecurityPermission } from \"~/SecurityPermission.js\";\nimport { LogsView } from \"~/views/Logs/LogsView.js\";\nimport { AuditLogsListWithConfig } from \"~/config/list/index.js\";\nimport { Routes } from \"~/routes.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const AuditLogs = () => {\n const wcp = useWcp();\n const router = useRouter();\n\n if (!wcp.canUseAuditLogs()) {\n return null;\n }\n\n return (\n <>\n <LogsModule />\n <SecurityPermission />\n <AdminConfig>\n <HasPermission any={[\"al.*\"]}>\n <Menu\n name=\"auditLogs\"\n pinnable\n element={\n <Menu.Link\n text={\"Audit Logs\"}\n icon={<Menu.Link.Icon element={<Icon />} label={\"Audit Logs\"} />}\n to={router.getLink(Routes.AuditLogsList)}\n />\n }\n />\n <Route\n route={Routes.AuditLogsList}\n element={\n <AdminLayout title={\"Audit Logs - Logs\"}>\n <AuditLogsListWithConfig>\n <LogsView />\n </AuditLogsListWithConfig>\n </AdminLayout>\n }\n />\n </HasPermission>\n </AdminConfig>\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,IAAIC,IAAI,QAAQ,iCAAiC;AACxE,SAASC,WAAW,EAAEC,WAAW,EAAEC,MAAM,QAAQ,mBAAmB;AACpE,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,UAAU;AACnB,SAASC,kBAAkB;AAC3B,SAASC,QAAQ;AACjB,SAASC,uBAAuB;AAChC,SAASC,MAAM;AAEf,MAAM;EAAEC,IAAI;EAAEC;AAAM,CAAC,GAAGV,WAAW;AAEnC,OAAO,MAAMW,SAAS,GAAGA,CAAA,KAAM;EAC3B,MAAMC,GAAG,GAAGV,MAAM,CAAC,CAAC;EACpB,MAAMW,MAAM,GAAGhB,SAAS,CAAC,CAAC;EAE1B,IAAI,CAACe,GAAG,CAACE,eAAe,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACf;EAEA,oBACIlB,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoB,QAAA,qBACIpB,KAAA,CAAAmB,aAAA,CAACX,UAAU,MAAE,CAAC,eACdR,KAAA,CAAAmB,aAAA,CAACV,kBAAkB,MAAE,CAAC,eACtBT,KAAA,CAAAmB,aAAA,CAACf,WAAW,qBACRJ,KAAA,CAAAmB,aAAA,CAACZ,aAAa;IAACc,GAAG,EAAE,CAAC,MAAM;EAAE,gBACzBrB,KAAA,CAAAmB,aAAA,CAACN,IAAI;IACDS,IAAI,EAAC,WAAW;IAChBC,QAAQ;IACRC,OAAO,eACHxB,KAAA,CAAAmB,aAAA,CAACN,IAAI,CAACY,IAAI;MACNC,IAAI,EAAE,YAAa;MACnBC,IAAI,eAAE3B,KAAA,CAAAmB,aAAA,CAACN,IAAI,CAACY,IAAI,CAACtB,IAAI;QAACqB,OAAO,eAAExB,KAAA,CAAAmB,aAAA,CAAChB,IAAI,MAAE,CAAE;QAACyB,KAAK,EAAE;MAAa,CAAE,CAAE;MACjEC,EAAE,EAAEZ,MAAM,CAACa,OAAO,CAAClB,MAAM,CAACmB,aAAa;IAAE,CAC5C;EACJ,CACJ,CAAC,eACF/B,KAAA,CAAAmB,aAAA,CAACL,KAAK;IACFkB,KAAK,EAAEpB,MAAM,CAACmB,aAAc;IAC5BP,OAAO,eACHxB,KAAA,CAAAmB,aAAA,CAACd,WAAW;MAAC4B,KAAK,EAAE;IAAoB,gBACpCjC,KAAA,CAAAmB,aAAA,CAACR,uBAAuB,qBACpBX,KAAA,CAAAmB,aAAA,CAACT,QAAQ,MAAE,CACU,CAChB;EAChB,CACJ,CACU,CACN,CACf,CAAC;AAEX,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-audit-logs",
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": {
@@ -13,16 +13,14 @@
13
13
  "@apollo/react-hooks": "3.1.5",
14
14
  "@emotion/react": "11.10.8",
15
15
  "@emotion/styled": "11.10.6",
16
- "@webiny/admin-ui": "0.0.0-unstable.df7a8bb475",
17
- "@webiny/app": "0.0.0-unstable.df7a8bb475",
18
- "@webiny/app-admin": "0.0.0-unstable.df7a8bb475",
19
- "@webiny/common-audit-logs": "0.0.0-unstable.df7a8bb475",
20
- "@webiny/form": "0.0.0-unstable.df7a8bb475",
21
- "@webiny/icons": "0.0.0-unstable.df7a8bb475",
22
- "@webiny/plugins": "0.0.0-unstable.df7a8bb475",
23
- "@webiny/react-composition": "0.0.0-unstable.df7a8bb475",
24
- "@webiny/react-properties": "0.0.0-unstable.df7a8bb475",
25
- "@webiny/ui": "0.0.0-unstable.df7a8bb475",
16
+ "@webiny/app": "0.0.0-unstable.e2758ee1cf",
17
+ "@webiny/app-admin": "0.0.0-unstable.e2758ee1cf",
18
+ "@webiny/common-audit-logs": "0.0.0-unstable.e2758ee1cf",
19
+ "@webiny/form": "0.0.0-unstable.e2758ee1cf",
20
+ "@webiny/icons": "0.0.0-unstable.e2758ee1cf",
21
+ "@webiny/react-composition": "0.0.0-unstable.e2758ee1cf",
22
+ "@webiny/react-properties": "0.0.0-unstable.e2758ee1cf",
23
+ "@webiny/ui": "0.0.0-unstable.e2758ee1cf",
26
24
  "date-fns": "2.30.0",
27
25
  "emotion": "10.0.27",
28
26
  "graphql-tag": "2.12.6",
@@ -34,7 +32,7 @@
34
32
  },
35
33
  "devDependencies": {
36
34
  "@types/react": "18.2.79",
37
- "@webiny/build-tools": "0.0.0-unstable.df7a8bb475",
35
+ "@webiny/build-tools": "0.0.0-unstable.e2758ee1cf",
38
36
  "execa": "5.1.1",
39
37
  "rimraf": "6.1.3",
40
38
  "typescript": "5.9.3"
@@ -43,5 +41,5 @@
43
41
  "access": "public",
44
42
  "directory": "dist"
45
43
  },
46
- "gitHead": "df7a8bb4755a1da047f0af8c56bdb649cc81bf7d"
44
+ "gitHead": "e2758ee1cfa3b9a7152e9bb995a90ccabd33266f"
47
45
  }
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- import { Identity } from "@webiny/app-admin/domain/Identity.js";
3
- interface PageBuilderPermissionsProps {
4
- value: Identity.Permission;
5
- onChange: (value: Identity.Permission[]) => void;
6
- }
7
- export declare const AuditLogsPermissions: ({ value, onChange }: PageBuilderPermissionsProps) => React.JSX.Element;
8
- export {};
@@ -1,100 +0,0 @@
1
- import React, { Fragment, useCallback, useMemo } from "react";
2
- import { Cell, Grid } 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, gridWithPaddingClass, PermissionInfo } from "@webiny/app-admin";
6
- import { Form } from "@webiny/form";
7
- import { useSecurity } from "@webiny/app-admin";
8
- const t = i18n.ns("app-audit-logs/plugins/permissionRenderer");
9
- const AUDIT_LOGS = "al";
10
- const AUDIT_LOGS_FULL_ACCESS = "al.*";
11
- const FULL_ACCESS = "full";
12
- const NO_ACCESS = "no";
13
- const CUSTOM_ACCESS = "custom";
14
- export const AuditLogsPermissions = ({
15
- value,
16
- onChange
17
- }) => {
18
- const {
19
- getPermission
20
- } = useSecurity();
21
-
22
- // We disable form elements for custom permissions if AACL cannot be used.
23
- const cannotUseAAcl = useMemo(() => {
24
- return !getPermission("aacl", true);
25
- }, []);
26
- const onFormChange = useCallback(formData => {
27
- let newValue = [];
28
- if (Array.isArray(value)) {
29
- // Let's just filter out the `al*` permission objects, it's easier to build new ones from scratch.
30
- newValue = value.filter(item => !item.name.startsWith(AUDIT_LOGS));
31
- }
32
- if (formData.accessLevel === NO_ACCESS) {
33
- onChange(newValue);
34
- return;
35
- }
36
- if (formData.accessLevel === FULL_ACCESS) {
37
- newValue.push({
38
- name: AUDIT_LOGS_FULL_ACCESS
39
- });
40
- onChange(newValue);
41
- return;
42
- }
43
-
44
- // Handling custom access level.
45
-
46
- onChange(newValue);
47
- }, [value]);
48
- const formData = useMemo(() => {
49
- if (!Array.isArray(value)) {
50
- return {
51
- accessLevel: NO_ACCESS
52
- };
53
- }
54
- const hasFullAccess = value.find(item => item.name === AUDIT_LOGS_FULL_ACCESS || item.name === "*");
55
- if (hasFullAccess) {
56
- return {
57
- accessLevel: FULL_ACCESS
58
- };
59
- }
60
- const permissions = value.filter(item => item.name.startsWith(AUDIT_LOGS));
61
- if (!permissions.length) {
62
- return {
63
- accessLevel: NO_ACCESS
64
- };
65
- }
66
- const formData = {
67
- accessLevel: CUSTOM_ACCESS
68
- };
69
- return formData;
70
- }, []);
71
- return /*#__PURE__*/React.createElement(Form, {
72
- data: formData,
73
- onChange: onFormChange
74
- }, ({
75
- data,
76
- Bind
77
- }) => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, {
78
- className: gridWithPaddingClass
79
- }, /*#__PURE__*/React.createElement(Cell, {
80
- span: 12
81
- }, data.accessLevel === "custom" && cannotUseAAcl && /*#__PURE__*/React.createElement(CannotUseAaclAlert, null))), /*#__PURE__*/React.createElement(Grid, {
82
- className: gridWithPaddingClass
83
- }, /*#__PURE__*/React.createElement(Cell, {
84
- span: 6
85
- }, /*#__PURE__*/React.createElement(PermissionInfo, {
86
- title: t`Access Level`
87
- })), /*#__PURE__*/React.createElement(Cell, {
88
- span: 6
89
- }, /*#__PURE__*/React.createElement(Bind, {
90
- name: "accessLevel"
91
- }, /*#__PURE__*/React.createElement(Select, null, /*#__PURE__*/React.createElement("option", {
92
- value: NO_ACCESS
93
- }, t`No access`), /*#__PURE__*/React.createElement("option", {
94
- value: FULL_ACCESS
95
- }, t`Full access`), /*#__PURE__*/React.createElement("option", {
96
- value: CUSTOM_ACCESS
97
- }, t`Custom access`))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/React.createElement(React.Fragment, null)));
98
- };
99
-
100
- //# sourceMappingURL=AuditLogsPermissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","Fragment","useCallback","useMemo","Cell","Grid","Select","i18n","CannotUseAaclAlert","gridWithPaddingClass","PermissionInfo","Form","useSecurity","t","ns","AUDIT_LOGS","AUDIT_LOGS_FULL_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","AuditLogsPermissions","value","onChange","getPermission","cannotUseAAcl","onFormChange","formData","newValue","Array","isArray","filter","item","name","startsWith","accessLevel","push","hasFullAccess","find","permissions","length","createElement","data","Bind","className","span","title"],"sources":["AuditLogsPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Cell, Grid } from \"@webiny/ui/Grid/index.js\";\nimport { Select } from \"@webiny/ui/Select/index.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { CannotUseAaclAlert, gridWithPaddingClass, PermissionInfo } from \"@webiny/app-admin\";\nimport { Form } from \"@webiny/form\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport type { AaclPermission } from \"@webiny/app-admin\";\nimport { Identity } from \"@webiny/app-admin/domain/Identity.js\";\n\nconst t = i18n.ns(\"app-audit-logs/plugins/permissionRenderer\");\n\nconst AUDIT_LOGS = \"al\";\nconst AUDIT_LOGS_FULL_ACCESS = \"al.*\";\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface PageBuilderPermissionsProps {\n value: Identity.Permission;\n onChange: (value: Identity.Permission[]) => void;\n}\nexport const AuditLogsPermissions = ({ value, onChange }: PageBuilderPermissionsProps) => {\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(\n (formData: Identity.Permission) => {\n let newValue: Identity.Permission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `al*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(AUDIT_LOGS));\n }\n\n if (formData.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (formData.accessLevel === FULL_ACCESS) {\n newValue.push({ name: AUDIT_LOGS_FULL_ACCESS });\n onChange(newValue);\n return;\n }\n\n // Handling custom access level.\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 === AUDIT_LOGS_FULL_ACCESS || item.name === \"*\"\n );\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(AUDIT_LOGS));\n if (!permissions.length) {\n return { accessLevel: NO_ACCESS };\n }\n\n const formData = {\n accessLevel: CUSTOM_ACCESS\n };\n\n return formData;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => (\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 </Fragment>\n )}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- export declare const AuditLogsPermissions: () => null;
@@ -1,32 +0,0 @@
1
- import React, { useEffect } from "react";
2
- import { ReactComponent as PermissionsIcon } from "@webiny/icons/manage_search.svg";
3
- import { i18n } from "@webiny/app/i18n/index.js";
4
- import { plugins } from "@webiny/plugins";
5
- import { Accordion } from "@webiny/admin-ui";
6
- import { AuditLogsPermissions as AuditLogsPermissionsComponent } from "./AuditLogsPermissions.js";
7
- const t = i18n.ns("app-audit-logs/plugins/permissionRenderer");
8
- const createPermissions = () => {
9
- return {
10
- type: "admin-app-permissions-renderer",
11
- name: "admin-app-permissions-renderer-audit-logs",
12
- render(props) {
13
- return /*#__PURE__*/React.createElement(Accordion.Item, {
14
- icon: /*#__PURE__*/React.createElement(Accordion.Item.Icon, {
15
- icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
16
- label: "Audit Logs Permissions"
17
- }),
18
- title: t`Audit Logs`,
19
- description: t`Manage Audit Logs app access permissions.`,
20
- "data-testid": "permission.al"
21
- }, /*#__PURE__*/React.createElement(AuditLogsPermissionsComponent, props));
22
- }
23
- };
24
- };
25
- export const AuditLogsPermissions = () => {
26
- useEffect(() => {
27
- plugins.register(createPermissions());
28
- }, []);
29
- return null;
30
- };
31
-
32
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useEffect","ReactComponent","PermissionsIcon","i18n","plugins","Accordion","AuditLogsPermissions","AuditLogsPermissionsComponent","t","ns","createPermissions","type","name","render","props","createElement","Item","icon","Icon","label","title","description","register"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/manage_search.svg\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport type { AdminAppPermissionRendererPlugin } from \"@webiny/app-admin/types.js\";\nimport { AuditLogsPermissions as AuditLogsPermissionsComponent } from \"./AuditLogsPermissions.js\";\n\nconst t = i18n.ns(\"app-audit-logs/plugins/permissionRenderer\");\n\nconst createPermissions = (): AdminAppPermissionRendererPlugin => {\n return {\n type: \"admin-app-permissions-renderer\",\n name: \"admin-app-permissions-renderer-audit-logs\",\n render(props) {\n return (\n <Accordion.Item\n icon={\n <Accordion.Item.Icon\n icon={<PermissionsIcon />}\n label={\"Audit Logs Permissions\"}\n />\n }\n title={t`Audit Logs`}\n description={t`Manage Audit Logs app access permissions.`}\n data-testid={\"permission.al\"}\n >\n <AuditLogsPermissionsComponent {...props} />\n </Accordion.Item>\n );\n }\n };\n};\n\nexport const AuditLogsPermissions = () => {\n useEffect(() => {\n plugins.register(createPermissions());\n }, []);\n return null;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,cAAc,IAAIC,eAAe,QAAQ,iCAAiC;AACnF,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,SAASC,oBAAoB,IAAIC,6BAA6B;AAE9D,MAAMC,CAAC,GAAGL,IAAI,CAACM,EAAE,CAAC,2CAA2C,CAAC;AAE9D,MAAMC,iBAAiB,GAAGA,CAAA,KAAwC;EAC9D,OAAO;IACHC,IAAI,EAAE,gCAAgC;IACtCC,IAAI,EAAE,2CAA2C;IACjDC,MAAMA,CAACC,KAAK,EAAE;MACV,oBACIf,KAAA,CAAAgB,aAAA,CAACV,SAAS,CAACW,IAAI;QACXC,IAAI,eACAlB,KAAA,CAAAgB,aAAA,CAACV,SAAS,CAACW,IAAI,CAACE,IAAI;UAChBD,IAAI,eAAElB,KAAA,CAAAgB,aAAA,CAACb,eAAe,MAAE,CAAE;UAC1BiB,KAAK,EAAE;QAAyB,CACnC,CACJ;QACDC,KAAK,EAAEZ,CAAC,YAAa;QACrBa,WAAW,EAAEb,CAAC,2CAA4C;QAC1D,eAAa;MAAgB,gBAE7BT,KAAA,CAAAgB,aAAA,CAACR,6BAA6B,EAAKO,KAAQ,CAC/B,CAAC;IAEzB;EACJ,CAAC;AACL,CAAC;AAED,OAAO,MAAMR,oBAAoB,GAAGA,CAAA,KAAM;EACtCN,SAAS,CAAC,MAAM;IACZI,OAAO,CAACkB,QAAQ,CAACZ,iBAAiB,CAAC,CAAC,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EACN,OAAO,IAAI;AACf,CAAC","ignoreList":[]}