@webiny/app-security-access-management 5.43.2 → 6.0.0-alpha.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.
Files changed (79) hide show
  1. package/components/GroupAutocomplete/graphql.js +16 -11
  2. package/components/GroupAutocomplete/graphql.js.map +1 -1
  3. package/components/GroupAutocomplete/index.js +11 -17
  4. package/components/GroupAutocomplete/index.js.map +1 -1
  5. package/components/GroupsMultiAutocomplete/graphql.js +21 -11
  6. package/components/GroupsMultiAutocomplete/graphql.js.map +1 -1
  7. package/components/GroupsMultiAutocomplete/index.js +11 -17
  8. package/components/GroupsMultiAutocomplete/index.js.map +1 -1
  9. package/components/NotAuthorizedError/NotAuthorizedError.js +18 -61
  10. package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
  11. package/components/NotAuthorizedError/index.js +1 -12
  12. package/components/NotAuthorizedError/index.js.map +1 -1
  13. package/components/TeamAutocomplete/graphql.js +16 -11
  14. package/components/TeamAutocomplete/graphql.js.map +1 -1
  15. package/components/TeamAutocomplete/index.js +11 -17
  16. package/components/TeamAutocomplete/index.js.map +1 -1
  17. package/components/TeamsMultiAutocomplete/graphql.js +21 -11
  18. package/components/TeamsMultiAutocomplete/graphql.js.map +1 -1
  19. package/components/TeamsMultiAutocomplete/index.js +11 -17
  20. package/components/TeamsMultiAutocomplete/index.js.map +1 -1
  21. package/index.d.ts +0 -7
  22. package/index.js +80 -71
  23. package/index.js.map +1 -1
  24. package/package.json +13 -13
  25. package/plugins/constants.js +1 -7
  26. package/plugins/constants.js.map +1 -1
  27. package/plugins/index.js +4 -13
  28. package/plugins/index.js.map +1 -1
  29. package/plugins/installation.js +61 -50
  30. package/plugins/installation.js.map +1 -1
  31. package/plugins/permissionRenderer/SecurityPermissions.js +84 -127
  32. package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
  33. package/plugins/permissionRenderer/index.js +17 -23
  34. package/plugins/permissionRenderer/index.js.map +1 -1
  35. package/plugins/routes.js +22 -33
  36. package/plugins/routes.js.map +1 -1
  37. package/plugins/secureRouteError.js +6 -13
  38. package/plugins/secureRouteError.js.map +1 -1
  39. package/types.js +1 -5
  40. package/ui/elements/GroupAutocompleteElement.js +29 -45
  41. package/ui/elements/GroupAutocompleteElement.js.map +1 -1
  42. package/ui/elements/GroupsMultiAutocompleteElement.js +29 -45
  43. package/ui/elements/GroupsMultiAutocompleteElement.js.map +1 -1
  44. package/ui/elements/TeamAutocompleteElement.js +29 -45
  45. package/ui/elements/TeamAutocompleteElement.js.map +1 -1
  46. package/ui/views/ApiKeys/ApiKeyForm.js +137 -200
  47. package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
  48. package/ui/views/ApiKeys/ApiKeys.js +9 -17
  49. package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
  50. package/ui/views/ApiKeys/ApiKeysDataList.js +110 -134
  51. package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
  52. package/ui/views/ApiKeys/graphql.js +80 -16
  53. package/ui/views/ApiKeys/graphql.js.map +1 -1
  54. package/ui/views/ApiKeys/index.js +1 -16
  55. package/ui/views/ApiKeys/index.js.map +1 -1
  56. package/ui/views/ApiKeys/utils.js +3 -11
  57. package/ui/views/ApiKeys/utils.js.map +1 -1
  58. package/ui/views/Groups/Groups.js +9 -17
  59. package/ui/views/Groups/Groups.js.map +1 -1
  60. package/ui/views/Groups/GroupsDataList.js +114 -141
  61. package/ui/views/Groups/GroupsDataList.js.map +1 -1
  62. package/ui/views/Groups/GroupsForm.js +139 -188
  63. package/ui/views/Groups/GroupsForm.js.map +1 -1
  64. package/ui/views/Groups/graphql.js +83 -16
  65. package/ui/views/Groups/graphql.js.map +1 -1
  66. package/ui/views/Groups/index.js +1 -16
  67. package/ui/views/Groups/index.js.map +1 -1
  68. package/ui/views/Teams/Teams.js +9 -17
  69. package/ui/views/Teams/Teams.js.map +1 -1
  70. package/ui/views/Teams/TeamsDataList.js +116 -141
  71. package/ui/views/Teams/TeamsDataList.js.map +1 -1
  72. package/ui/views/Teams/TeamsForm.js +118 -150
  73. package/ui/views/Teams/TeamsForm.js.map +1 -1
  74. package/ui/views/Teams/graphql.js +87 -16
  75. package/ui/views/Teams/graphql.js.map +1 -1
  76. package/ui/views/Teams/index.js +1 -16
  77. package/ui/views/Teams/index.js.map +1 -1
  78. package/ui/views/utils.js +3 -14
  79. package/ui/views/utils.js.map +1 -1
@@ -1,53 +1,41 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.SecurityPermissions = void 0;
9
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
- var _react = _interopRequireWildcard(require("react"));
11
- var _Grid = require("@webiny/ui/Grid");
12
- var _Select = require("@webiny/ui/Select");
13
- var _i18n = require("@webiny/app/i18n");
14
- var _Permissions = require("@webiny/app-admin/components/Permissions");
15
- var _form = require("@webiny/form");
16
- var _Elevation = require("@webiny/ui/Elevation");
17
- var _Typography = require("@webiny/ui/Typography");
18
- var _appSecurity = require("@webiny/app-security");
19
- var _appAdmin = require("@webiny/app-admin");
20
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
21
- var t = _i18n.i18n.ns("app-security-admin-users/plugins/permissionRenderer");
22
- var SECURITY = "security";
23
- var SECURITY_FULL_ACCESS = "".concat(SECURITY, ".*");
24
- var SECURITY_GROUP_ACCESS = "".concat(SECURITY, ".group");
25
- var SECURITY_TEAM_ACCESS = "".concat(SECURITY, ".team");
26
- var SECURITY_API_KEY_ACCESS = "".concat(SECURITY, ".apiKey");
27
- var FULL_ACCESS = "full";
28
- var NO_ACCESS = "no";
29
- var CUSTOM_ACCESS = "custom";
30
- var SecurityPermissions = exports.SecurityPermissions = function SecurityPermissions(_ref) {
31
- var value = _ref.value,
32
- onChange = _ref.onChange;
33
- var _useSecurity = (0, _appSecurity.useSecurity)(),
34
- getPermission = _useSecurity.getPermission;
35
- var wcp = (0, _appAdmin.useWcp)();
1
+ import React, { Fragment, useCallback, useMemo } from "react";
2
+ import { Grid, Cell } from "@webiny/ui/Grid";
3
+ import { Select } from "@webiny/ui/Select";
4
+ import { i18n } from "@webiny/app/i18n";
5
+ import { CannotUseAaclAlert, PermissionInfo, gridWithPaddingClass, PermissionsGroup } from "@webiny/app-admin/components/Permissions";
6
+ import { Form } from "@webiny/form";
7
+ import { useSecurity } from "@webiny/app-security";
8
+ import { useWcp } from "@webiny/app-admin";
9
+ const t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
10
+ const SECURITY = "security";
11
+ const SECURITY_FULL_ACCESS = `${SECURITY}.*`;
12
+ const SECURITY_GROUP_ACCESS = `${SECURITY}.group`;
13
+ const SECURITY_TEAM_ACCESS = `${SECURITY}.team`;
14
+ const SECURITY_API_KEY_ACCESS = `${SECURITY}.apiKey`;
15
+ const FULL_ACCESS = "full";
16
+ const NO_ACCESS = "no";
17
+ const CUSTOM_ACCESS = "custom";
18
+ export const SecurityPermissions = ({
19
+ value,
20
+ onChange
21
+ }) => {
22
+ const {
23
+ getPermission
24
+ } = useSecurity();
25
+ const wcp = useWcp();
36
26
 
37
27
  // We disable form elements for custom permissions if AACL cannot be used.
38
- var cannotUseAacl = (0, _react.useMemo)(function () {
28
+ const cannotUseAacl = useMemo(() => {
39
29
  return !getPermission("aacl", true);
40
30
  }, []);
41
- var teams = wcp.canUseTeams();
42
- var onFormChange = (0, _react.useCallback)(function (formData) {
43
- var newValue = [];
31
+ const teams = wcp.canUseTeams();
32
+ const onFormChange = useCallback(formData => {
33
+ let newValue = [];
44
34
  if (Array.isArray(value)) {
45
35
  // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.
46
- newValue = value.filter(function (item) {
47
- return !item.name.startsWith(SECURITY);
48
- });
36
+ newValue = value.filter(item => !item.name.startsWith(SECURITY));
49
37
  }
50
- var permissions = [];
38
+ const permissions = [];
51
39
  if (formData.accessLevel === FULL_ACCESS) {
52
40
  permissions.push({
53
41
  name: SECURITY_FULL_ACCESS
@@ -70,148 +58,117 @@ var SecurityPermissions = exports.SecurityPermissions = function SecurityPermiss
70
58
  }
71
59
  }
72
60
  if (permissions && permissions.length) {
73
- var _newValue;
74
- (_newValue = newValue).push.apply(_newValue, permissions);
61
+ newValue.push(...permissions);
75
62
  }
76
63
  onChange(newValue);
77
64
  }, [value]);
78
- var formData = (0, _react.useMemo)(function () {
65
+ const formData = useMemo(() => {
79
66
  if (!Array.isArray(value)) {
80
67
  return {
81
68
  accessLevel: NO_ACCESS
82
69
  };
83
70
  }
84
- var hasFullAccess = value.find(function (item) {
85
- return item.name === SECURITY_FULL_ACCESS || item.name === "*";
86
- });
71
+ const hasFullAccess = value.find(item => item.name === SECURITY_FULL_ACCESS || item.name === "*");
87
72
  if (hasFullAccess) {
88
73
  return {
89
74
  accessLevel: FULL_ACCESS
90
75
  };
91
76
  }
92
- var permissions = value.filter(function (item) {
93
- return item.name.startsWith(SECURITY);
94
- });
77
+ const permissions = value.filter(item => item.name.startsWith(SECURITY));
95
78
  if (permissions.length === 0) {
96
79
  return {
97
80
  accessLevel: NO_ACCESS
98
81
  };
99
82
  }
100
- var data = {
83
+ const data = {
101
84
  accessLevel: CUSTOM_ACCESS,
102
85
  groupAccessScope: NO_ACCESS,
103
86
  teamAccessScope: NO_ACCESS,
104
87
  apiKeyAccessScope: NO_ACCESS
105
88
  };
106
- var hasGroupAccess = permissions.find(function (item) {
107
- return item.name === SECURITY_GROUP_ACCESS;
108
- });
89
+ const hasGroupAccess = permissions.find(item => item.name === SECURITY_GROUP_ACCESS);
109
90
  if (hasGroupAccess) {
110
91
  data.groupAccessScope = FULL_ACCESS;
111
92
  }
112
- var hasTeamAccess = permissions.find(function (item) {
113
- return item.name === SECURITY_TEAM_ACCESS;
114
- });
93
+ const hasTeamAccess = permissions.find(item => item.name === SECURITY_TEAM_ACCESS);
115
94
  if (hasTeamAccess) {
116
95
  data.teamAccessScope = FULL_ACCESS;
117
96
  }
118
- var hasApiKeyAccess = permissions.find(function (item) {
119
- return item.name === SECURITY_API_KEY_ACCESS;
120
- });
97
+ const hasApiKeyAccess = permissions.find(item => item.name === SECURITY_API_KEY_ACCESS);
121
98
  if (hasApiKeyAccess) {
122
99
  data.apiKeyAccessScope = FULL_ACCESS;
123
100
  }
124
101
  return data;
125
102
  }, []);
126
- return /*#__PURE__*/_react.default.createElement(_form.Form, {
103
+ return /*#__PURE__*/React.createElement(Form, {
127
104
  data: formData,
128
105
  onChange: onFormChange
129
- }, function (_ref2) {
130
- var data = _ref2.data,
131
- Bind = _ref2.Bind;
132
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
133
- className: _Permissions.gridNoPaddingClass
134
- }, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
106
+ }, ({
107
+ data,
108
+ Bind
109
+ }) => {
110
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, {
111
+ className: gridWithPaddingClass
112
+ }, /*#__PURE__*/React.createElement(Cell, {
135
113
  span: 12
136
- }, data.accessLevel === "custom" && cannotUseAacl && /*#__PURE__*/_react.default.createElement(_Permissions.CannotUseAaclAlert, null))), /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
137
- className: _Permissions.gridNoPaddingClass
138
- }, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
114
+ }, data.accessLevel === "custom" && cannotUseAacl && /*#__PURE__*/React.createElement(CannotUseAaclAlert, null))), /*#__PURE__*/React.createElement(Grid, {
115
+ className: gridWithPaddingClass
116
+ }, /*#__PURE__*/React.createElement(Cell, {
139
117
  span: 6
140
- }, /*#__PURE__*/_react.default.createElement(_Permissions.PermissionInfo, {
141
- title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Access Level"])))
142
- })), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
118
+ }, /*#__PURE__*/React.createElement(PermissionInfo, {
119
+ title: t`Access Level`
120
+ })), /*#__PURE__*/React.createElement(Cell, {
143
121
  span: 6
144
- }, /*#__PURE__*/_react.default.createElement(Bind, {
122
+ }, /*#__PURE__*/React.createElement(Bind, {
145
123
  name: "accessLevel"
146
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
147
- label: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Access Level"])))
148
- }, /*#__PURE__*/_react.default.createElement("option", {
124
+ }, /*#__PURE__*/React.createElement(Select, null, /*#__PURE__*/React.createElement("option", {
149
125
  value: NO_ACCESS
150
- }, t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
126
+ }, t`No access`), /*#__PURE__*/React.createElement("option", {
151
127
  value: FULL_ACCESS
152
- }, t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Full access"])))), /*#__PURE__*/_react.default.createElement("option", {
128
+ }, t`Full access`), /*#__PURE__*/React.createElement("option", {
153
129
  value: CUSTOM_ACCESS
154
- }, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Custom access"])))))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
155
- z: 1,
156
- style: {
157
- marginTop: 10
158
- }
159
- }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
160
- span: 12
161
- }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
162
- use: "overline"
163
- }, t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["API Keys"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
130
+ }, t`Custom access`))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/React.createElement("div", {
131
+ className: "wby-mt-lg"
132
+ }, /*#__PURE__*/React.createElement(PermissionsGroup, {
133
+ title: t`API Keys`
134
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
164
135
  span: 12
165
- }, /*#__PURE__*/_react.default.createElement(Bind, {
136
+ }, /*#__PURE__*/React.createElement(Bind, {
166
137
  name: "apiKeyAccessScope"
167
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
168
- label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
138
+ }, /*#__PURE__*/React.createElement(Select, {
139
+ label: t`Access Scope`,
169
140
  disabled: cannotUseAacl
170
- }, /*#__PURE__*/_react.default.createElement("option", {
141
+ }, /*#__PURE__*/React.createElement("option", {
171
142
  value: NO_ACCESS
172
- }, t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
143
+ }, t`No access`), /*#__PURE__*/React.createElement("option", {
173
144
  value: FULL_ACCESS
174
- }, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Full access"]))))))))), /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
175
- z: 1,
176
- style: {
177
- marginTop: 10
178
- }
179
- }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
180
- span: 12
181
- }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
182
- use: "overline"
183
- }, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Roles"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
145
+ }, t`Full access`)))))), /*#__PURE__*/React.createElement(PermissionsGroup, {
146
+ title: t`Roles`
147
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
184
148
  span: 12
185
- }, /*#__PURE__*/_react.default.createElement(Bind, {
149
+ }, /*#__PURE__*/React.createElement(Bind, {
186
150
  name: "groupAccessScope"
187
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
188
- label: t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
151
+ }, /*#__PURE__*/React.createElement(Select, {
152
+ label: t`Access Scope`,
189
153
  disabled: cannotUseAacl
190
- }, /*#__PURE__*/_react.default.createElement("option", {
154
+ }, /*#__PURE__*/React.createElement("option", {
191
155
  value: NO_ACCESS
192
- }, t(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
156
+ }, t`No access`), /*#__PURE__*/React.createElement("option", {
193
157
  value: FULL_ACCESS
194
- }, t(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2.default)(["Full access"]))))))))), teams && /*#__PURE__*/_react.default.createElement(_Elevation.Elevation, {
195
- z: 1,
196
- style: {
197
- marginTop: 10
198
- }
199
- }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
200
- span: 12
201
- }, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
202
- use: "overline"
203
- }, t(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2.default)(["Teams"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
158
+ }, t`Full access`)))))), teams && /*#__PURE__*/React.createElement(PermissionsGroup, {
159
+ title: t`Teams`
160
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
204
161
  span: 12
205
- }, /*#__PURE__*/_react.default.createElement(Bind, {
162
+ }, /*#__PURE__*/React.createElement(Bind, {
206
163
  name: "teamAccessScope"
207
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
208
- label: t(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
164
+ }, /*#__PURE__*/React.createElement(Select, {
165
+ label: t`Access Scope`,
209
166
  disabled: cannotUseAacl
210
- }, /*#__PURE__*/_react.default.createElement("option", {
167
+ }, /*#__PURE__*/React.createElement("option", {
211
168
  value: NO_ACCESS
212
- }, t(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2.default)(["No access"])))), /*#__PURE__*/_react.default.createElement("option", {
169
+ }, t`No access`), /*#__PURE__*/React.createElement("option", {
213
170
  value: FULL_ACCESS
214
- }, t(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2.default)(["Full access"])))))))))));
171
+ }, t`Full access`))))))));
215
172
  });
216
173
  };
217
174
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_Grid","_Select","_i18n","_Permissions","_form","_Elevation","_Typography","_appSecurity","_appAdmin","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","t","i18n","ns","SECURITY","SECURITY_FULL_ACCESS","concat","SECURITY_GROUP_ACCESS","SECURITY_TEAM_ACCESS","SECURITY_API_KEY_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","SecurityPermissions","exports","_ref","value","onChange","_useSecurity","useSecurity","getPermission","wcp","useWcp","cannotUseAacl","useMemo","teams","canUseTeams","onFormChange","useCallback","formData","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","groupAccessScope","teamAccessScope","apiKeyAccessScope","length","_newValue","apply","hasFullAccess","find","data","hasGroupAccess","hasTeamAccess","hasApiKeyAccess","default","createElement","Form","_ref2","Bind","Fragment","Grid","className","gridNoPaddingClass","Cell","span","CannotUseAaclAlert","PermissionInfo","title","_taggedTemplateLiteral2","Select","label","Elevation","z","style","marginTop","Typography","use","disabled"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n CannotUseAaclAlert,\n PermissionInfo,\n gridNoPaddingClass\n} from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport { AaclPermission, useWcp } from \"@webiny/app-admin\";\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: SecurityPermission[];\n onChange: (value: SecurityPermission[]) => 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: SecurityPermission) => {\n let newValue: SecurityPermission[] = [];\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={gridNoPaddingClass}>\n <Cell span={12}>\n {data.accessLevel === \"custom\" && cannotUseAacl && (\n <CannotUseAaclAlert />\n )}\n </Cell>\n </Grid>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\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 <React.Fragment>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`API Keys`}</Typography>\n </Cell>\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 </Elevation>\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Roles`}</Typography>\n </Cell>\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 </Elevation>\n {teams && (\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{t`Teams`}</Typography>\n </Cell>\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 </Elevation>\n )}\n </React.Fragment>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","useCallback","useMemo","Grid","Cell","Select","i18n","CannotUseAaclAlert","PermissionInfo","gridWithPaddingClass","PermissionsGroup","Form","useSecurity","useWcp","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\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n CannotUseAaclAlert,\n PermissionInfo,\n gridWithPaddingClass,\n PermissionsGroup\n} from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport { AaclPermission, useWcp } from \"@webiny/app-admin\";\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: SecurityPermission[];\n onChange: (value: SecurityPermission[]) => 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: SecurityPermission) => {\n let newValue: SecurityPermission[] = [];\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={\"wby-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,27 +1,21 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _i18n = require("@webiny/app/i18n");
11
- var _Accordion = require("@webiny/ui/Accordion");
12
- var _baselineSecurity24px = require("@webiny/app-admin/assets/icons/baseline-security-24px.svg");
13
- var _SecurityPermissions = require("./SecurityPermissions");
14
- var _PermissionRendererPlugin = require("@webiny/app-admin/plugins/PermissionRendererPlugin");
15
- var _templateObject, _templateObject2;
16
- var t = _i18n.i18n.ns("app-security-admin-users/plugins/permissionRenderer");
17
- var _default = exports.default = new _PermissionRendererPlugin.PermissionRendererPlugin({
18
- render: function render(props) {
19
- return /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
20
- icon: /*#__PURE__*/_react.default.createElement(_baselineSecurity24px.ReactComponent, null),
21
- title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Security"]))),
22
- description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Manage Security app access permissions."]))),
1
+ import React from "react";
2
+ import { i18n } from "@webiny/app/i18n";
3
+ import { Accordion } from "@webiny/admin-ui";
4
+ import { ReactComponent as PermissionsIcon } from "@webiny/icons/security.svg";
5
+ import { SecurityPermissions } from "./SecurityPermissions";
6
+ import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin";
7
+ const t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
8
+ export default 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.`,
23
17
  "data-testid": "permission.security"
24
- }, /*#__PURE__*/_react.default.createElement(_SecurityPermissions.SecurityPermissions, props));
18
+ }, /*#__PURE__*/React.createElement(SecurityPermissions, props));
25
19
  }
26
20
  });
27
21
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_i18n","_Accordion","_baselineSecurity24px","_SecurityPermissions","_PermissionRendererPlugin","_templateObject","_templateObject2","t","i18n","ns","_default","exports","default","PermissionRendererPlugin","render","props","createElement","AccordionItem","icon","ReactComponent","title","_taggedTemplateLiteral2","description","SecurityPermissions"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as SecurityIcon } from \"@webiny/app-admin/assets/icons/baseline-security-24px.svg\";\nimport { SecurityPermissions } from \"./SecurityPermissions\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nexport default new PermissionRendererPlugin({\n render(props) {\n return (\n <AccordionItem\n icon={<SecurityIcon />}\n title={t`Security`}\n description={t`Manage Security app access permissions.`}\n data-testid={\"permission.security\"}\n >\n <SecurityPermissions {...props} />\n </AccordionItem>\n );\n }\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AACA,IAAAI,oBAAA,GAAAJ,OAAA;AACA,IAAAK,yBAAA,GAAAL,OAAA;AAA8F,IAAAM,eAAA,EAAAC,gBAAA;AAE9F,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,qDAAqD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1D,IAAIC,kDAAwB,CAAC;EACxCC,MAAM,WAANA,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIlB,MAAA,CAAAe,OAAA,CAAAI,aAAA,CAACf,UAAA,CAAAgB,aAAa;MACVC,IAAI,eAAErB,MAAA,CAAAe,OAAA,CAAAI,aAAA,CAACd,qBAAA,CAAAiB,cAAY,MAAE,CAAE;MACvBC,KAAK,EAAEb,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAgB,uBAAA,CAAAT,OAAA,iBAAW;MACnBU,WAAW,EAAEf,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAe,uBAAA,CAAAT,OAAA,gDAA0C;MACxD,eAAa;IAAsB,gBAEnCf,MAAA,CAAAe,OAAA,CAAAI,aAAA,CAACb,oBAAA,CAAAoB,mBAAmB,EAAKR,KAAQ,CACtB,CAAC;EAExB;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","i18n","Accordion","ReactComponent","PermissionsIcon","SecurityPermissions","PermissionRendererPlugin","t","ns","render","props","createElement","Item","icon","Icon","label","title","description"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/security.svg\";\nimport { SecurityPermissions } from \"./SecurityPermissions\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nexport default 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,kBAAkB;AACvC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,cAAc,IAAIC,eAAe,QAAQ,4BAA4B;AAC9E,SAASC,mBAAmB;AAC5B,SAASC,wBAAwB,QAAQ,oDAAoD;AAE7F,MAAMC,CAAC,GAAGN,IAAI,CAACO,EAAE,CAAC,qDAAqD,CAAC;AAExE,eAAe,IAAIF,wBAAwB,CAAC;EACxCG,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIV,KAAA,CAAAW,aAAA,CAACT,SAAS,CAACU,IAAI;MACXC,IAAI,eACAb,KAAA,CAAAW,aAAA,CAACT,SAAS,CAACU,IAAI,CAACE,IAAI;QAChBD,IAAI,eAAEb,KAAA,CAAAW,aAAA,CAACP,eAAe,MAAE,CAAE;QAC1BW,KAAK,EAAE;MAAuB,CACjC,CACJ;MACDC,KAAK,EAAET,CAAC,UAAW;MACnBU,WAAW,EAAEV,CAAC,yCAA0C;MACxD,eAAa;IAAsB,gBAEnCP,KAAA,CAAAW,aAAA,CAACN,mBAAmB,EAAKK,KAAQ,CACrB,CAAC;EAEzB;AACJ,CAAC,CAAC","ignoreList":[]}
package/plugins/routes.js CHANGED
@@ -1,47 +1,36 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _reactHelmet = _interopRequireDefault(require("react-helmet"));
10
- var _reactRouter = require("@webiny/react-router");
11
- var _AdminLayout = require("@webiny/app-admin/components/AdminLayout");
12
- var _components = require("@webiny/app-security/components");
13
- var _Groups = require("../ui/views/Groups");
14
- var _ApiKeys = require("../ui/views/ApiKeys");
15
- var _constants = require("./constants");
16
- var plugins = [{
1
+ import React from "react";
2
+ import Helmet from "react-helmet";
3
+ import { Route } from "@webiny/react-router";
4
+ import { AdminLayout } from "@webiny/app-admin/components/AdminLayout";
5
+ import { SecureRoute } from "@webiny/app-security/components";
6
+ import { Groups } from "../ui/views/Groups";
7
+ import { ApiKeys } from "../ui/views/ApiKeys";
8
+ import { Permission } from "./constants";
9
+ const plugins = [{
17
10
  name: "route-security-groups",
18
11
  type: "route",
19
- route: /*#__PURE__*/_react.default.createElement(_reactRouter.Route, {
12
+ route: /*#__PURE__*/React.createElement(Route, {
20
13
  exact: true,
21
14
  path: "/access-management/groups",
22
- render: function render() {
23
- return /*#__PURE__*/_react.default.createElement(_components.SecureRoute, {
24
- permission: _constants.Permission.Groups
25
- }, /*#__PURE__*/_react.default.createElement(_AdminLayout.AdminLayout, null, /*#__PURE__*/_react.default.createElement(_reactHelmet.default, {
26
- title: "Access Management - Groups"
27
- }), /*#__PURE__*/_react.default.createElement(_Groups.Groups, null)));
28
- }
15
+ render: () => /*#__PURE__*/React.createElement(SecureRoute, {
16
+ permission: Permission.Groups
17
+ }, /*#__PURE__*/React.createElement(AdminLayout, null, /*#__PURE__*/React.createElement(Helmet, {
18
+ title: "Access Management - Groups"
19
+ }), /*#__PURE__*/React.createElement(Groups, null)))
29
20
  })
30
21
  }, {
31
22
  name: "route-security-api-keys",
32
23
  type: "route",
33
- route: /*#__PURE__*/_react.default.createElement(_reactRouter.Route, {
24
+ route: /*#__PURE__*/React.createElement(Route, {
34
25
  exact: true,
35
26
  path: "/access-management/api-keys",
36
- render: function render() {
37
- return /*#__PURE__*/_react.default.createElement(_components.SecureRoute, {
38
- permission: _constants.Permission.ApiKeys
39
- }, /*#__PURE__*/_react.default.createElement(_AdminLayout.AdminLayout, {
40
- title: "Access Management - API Keys"
41
- }, /*#__PURE__*/_react.default.createElement(_ApiKeys.ApiKeys, null)));
42
- }
27
+ render: () => /*#__PURE__*/React.createElement(SecureRoute, {
28
+ permission: Permission.ApiKeys
29
+ }, /*#__PURE__*/React.createElement(AdminLayout, {
30
+ title: "Access Management - API Keys"
31
+ }, /*#__PURE__*/React.createElement(ApiKeys, null)))
43
32
  })
44
33
  }];
45
- var _default = exports.default = plugins;
34
+ export default plugins;
46
35
 
47
36
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactHelmet","_reactRouter","_AdminLayout","_components","_Groups","_ApiKeys","_constants","plugins","name","type","route","default","createElement","Route","exact","path","render","SecureRoute","permission","Permission","Groups","AdminLayout","title","ApiKeys","_default","exports"],"sources":["routes.tsx"],"sourcesContent":["import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport { Route } from \"@webiny/react-router\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport { SecureRoute } from \"@webiny/app-security/components\";\nimport { RoutePlugin } from \"@webiny/app/types\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport { Permission } from \"./constants\";\n\nconst plugins: RoutePlugin[] = [\n {\n name: \"route-security-groups\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/groups\"}\n render={() => (\n <SecureRoute permission={Permission.Groups}>\n <AdminLayout>\n <Helmet title={\"Access Management - Groups\"} />\n <Groups />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n },\n {\n name: \"route-security-api-keys\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/api-keys\"}\n render={() => (\n <SecureRoute permission={Permission.ApiKeys}>\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n }\n];\n\nexport default plugins;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AAEA,IAAMQ,OAAsB,GAAG,CAC3B;EACIC,IAAI,EAAE,uBAAuB;EAC7BC,IAAI,EAAE,OAAO;EACbC,KAAK,eACDb,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACX,YAAA,CAAAY,KAAK;IACFC,KAAK;IACLC,IAAI,EAAE,2BAA4B;IAClCC,MAAM,EAAE,SAARA,MAAMA,CAAA;MAAA,oBACFnB,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACT,WAAA,CAAAc,WAAW;QAACC,UAAU,EAAEC,qBAAU,CAACC;MAAO,gBACvCvB,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACV,YAAA,CAAAmB,WAAW,qBACRxB,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACZ,YAAA,CAAAW,OAAM;QAACW,KAAK,EAAE;MAA6B,CAAE,CAAC,eAC/CzB,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACR,OAAA,CAAAgB,MAAM,MAAE,CACA,CACJ,CAAC;IAAA;EAChB,CACL;AAET,CAAC,EACD;EACIZ,IAAI,EAAE,yBAAyB;EAC/BC,IAAI,EAAE,OAAO;EACbC,KAAK,eACDb,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACX,YAAA,CAAAY,KAAK;IACFC,KAAK;IACLC,IAAI,EAAE,6BAA8B;IACpCC,MAAM,EAAE,SAARA,MAAMA,CAAA;MAAA,oBACFnB,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACT,WAAA,CAAAc,WAAW;QAACC,UAAU,EAAEC,qBAAU,CAACI;MAAQ,gBACxC1B,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACV,YAAA,CAAAmB,WAAW;QAACC,KAAK,EAAE;MAA+B,gBAC/CzB,MAAA,CAAAc,OAAA,CAAAC,aAAA,CAACP,QAAA,CAAAkB,OAAO,MAAE,CACD,CACJ,CAAC;IAAA;EAChB,CACL;AAET,CAAC,CACJ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAd,OAAA,GAEaJ,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["React","Helmet","Route","AdminLayout","SecureRoute","Groups","ApiKeys","Permission","plugins","name","type","route","createElement","exact","path","render","permission","title"],"sources":["routes.tsx"],"sourcesContent":["import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport { Route } from \"@webiny/react-router\";\nimport { AdminLayout } from \"@webiny/app-admin/components/AdminLayout\";\nimport { SecureRoute } from \"@webiny/app-security/components\";\nimport { RoutePlugin } from \"@webiny/app/types\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport { Permission } from \"./constants\";\n\nconst plugins: RoutePlugin[] = [\n {\n name: \"route-security-groups\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/groups\"}\n render={() => (\n <SecureRoute permission={Permission.Groups}>\n <AdminLayout>\n <Helmet title={\"Access Management - Groups\"} />\n <Groups />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n },\n {\n name: \"route-security-api-keys\",\n type: \"route\",\n route: (\n <Route\n exact\n path={\"/access-management/api-keys\"}\n render={() => (\n <SecureRoute permission={Permission.ApiKeys}>\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n </SecureRoute>\n )}\n />\n )\n }\n];\n\nexport default plugins;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,cAAc;AACjC,SAASC,KAAK,QAAQ,sBAAsB;AAC5C,SAASC,WAAW,QAAQ,0CAA0C;AACtE,SAASC,WAAW,QAAQ,iCAAiC;AAE7D,SAASC,MAAM;AACf,SAASC,OAAO;AAChB,SAASC,UAAU;AAEnB,MAAMC,OAAsB,GAAG,CAC3B;EACIC,IAAI,EAAE,uBAAuB;EAC7BC,IAAI,EAAE,OAAO;EACbC,KAAK,eACDX,KAAA,CAAAY,aAAA,CAACV,KAAK;IACFW,KAAK;IACLC,IAAI,EAAE,2BAA4B;IAClCC,MAAM,EAAEA,CAAA,kBACJf,KAAA,CAAAY,aAAA,CAACR,WAAW;MAACY,UAAU,EAAET,UAAU,CAACF;IAAO,gBACvCL,KAAA,CAAAY,aAAA,CAACT,WAAW,qBACRH,KAAA,CAAAY,aAAA,CAACX,MAAM;MAACgB,KAAK,EAAE;IAA6B,CAAE,CAAC,eAC/CjB,KAAA,CAAAY,aAAA,CAACP,MAAM,MAAE,CACA,CACJ;EACf,CACL;AAET,CAAC,EACD;EACII,IAAI,EAAE,yBAAyB;EAC/BC,IAAI,EAAE,OAAO;EACbC,KAAK,eACDX,KAAA,CAAAY,aAAA,CAACV,KAAK;IACFW,KAAK;IACLC,IAAI,EAAE,6BAA8B;IACpCC,MAAM,EAAEA,CAAA,kBACJf,KAAA,CAAAY,aAAA,CAACR,WAAW;MAACY,UAAU,EAAET,UAAU,CAACD;IAAQ,gBACxCN,KAAA,CAAAY,aAAA,CAACT,WAAW;MAACc,KAAK,EAAE;IAA+B,gBAC/CjB,KAAA,CAAAY,aAAA,CAACN,OAAO,MAAE,CACD,CACJ;EACf,CACL;AAET,CAAC,CACJ;AAED,eAAeE,OAAO","ignoreList":[]}
@@ -1,19 +1,12 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var React = _interopRequireWildcard(require("react"));
9
- var _NotAuthorizedError = require("../components/NotAuthorizedError");
10
- var plugin = {
1
+ import * as React from "react";
2
+ import { NotAuthorizedError } from "../components/NotAuthorizedError";
3
+ const plugin = {
11
4
  type: "secure-route-error",
12
5
  name: "secure-route-error",
13
- render: function render() {
14
- return /*#__PURE__*/React.createElement(_NotAuthorizedError.NotAuthorizedError, null);
6
+ render() {
7
+ return /*#__PURE__*/React.createElement(NotAuthorizedError, null);
15
8
  }
16
9
  };
17
- var _default = exports.default = plugin;
10
+ export default plugin;
18
11
 
19
12
  //# sourceMappingURL=secureRouteError.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_NotAuthorizedError","plugin","type","name","render","createElement","NotAuthorizedError","_default","exports","default"],"sources":["secureRouteError.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { NotAuthorizedError } from \"~/components/NotAuthorizedError\";\n\ntype SecureRouteErrorPlugin = Plugin & { render: () => React.ReactNode };\n\nconst plugin: SecureRouteErrorPlugin = {\n type: \"secure-route-error\",\n name: \"secure-route-error\",\n render(): React.ReactElement {\n return <NotAuthorizedError />;\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AAIA,IAAME,MAA8B,GAAG;EACnCC,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAE,oBAAoB;EAC1BC,MAAM,WAANA,MAAMA,CAAA,EAAuB;IACzB,oBAAOP,KAAA,CAAAQ,aAAA,CAACL,mBAAA,CAAAM,kBAAkB,MAAE,CAAC;EACjC;AACJ,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaR,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["React","NotAuthorizedError","plugin","type","name","render","createElement"],"sources":["secureRouteError.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { NotAuthorizedError } from \"~/components/NotAuthorizedError\";\n\ntype SecureRouteErrorPlugin = Plugin & { render: () => React.ReactNode };\n\nconst plugin: SecureRouteErrorPlugin = {\n type: \"secure-route-error\",\n name: \"secure-route-error\",\n render(): React.ReactElement {\n return <NotAuthorizedError />;\n }\n};\n\nexport default plugin;\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,kBAAkB;AAI3B,MAAMC,MAA8B,GAAG;EACnCC,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAE,oBAAoB;EAC1BC,MAAMA,CAAA,EAAuB;IACzB,oBAAOL,KAAA,CAAAM,aAAA,CAACL,kBAAkB,MAAE,CAAC;EACjC;AACJ,CAAC;AAED,eAAeC,MAAM","ignoreList":[]}
package/types.js CHANGED
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=types.js.map