@webiny/app-security-access-management 6.0.0-alpha.5 → 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.
Files changed (138) hide show
  1. package/Extension.d.ts +2 -0
  2. package/Extension.js +79 -0
  3. package/Extension.js.map +1 -0
  4. package/README.md +7 -113
  5. package/SecurityPermissions.d.ts +2 -0
  6. package/SecurityPermissions.js +47 -0
  7. package/SecurityPermissions.js.map +1 -0
  8. package/{plugins/constants.d.ts → constants.d.ts} +1 -1
  9. package/{plugins/constants.js → constants.js} +1 -1
  10. package/constants.js.map +1 -0
  11. package/index.d.ts +1 -2
  12. package/index.js +1 -81
  13. package/index.js.map +1 -1
  14. package/package.json +16 -24
  15. package/routes.d.ts +21 -0
  16. package/routes.js +41 -0
  17. package/routes.js.map +1 -0
  18. package/types.d.ts +5 -4
  19. package/types.js.map +1 -1
  20. package/ui/views/ApiKeys/ApiKeyForm.d.ts +5 -3
  21. package/ui/views/ApiKeys/ApiKeyForm.js +130 -79
  22. package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
  23. package/ui/views/ApiKeys/ApiKeys.d.ts +1 -7
  24. package/ui/views/ApiKeys/ApiKeys.js +14 -8
  25. package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
  26. package/ui/views/ApiKeys/ApiKeysDataList.d.ts +2 -2
  27. package/ui/views/ApiKeys/ApiKeysDataList.js +43 -34
  28. package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
  29. package/ui/views/ApiKeys/graphql.d.ts +1 -1
  30. package/ui/views/ApiKeys/graphql.js +1 -0
  31. package/ui/views/ApiKeys/graphql.js.map +1 -1
  32. package/ui/views/ApiKeys/index.d.ts +1 -1
  33. package/ui/views/ApiKeys/index.js +1 -1
  34. package/ui/views/ApiKeys/index.js.map +1 -1
  35. package/ui/views/ApiKeys/utils.d.ts +3 -2
  36. package/ui/views/ApiKeys/utils.js +7 -4
  37. package/ui/views/ApiKeys/utils.js.map +1 -1
  38. package/ui/views/Roles/Roles.d.ts +2 -0
  39. package/ui/views/Roles/Roles.js +18 -0
  40. package/ui/views/Roles/Roles.js.map +1 -0
  41. package/ui/views/Roles/RolesDataList.d.ts +5 -0
  42. package/ui/views/{Groups/GroupsDataList.js → Roles/RolesDataList.js} +41 -35
  43. package/ui/views/Roles/RolesDataList.js.map +1 -0
  44. package/ui/views/Roles/RolesForm.d.ts +6 -0
  45. package/ui/views/{Groups/GroupsForm.js → Roles/RolesForm.js} +103 -79
  46. package/ui/views/Roles/RolesForm.js.map +1 -0
  47. package/ui/views/Roles/graphql.d.ts +13 -0
  48. package/ui/views/{Groups → Roles}/graphql.js +15 -15
  49. package/ui/views/Roles/graphql.js.map +1 -0
  50. package/ui/views/Roles/index.d.ts +1 -0
  51. package/ui/views/Roles/index.js +3 -0
  52. package/ui/views/Roles/index.js.map +1 -0
  53. package/ui/views/Teams/Teams.d.ts +1 -7
  54. package/ui/views/Teams/Teams.js +14 -8
  55. package/ui/views/Teams/Teams.js.map +1 -1
  56. package/ui/views/Teams/TeamsDataList.d.ts +2 -2
  57. package/ui/views/Teams/TeamsDataList.js +28 -22
  58. package/ui/views/Teams/TeamsDataList.js.map +1 -1
  59. package/ui/views/Teams/TeamsForm.d.ts +3 -2
  60. package/ui/views/Teams/TeamsForm.js +103 -77
  61. package/ui/views/Teams/TeamsForm.js.map +1 -1
  62. package/ui/views/Teams/graphql.d.ts +1 -1
  63. package/ui/views/Teams/graphql.js +1 -1
  64. package/ui/views/Teams/graphql.js.map +1 -1
  65. package/ui/views/Teams/index.d.ts +1 -1
  66. package/ui/views/Teams/index.js +1 -1
  67. package/ui/views/Teams/index.js.map +1 -1
  68. package/components/GroupAutocomplete/graphql.d.ts +0 -1
  69. package/components/GroupAutocomplete/graphql.js +0 -18
  70. package/components/GroupAutocomplete/graphql.js.map +0 -1
  71. package/components/GroupAutocomplete/index.d.ts +0 -5
  72. package/components/GroupAutocomplete/index.js +0 -18
  73. package/components/GroupAutocomplete/index.js.map +0 -1
  74. package/components/GroupsMultiAutocomplete/graphql.d.ts +0 -1
  75. package/components/GroupsMultiAutocomplete/graphql.js +0 -23
  76. package/components/GroupsMultiAutocomplete/graphql.js.map +0 -1
  77. package/components/GroupsMultiAutocomplete/index.d.ts +0 -5
  78. package/components/GroupsMultiAutocomplete/index.js +0 -19
  79. package/components/GroupsMultiAutocomplete/index.js.map +0 -1
  80. package/components/NotAuthorizedError/NotAuthorizedError.d.ts +0 -2
  81. package/components/NotAuthorizedError/NotAuthorizedError.js +0 -23
  82. package/components/NotAuthorizedError/NotAuthorizedError.js.map +0 -1
  83. package/components/NotAuthorizedError/SecureRouteError.svg +0 -1
  84. package/components/NotAuthorizedError/index.d.ts +0 -1
  85. package/components/NotAuthorizedError/index.js +0 -3
  86. package/components/NotAuthorizedError/index.js.map +0 -1
  87. package/components/TeamAutocomplete/graphql.d.ts +0 -1
  88. package/components/TeamAutocomplete/graphql.js +0 -18
  89. package/components/TeamAutocomplete/graphql.js.map +0 -1
  90. package/components/TeamAutocomplete/index.d.ts +0 -5
  91. package/components/TeamAutocomplete/index.js +0 -18
  92. package/components/TeamAutocomplete/index.js.map +0 -1
  93. package/components/TeamsMultiAutocomplete/graphql.d.ts +0 -1
  94. package/components/TeamsMultiAutocomplete/graphql.js +0 -23
  95. package/components/TeamsMultiAutocomplete/graphql.js.map +0 -1
  96. package/components/TeamsMultiAutocomplete/index.d.ts +0 -5
  97. package/components/TeamsMultiAutocomplete/index.js +0 -19
  98. package/components/TeamsMultiAutocomplete/index.js.map +0 -1
  99. package/plugins/constants.js.map +0 -1
  100. package/plugins/index.d.ts +0 -3
  101. package/plugins/index.js +0 -6
  102. package/plugins/index.js.map +0 -1
  103. package/plugins/installation.d.ts +0 -3
  104. package/plugins/installation.js +0 -100
  105. package/plugins/installation.js.map +0 -1
  106. package/plugins/permissionRenderer/SecurityPermissions.d.ts +0 -8
  107. package/plugins/permissionRenderer/SecurityPermissions.js +0 -175
  108. package/plugins/permissionRenderer/SecurityPermissions.js.map +0 -1
  109. package/plugins/permissionRenderer/index.d.ts +0 -3
  110. package/plugins/permissionRenderer/index.js +0 -22
  111. package/plugins/permissionRenderer/index.js.map +0 -1
  112. package/plugins/routes.d.ts +0 -3
  113. package/plugins/routes.js +0 -36
  114. package/plugins/routes.js.map +0 -1
  115. package/plugins/secureRouteError.d.ts +0 -7
  116. package/plugins/secureRouteError.js +0 -12
  117. package/plugins/secureRouteError.js.map +0 -1
  118. package/ui/elements/GroupAutocompleteElement.d.ts +0 -6
  119. package/ui/elements/GroupAutocompleteElement.js +0 -32
  120. package/ui/elements/GroupAutocompleteElement.js.map +0 -1
  121. package/ui/elements/GroupsMultiAutocompleteElement.d.ts +0 -6
  122. package/ui/elements/GroupsMultiAutocompleteElement.js +0 -32
  123. package/ui/elements/GroupsMultiAutocompleteElement.js.map +0 -1
  124. package/ui/elements/TeamAutocompleteElement.d.ts +0 -6
  125. package/ui/elements/TeamAutocompleteElement.js +0 -32
  126. package/ui/elements/TeamAutocompleteElement.js.map +0 -1
  127. package/ui/views/Groups/Groups.d.ts +0 -8
  128. package/ui/views/Groups/Groups.js +0 -12
  129. package/ui/views/Groups/Groups.js.map +0 -1
  130. package/ui/views/Groups/GroupsDataList.d.ts +0 -5
  131. package/ui/views/Groups/GroupsDataList.js.map +0 -1
  132. package/ui/views/Groups/GroupsForm.d.ts +0 -5
  133. package/ui/views/Groups/GroupsForm.js.map +0 -1
  134. package/ui/views/Groups/graphql.d.ts +0 -13
  135. package/ui/views/Groups/graphql.js.map +0 -1
  136. package/ui/views/Groups/index.d.ts +0 -1
  137. package/ui/views/Groups/index.js +0 -3
  138. package/ui/views/Groups/index.js.map +0 -1
package/Extension.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const AccessManagement: React.MemoExoticComponent<() => React.JSX.Element>;
package/Extension.js ADDED
@@ -0,0 +1,79 @@
1
+ import React, { Fragment, memo } from "react";
2
+ import { useRouter, AdminConfig, AdminLayout, Wcp } from "@webiny/app-admin";
3
+ import { HasPermission } from "@webiny/app-admin";
4
+ import { Permission } from "./constants.js";
5
+ import { Roles } from "./ui/views/Roles/index.js";
6
+ import { Teams } from "./ui/views/Teams/index.js";
7
+ import { ApiKeys } from "./ui/views/ApiKeys/index.js";
8
+ import { Routes } from "./routes.js";
9
+ import { SecurityPermissions } from "./SecurityPermissions.js";
10
+ const {
11
+ Menu,
12
+ Route
13
+ } = AdminConfig;
14
+ const AccessManagementExtension = () => {
15
+ const router = useRouter();
16
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SecurityPermissions, null), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
17
+ name: Permission.Roles
18
+ }, /*#__PURE__*/React.createElement(Route, {
19
+ route: Routes.Roles.List,
20
+ element: /*#__PURE__*/React.createElement(AdminLayout, {
21
+ title: "Access Management - Roles"
22
+ }, /*#__PURE__*/React.createElement(Roles, null))
23
+ })), /*#__PURE__*/React.createElement(Wcp.CanUseTeams, null, /*#__PURE__*/React.createElement(HasPermission, {
24
+ name: Permission.Teams
25
+ }, /*#__PURE__*/React.createElement(Route, {
26
+ route: Routes.Teams.List,
27
+ element: /*#__PURE__*/React.createElement(AdminLayout, {
28
+ title: "Access Management - Teams"
29
+ }, /*#__PURE__*/React.createElement(Teams, null))
30
+ }))), /*#__PURE__*/React.createElement(HasPermission, {
31
+ name: Permission.ApiKeys
32
+ }, /*#__PURE__*/React.createElement(Route, {
33
+ route: Routes.ApiKeys.List,
34
+ element: /*#__PURE__*/React.createElement(AdminLayout, {
35
+ title: "Access Management - API Keys"
36
+ }, /*#__PURE__*/React.createElement(ApiKeys, null))
37
+ })), /*#__PURE__*/React.createElement(HasPermission, {
38
+ any: [Permission.Roles, Permission.ApiKeys, Permission.Teams]
39
+ }, /*#__PURE__*/React.createElement(Menu, {
40
+ name: "security.settings",
41
+ parent: "settings",
42
+ element: /*#__PURE__*/React.createElement(Menu.Group, {
43
+ text: "Access Management"
44
+ })
45
+ })), /*#__PURE__*/React.createElement(HasPermission, {
46
+ name: Permission.Roles
47
+ }, /*#__PURE__*/React.createElement(Menu, {
48
+ name: "security.roles",
49
+ parent: "settings",
50
+ element: /*#__PURE__*/React.createElement(Menu.Link, {
51
+ text: "Roles",
52
+ to: router.getLink(Routes.Roles.List),
53
+ pinnable: true
54
+ })
55
+ })), /*#__PURE__*/React.createElement(Wcp.CanUseTeams, null, /*#__PURE__*/React.createElement(HasPermission, {
56
+ name: Permission.Teams
57
+ }, /*#__PURE__*/React.createElement(Menu, {
58
+ name: "security.teams",
59
+ parent: "settings",
60
+ element: /*#__PURE__*/React.createElement(Menu.Link, {
61
+ text: "Teams",
62
+ to: router.getLink(Routes.Teams.List),
63
+ pinnable: true
64
+ })
65
+ }))), /*#__PURE__*/React.createElement(HasPermission, {
66
+ name: Permission.ApiKeys
67
+ }, /*#__PURE__*/React.createElement(Menu, {
68
+ name: "security.apiKeys",
69
+ parent: "settings",
70
+ element: /*#__PURE__*/React.createElement(Menu.Link, {
71
+ text: "API Keys",
72
+ to: router.getLink(Routes.ApiKeys.List),
73
+ pinnable: true
74
+ })
75
+ }))));
76
+ };
77
+ export const AccessManagement = /*#__PURE__*/memo(AccessManagementExtension);
78
+
79
+ //# sourceMappingURL=Extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Fragment","memo","useRouter","AdminConfig","AdminLayout","Wcp","HasPermission","Permission","Roles","Teams","ApiKeys","Routes","SecurityPermissions","Menu","Route","AccessManagementExtension","router","createElement","name","route","List","element","title","CanUseTeams","any","parent","Group","text","Link","to","getLink","pinnable","AccessManagement"],"sources":["Extension.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { useRouter, AdminConfig, AdminLayout, Wcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { Permission } from \"~/constants.js\";\nimport { Roles } from \"~/ui/views/Roles/index.js\";\nimport { Teams } from \"~/ui/views/Teams/index.js\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { SecurityPermissions } from \"./SecurityPermissions.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nconst AccessManagementExtension = () => {\n const router = useRouter();\n\n return (\n <Fragment>\n <SecurityPermissions />\n <AdminConfig>\n <HasPermission name={Permission.Roles}>\n <Route\n route={Routes.Roles.List}\n element={\n <AdminLayout title={\"Access Management - Roles\"}>\n <Roles />\n </AdminLayout>\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Route\n route={Routes.Teams.List}\n element={\n <AdminLayout title={\"Access Management - Teams\"}>\n <Teams />\n </AdminLayout>\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n <HasPermission name={Permission.ApiKeys}>\n <Route\n route={Routes.ApiKeys.List}\n element={\n <AdminLayout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </AdminLayout>\n }\n />\n </HasPermission>\n\n <HasPermission any={[Permission.Roles, Permission.ApiKeys, Permission.Teams]}>\n <Menu\n name={\"security.settings\"}\n parent={\"settings\"}\n element={<Menu.Group text={\"Access Management\"} />}\n />\n </HasPermission>\n <HasPermission name={Permission.Roles}>\n <Menu\n name={\"security.roles\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"Roles\"}\n to={router.getLink(Routes.Roles.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Menu\n name={\"security.teams\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"Teams\"}\n to={router.getLink(Routes.Teams.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n\n <HasPermission name={Permission.ApiKeys}>\n <Menu\n name={\"security.apiKeys\"}\n parent={\"settings\"}\n element={\n <Menu.Link\n text={\"API Keys\"}\n to={router.getLink(Routes.ApiKeys.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n </AdminConfig>\n </Fragment>\n );\n};\n\nexport const AccessManagement = memo(AccessManagementExtension);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,IAAI,QAAQ,OAAO;AAC7C,SAASC,SAAS,EAAEC,WAAW,EAAEC,WAAW,EAAEC,GAAG,QAAQ,mBAAmB;AAC5E,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,UAAU;AACnB,SAASC,KAAK;AACd,SAASC,KAAK;AACd,SAASC,OAAO;AAChB,SAASC,MAAM;AACf,SAASC,mBAAmB;AAE5B,MAAM;EAAEC,IAAI;EAAEC;AAAM,CAAC,GAAGX,WAAW;AAEnC,MAAMY,yBAAyB,GAAGA,CAAA,KAAM;EACpC,MAAMC,MAAM,GAAGd,SAAS,CAAC,CAAC;EAE1B,oBACIH,KAAA,CAAAkB,aAAA,CAACjB,QAAQ,qBACLD,KAAA,CAAAkB,aAAA,CAACL,mBAAmB,MAAE,CAAC,eACvBb,KAAA,CAAAkB,aAAA,CAACd,WAAW,qBACRJ,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACY,IAAI,EAAEX,UAAU,CAACC;EAAM,gBAClCT,KAAA,CAAAkB,aAAA,CAACH,KAAK;IACFK,KAAK,EAAER,MAAM,CAACH,KAAK,CAACY,IAAK;IACzBC,OAAO,eACHtB,KAAA,CAAAkB,aAAA,CAACb,WAAW;MAACkB,KAAK,EAAE;IAA4B,gBAC5CvB,KAAA,CAAAkB,aAAA,CAACT,KAAK,MAAE,CACC;EAChB,CACJ,CACU,CAAC,eAChBT,KAAA,CAAAkB,aAAA,CAACZ,GAAG,CAACkB,WAAW,qBACZxB,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACY,IAAI,EAAEX,UAAU,CAACE;EAAM,gBAClCV,KAAA,CAAAkB,aAAA,CAACH,KAAK;IACFK,KAAK,EAAER,MAAM,CAACF,KAAK,CAACW,IAAK;IACzBC,OAAO,eACHtB,KAAA,CAAAkB,aAAA,CAACb,WAAW;MAACkB,KAAK,EAAE;IAA4B,gBAC5CvB,KAAA,CAAAkB,aAAA,CAACR,KAAK,MAAE,CACC;EAChB,CACJ,CACU,CACF,CAAC,eAClBV,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACY,IAAI,EAAEX,UAAU,CAACG;EAAQ,gBACpCX,KAAA,CAAAkB,aAAA,CAACH,KAAK;IACFK,KAAK,EAAER,MAAM,CAACD,OAAO,CAACU,IAAK;IAC3BC,OAAO,eACHtB,KAAA,CAAAkB,aAAA,CAACb,WAAW;MAACkB,KAAK,EAAE;IAA+B,gBAC/CvB,KAAA,CAAAkB,aAAA,CAACP,OAAO,MAAE,CACD;EAChB,CACJ,CACU,CAAC,eAEhBX,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACkB,GAAG,EAAE,CAACjB,UAAU,CAACC,KAAK,EAAED,UAAU,CAACG,OAAO,EAAEH,UAAU,CAACE,KAAK;EAAE,gBACzEV,KAAA,CAAAkB,aAAA,CAACJ,IAAI;IACDK,IAAI,EAAE,mBAAoB;IAC1BO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eAAEtB,KAAA,CAAAkB,aAAA,CAACJ,IAAI,CAACa,KAAK;MAACC,IAAI,EAAE;IAAoB,CAAE;EAAE,CACtD,CACU,CAAC,eAChB5B,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACY,IAAI,EAAEX,UAAU,CAACC;EAAM,gBAClCT,KAAA,CAAAkB,aAAA,CAACJ,IAAI;IACDK,IAAI,EAAE,gBAAiB;IACvBO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eACHtB,KAAA,CAAAkB,aAAA,CAACJ,IAAI,CAACe,IAAI;MACND,IAAI,EAAE,OAAQ;MACdE,EAAE,EAAEb,MAAM,CAACc,OAAO,CAACnB,MAAM,CAACH,KAAK,CAACY,IAAI,CAAE;MACtCW,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAChBhC,KAAA,CAAAkB,aAAA,CAACZ,GAAG,CAACkB,WAAW,qBACZxB,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACY,IAAI,EAAEX,UAAU,CAACE;EAAM,gBAClCV,KAAA,CAAAkB,aAAA,CAACJ,IAAI;IACDK,IAAI,EAAE,gBAAiB;IACvBO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eACHtB,KAAA,CAAAkB,aAAA,CAACJ,IAAI,CAACe,IAAI;MACND,IAAI,EAAE,OAAQ;MACdE,EAAE,EAAEb,MAAM,CAACc,OAAO,CAACnB,MAAM,CAACF,KAAK,CAACW,IAAI,CAAE;MACtCW,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CACF,CAAC,eAElBhC,KAAA,CAAAkB,aAAA,CAACX,aAAa;IAACY,IAAI,EAAEX,UAAU,CAACG;EAAQ,gBACpCX,KAAA,CAAAkB,aAAA,CAACJ,IAAI;IACDK,IAAI,EAAE,kBAAmB;IACzBO,MAAM,EAAE,UAAW;IACnBJ,OAAO,eACHtB,KAAA,CAAAkB,aAAA,CAACJ,IAAI,CAACe,IAAI;MACND,IAAI,EAAE,UAAW;MACjBE,EAAE,EAAEb,MAAM,CAACc,OAAO,CAACnB,MAAM,CAACD,OAAO,CAACU,IAAI,CAAE;MACxCW,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CACN,CACP,CAAC;AAEnB,CAAC;AAED,OAAO,MAAMC,gBAAgB,gBAAG/B,IAAI,CAACc,yBAAyB,CAAC","ignoreList":[]}
package/README.md CHANGED
@@ -1,117 +1,11 @@
1
- # @webiny/app-security
2
- [![](https://img.shields.io/npm/dw/@webiny/app-security.svg)](https://www.npmjs.com/package/@webiny/app-security)
3
- [![](https://img.shields.io/npm/v/@webiny/app-security.svg)](https://www.npmjs.com/package/@webiny/app-security)
4
- [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
5
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
1
+ # @webiny/app-security-access-management
6
2
 
7
- Exposes a simple `SecurityProvider` React provider component and enables you to quickly retrieve the currently signed-in user via the `useSecurity` React hook.
3
+ > [!NOTE]
4
+ > This package is part of the [Webiny](https://www.webiny.com) monorepo.
5
+ > It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
8
6
 
9
- ## Install
10
- ```
11
- npm install --save @webiny/app-security
12
- ```
7
+ 📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
13
8
 
14
- Or if you prefer yarn:
15
- ```
16
- yarn add @webiny/app-security
17
- ```
9
+ ---
18
10
 
19
- ## Quick Example
20
-
21
- First, make sure you mount the `SecurityProvider` React provider component in your application's entrypoint component, for example the `App` component:
22
-
23
- ```tsx
24
- import React from "react";
25
- import { Routes } from "@webiny/app/components/Routes";
26
- import { BrowserRouter } from "@webiny/react-router";
27
- import { SecurityProvider } from "@webiny/app-security";
28
- import Authenticator from "./components/Authenticator";
29
-
30
- export const App = () => (
31
- <>
32
- {/*
33
- <SecurityProvider> is a generic provider of identity information. 3rd party identity providers (like Cognito,
34
- Okta, Auth0) will handle the authentication, and set the information about the user into this provider,
35
- so other parts of the system have a centralized place to fetch user information from.
36
- */}
37
- <SecurityProvider>
38
- {/* This is the component that might trigger the initial authentication
39
- process and set the retrieved user data into the Security provider.*/}
40
- <Authenticator>
41
- <BrowserRouter basename={process.env.PUBLIC_URL}>
42
- <Routes />
43
- </BrowserRouter>
44
- </Authenticator>
45
- </SecurityProvider>
46
- </>
47
- );
48
- ```
49
-
50
- A simple `Authenticator` React component (uses Amazon Cognito and AWS Amplify's [`Auth`](https://github.com/aws-amplify/amplify-js/blob/main/packages/auth/src/Auth.ts#L100) class):
51
-
52
- ```tsx
53
- import React, { useEffect } from "react";
54
- import { Auth } from "@aws-amplify/auth";
55
- import { useSecurity, SecurityIdentity } from "@webiny/app-security";
56
-
57
- // Apart from the React component, we also configure the Auth class here.
58
- Auth.configure({
59
- region: process.env.REACT_APP_USER_POOL_REGION,
60
- userPoolId: process.env.REACT_APP_USER_POOL_ID,
61
- userPoolWebClientId: process.env.REACT_APP_USER_POOL_WEB_CLIENT_ID,
62
- oauth: {
63
- domain: process.env.REACT_APP_USER_POOL_DOMAIN,
64
- redirectSignIn: `${location.origin}?signIn`,
65
- redirectSignOut: `${location.origin}?signOut`,
66
- responseType: "token"
67
- }
68
- });
69
- interface AuthenticatorProps {
70
- children: React.ReactNode;
71
- }
72
- // The `Authenticator` component.
73
- const Authenticator = (props: AuthenticatorProps) => {
74
- const { setIdentity } = useSecurity();
75
-
76
- useEffect(() => {
77
- // Get the currently signed-in user.
78
- Auth.currentSession().then(response => {
79
- const user = response.getIdToken().payload;
80
- setIdentity(
81
- new SecurityIdentity({
82
- login: user.email,
83
- firstName: user.given_name,
84
- lastName: user.family_name,
85
- logout: () => {
86
- Auth.signOut();
87
- setIdentity(null);
88
- }
89
- })
90
- );
91
- }).catch(() => { /* Do nothing. */ });
92
- }, []);
93
-
94
- return <>{props.children}</>;
95
- };
96
-
97
- export default Authenticator;
98
- ```
99
-
100
- Finally, use the `useSecurity` React hook in any of your components:
101
-
102
- ```tsx
103
- import React from "react";
104
- import { useSecurity } from "@webiny/app-security";
105
-
106
- const MyComponent = () => {
107
- const { identity } = useSecurity();
108
-
109
- if (identity) {
110
- return <>Logged in.</>;
111
- }
112
-
113
- return <>Not logged in.</>;
114
- };
115
-
116
- export default MyComponent;
117
- ```
11
+ _This README file is automatically generated during the publish process._
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SecurityPermissions: () => React.JSX.Element;
@@ -0,0 +1,47 @@
1
+ import React, { useMemo } from "react";
2
+ import { AdminConfig, useWcp } from "@webiny/app-admin";
3
+ import { ReactComponent as PermissionsIcon } from "@webiny/icons/security.svg";
4
+ const {
5
+ Security
6
+ } = AdminConfig;
7
+ export const SecurityPermissions = () => {
8
+ const wcp = useWcp();
9
+ const teams = wcp.canUseTeams();
10
+ const schema = useMemo(() => {
11
+ const entities = [{
12
+ id: "apiKey",
13
+ title: "API Keys",
14
+ permission: "security.apiKey",
15
+ scopes: ["full"]
16
+ }, {
17
+ id: "group",
18
+ title: "Roles",
19
+ permission: "security.group",
20
+ scopes: ["full"]
21
+ }];
22
+ if (teams) {
23
+ entities.push({
24
+ id: "team",
25
+ title: "Teams",
26
+ permission: "security.team",
27
+ scopes: ["full"]
28
+ });
29
+ }
30
+ return {
31
+ prefix: "security",
32
+ fullAccess: {
33
+ name: "security.*"
34
+ },
35
+ entities
36
+ };
37
+ }, [teams]);
38
+ return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Security.Permissions, {
39
+ name: "security",
40
+ title: "Security",
41
+ description: "Manage Security permissions.",
42
+ icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
43
+ schema: schema
44
+ }));
45
+ };
46
+
47
+ //# sourceMappingURL=SecurityPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","AdminConfig","useWcp","ReactComponent","PermissionsIcon","Security","SecurityPermissions","wcp","teams","canUseTeams","schema","entities","id","title","permission","scopes","push","prefix","fullAccess","name","createElement","Permissions","description","icon"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { AdminConfig, useWcp } from \"@webiny/app-admin\";\nimport type { EntityDefinition } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/security.svg\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermissions = () => {\n const wcp = useWcp();\n const teams = wcp.canUseTeams();\n\n const schema = useMemo(() => {\n const entities: EntityDefinition[] = [\n {\n id: \"apiKey\",\n title: \"API Keys\",\n permission: \"security.apiKey\",\n scopes: [\"full\"]\n },\n {\n id: \"group\",\n title: \"Roles\",\n permission: \"security.group\",\n scopes: [\"full\"]\n }\n ];\n\n if (teams) {\n entities.push({\n id: \"team\",\n title: \"Teams\",\n permission: \"security.team\",\n scopes: [\"full\"]\n });\n }\n\n return {\n prefix: \"security\",\n fullAccess: { name: \"security.*\" },\n entities\n };\n }, [teams]);\n\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"security\"\n title=\"Security\"\n description=\"Manage Security permissions.\"\n icon={<PermissionsIcon />}\n schema={schema}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,WAAW,EAAEC,MAAM,QAAQ,mBAAmB;AAEvD,SAASC,cAAc,IAAIC,eAAe,QAAQ,4BAA4B;AAE9E,MAAM;EAAEC;AAAS,CAAC,GAAGJ,WAAW;AAEhC,OAAO,MAAMK,mBAAmB,GAAGA,CAAA,KAAM;EACrC,MAAMC,GAAG,GAAGL,MAAM,CAAC,CAAC;EACpB,MAAMM,KAAK,GAAGD,GAAG,CAACE,WAAW,CAAC,CAAC;EAE/B,MAAMC,MAAM,GAAGV,OAAO,CAAC,MAAM;IACzB,MAAMW,QAA4B,GAAG,CACjC;MACIC,EAAE,EAAE,QAAQ;MACZC,KAAK,EAAE,UAAU;MACjBC,UAAU,EAAE,iBAAiB;MAC7BC,MAAM,EAAE,CAAC,MAAM;IACnB,CAAC,EACD;MACIH,EAAE,EAAE,OAAO;MACXC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,gBAAgB;MAC5BC,MAAM,EAAE,CAAC,MAAM;IACnB,CAAC,CACJ;IAED,IAAIP,KAAK,EAAE;MACPG,QAAQ,CAACK,IAAI,CAAC;QACVJ,EAAE,EAAE,MAAM;QACVC,KAAK,EAAE,OAAO;QACdC,UAAU,EAAE,eAAe;QAC3BC,MAAM,EAAE,CAAC,MAAM;MACnB,CAAC,CAAC;IACN;IAEA,OAAO;MACHE,MAAM,EAAE,UAAU;MAClBC,UAAU,EAAE;QAAEC,IAAI,EAAE;MAAa,CAAC;MAClCR;IACJ,CAAC;EACL,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,oBACIT,KAAA,CAAAqB,aAAA,CAACnB,WAAW,qBACRF,KAAA,CAAAqB,aAAA,CAACf,QAAQ,CAACgB,WAAW;IACjBF,IAAI,EAAC,UAAU;IACfN,KAAK,EAAC,UAAU;IAChBS,WAAW,EAAC,8BAA8B;IAC1CC,IAAI,eAAExB,KAAA,CAAAqB,aAAA,CAAChB,eAAe,MAAE,CAAE;IAC1BM,MAAM,EAAEA;EAAO,CAClB,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  export declare enum Permission {
2
- Groups = "security.group",
2
+ Roles = "security.role",
3
3
  Teams = "security.team",
4
4
  ApiKeys = "security.apiKey"
5
5
  }
@@ -1,5 +1,5 @@
1
1
  export let Permission = /*#__PURE__*/function (Permission) {
2
- Permission["Groups"] = "security.group";
2
+ Permission["Roles"] = "security.role";
3
3
  Permission["Teams"] = "security.team";
4
4
  Permission["ApiKeys"] = "security.apiKey";
5
5
  return Permission;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Permission"],"sources":["constants.ts"],"sourcesContent":["export enum Permission {\n Roles = \"security.role\",\n Teams = \"security.team\",\n ApiKeys = \"security.apiKey\"\n}\n"],"mappings":"AAAA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,2 +1 @@
1
- import React from "react";
2
- export declare const AccessManagement: React.MemoExoticComponent<() => React.JSX.Element>;
1
+ export { AccessManagement } from "./Extension.js";
package/index.js CHANGED
@@ -1,83 +1,3 @@
1
- import React, { memo } from "react";
2
- import { plugins } from "@webiny/plugins";
3
- import { Layout, Wcp } from "@webiny/app-admin";
4
- import { HasPermission } from "@webiny/app-security";
5
- import { Permission } from "./plugins/constants";
6
- import { Groups } from "./ui/views/Groups";
7
- import { Teams } from "./ui/views/Teams";
8
- import { ApiKeys } from "./ui/views/ApiKeys";
9
- import accessManagementPlugins from "./plugins";
10
- import { AdminConfig } from "@webiny/app-admin";
11
- const {
12
- Menu,
13
- Route
14
- } = AdminConfig;
15
- const AccessManagementExtension = () => {
16
- plugins.register(accessManagementPlugins());
17
- return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
18
- name: Permission.Groups
19
- }, /*#__PURE__*/React.createElement(Route, {
20
- name: "security.groups",
21
- exact: true,
22
- path: "/access-management/roles",
23
- element: /*#__PURE__*/React.createElement(Layout, {
24
- title: "Access Management - Roles"
25
- }, /*#__PURE__*/React.createElement(Groups, null))
26
- })), /*#__PURE__*/React.createElement(Wcp.CanUseTeams, null, /*#__PURE__*/React.createElement(HasPermission, {
27
- name: Permission.Teams
28
- }, /*#__PURE__*/React.createElement(Route, {
29
- name: "security.teams",
30
- exact: true,
31
- path: "/access-management/teams",
32
- element: /*#__PURE__*/React.createElement(Layout, {
33
- title: "Access Management - Teams"
34
- }, /*#__PURE__*/React.createElement(Teams, null))
35
- }))), /*#__PURE__*/React.createElement(HasPermission, {
36
- name: Permission.ApiKeys
37
- }, /*#__PURE__*/React.createElement(Route, {
38
- name: "security.apiKeys",
39
- exact: true,
40
- path: "/access-management/api-keys",
41
- element: /*#__PURE__*/React.createElement(Layout, {
42
- title: "Access Management - API Keys"
43
- }, /*#__PURE__*/React.createElement(ApiKeys, null))
44
- })), /*#__PURE__*/React.createElement(HasPermission, {
45
- any: [Permission.Groups, Permission.ApiKeys, Permission.Teams]
46
- }, /*#__PURE__*/React.createElement(Menu, {
47
- name: "security.settings",
48
- parent: "settings",
49
- element: /*#__PURE__*/React.createElement(Menu.Group, {
50
- text: "Access Management"
51
- })
52
- })), /*#__PURE__*/React.createElement(HasPermission, {
53
- name: Permission.Groups
54
- }, /*#__PURE__*/React.createElement(Menu, {
55
- name: "security.roles",
56
- parent: "settings",
57
- element: /*#__PURE__*/React.createElement(Menu.Link, {
58
- text: "Roles",
59
- to: "/access-management/roles"
60
- })
61
- })), /*#__PURE__*/React.createElement(Wcp.CanUseTeams, null, /*#__PURE__*/React.createElement(HasPermission, {
62
- name: Permission.Teams
63
- }, /*#__PURE__*/React.createElement(Menu, {
64
- name: "security.teams",
65
- parent: "settings",
66
- element: /*#__PURE__*/React.createElement(Menu.Link, {
67
- text: "Teams",
68
- to: "/access-management/teams"
69
- })
70
- }))), /*#__PURE__*/React.createElement(HasPermission, {
71
- name: Permission.ApiKeys
72
- }, /*#__PURE__*/React.createElement(Menu, {
73
- name: "security.apiKeys",
74
- parent: "settings",
75
- element: /*#__PURE__*/React.createElement(Menu.Link, {
76
- text: "API Keys",
77
- to: "/access-management/api-keys"
78
- })
79
- })));
80
- };
81
- export const AccessManagement = /*#__PURE__*/memo(AccessManagementExtension);
1
+ export { AccessManagement } from "./Extension.js";
82
2
 
83
3
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","plugins","Layout","Wcp","HasPermission","Permission","Groups","Teams","ApiKeys","accessManagementPlugins","AdminConfig","Menu","Route","AccessManagementExtension","register","createElement","name","exact","path","element","title","CanUseTeams","any","parent","Group","text","Link","to","AccessManagement"],"sources":["index.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Layout, Wcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-security\";\nimport { Permission } from \"~/plugins/constants\";\nimport { Groups } from \"~/ui/views/Groups\";\nimport { Teams } from \"~/ui/views/Teams\";\nimport { ApiKeys } from \"~/ui/views/ApiKeys\";\nimport accessManagementPlugins from \"./plugins\";\nimport { AdminConfig } from \"@webiny/app-admin\";\n\nconst { Menu, Route } = AdminConfig;\n\nconst AccessManagementExtension = () => {\n plugins.register(accessManagementPlugins());\n\n return (\n <AdminConfig>\n <HasPermission name={Permission.Groups}>\n <Route\n name={\"security.groups\"}\n exact\n path={\"/access-management/roles\"}\n element={\n <Layout title={\"Access Management - Roles\"}>\n <Groups />\n </Layout>\n }\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Route\n name={\"security.teams\"}\n exact\n path={\"/access-management/teams\"}\n element={\n <Layout title={\"Access Management - Teams\"}>\n <Teams />\n </Layout>\n }\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n <HasPermission name={Permission.ApiKeys}>\n <Route\n name={\"security.apiKeys\"}\n exact\n path={\"/access-management/api-keys\"}\n element={\n <Layout title={\"Access Management - API Keys\"}>\n <ApiKeys />\n </Layout>\n }\n />\n </HasPermission>\n\n <HasPermission any={[Permission.Groups, Permission.ApiKeys, Permission.Teams]}>\n <Menu\n name={\"security.settings\"}\n parent={\"settings\"}\n element={<Menu.Group text={\"Access Management\"} />}\n />\n </HasPermission>\n <HasPermission name={Permission.Groups}>\n <Menu\n name={\"security.roles\"}\n parent={\"settings\"}\n element={<Menu.Link text={\"Roles\"} to={\"/access-management/roles\"} />}\n />\n </HasPermission>\n <Wcp.CanUseTeams>\n <HasPermission name={Permission.Teams}>\n <Menu\n name={\"security.teams\"}\n parent={\"settings\"}\n element={<Menu.Link text={\"Teams\"} to={\"/access-management/teams\"} />}\n />\n </HasPermission>\n </Wcp.CanUseTeams>\n\n <HasPermission name={Permission.ApiKeys}>\n <Menu\n name={\"security.apiKeys\"}\n parent={\"settings\"}\n element={<Menu.Link text={\"API Keys\"} to={\"/access-management/api-keys\"} />}\n />\n </HasPermission>\n </AdminConfig>\n );\n};\n\nexport const AccessManagement = memo(AccessManagementExtension);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AccessManagement"],"sources":["index.tsx"],"sourcesContent":["export { AccessManagement } from \"./Extension.js\";\n"],"mappings":"AAAA,SAASA,gBAAgB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@webiny/app-security-access-management",
3
- "version": "6.0.0-alpha.5",
3
+ "version": "6.0.0-rc.0",
4
+ "type": "module",
4
5
  "main": "index.js",
5
6
  "repository": {
6
7
  "type": "git",
@@ -14,38 +15,29 @@
14
15
  "license": "MIT",
15
16
  "dependencies": {
16
17
  "@apollo/react-hooks": "3.1.5",
17
- "@emotion/styled": "11.10.6",
18
- "@webiny/admin-ui": "6.0.0-alpha.5",
19
- "@webiny/app": "6.0.0-alpha.5",
20
- "@webiny/app-admin": "6.0.0-alpha.5",
21
- "@webiny/app-security": "6.0.0-alpha.5",
22
- "@webiny/form": "6.0.0-alpha.5",
23
- "@webiny/icons": "6.0.0-alpha.5",
24
- "@webiny/plugins": "6.0.0-alpha.5",
25
- "@webiny/react-router": "6.0.0-alpha.5",
26
- "@webiny/ui": "6.0.0-alpha.5",
27
- "@webiny/validation": "6.0.0-alpha.5",
18
+ "@webiny/admin-ui": "6.0.0-rc.0",
19
+ "@webiny/app": "6.0.0-rc.0",
20
+ "@webiny/app-admin": "6.0.0-rc.0",
21
+ "@webiny/form": "6.0.0-rc.0",
22
+ "@webiny/icons": "6.0.0-rc.0",
23
+ "@webiny/ui": "6.0.0-rc.0",
24
+ "@webiny/validation": "6.0.0-rc.0",
28
25
  "graphql-tag": "2.12.6",
29
- "lodash": "4.17.21",
26
+ "lodash": "4.17.23",
30
27
  "react": "18.2.0",
31
- "react-dom": "18.2.0",
32
- "react-helmet": "6.1.0"
28
+ "react-dom": "18.2.0"
33
29
  },
34
30
  "devDependencies": {
35
- "@emotion/babel-plugin": "11.11.0",
31
+ "@emotion/babel-plugin": "11.13.5",
36
32
  "@types/react-helmet": "6.1.11",
37
- "@webiny/project-utils": "6.0.0-alpha.5",
38
- "rimraf": "6.0.1",
39
- "typescript": "5.3.3"
33
+ "@webiny/build-tools": "6.0.0-rc.0",
34
+ "rimraf": "6.1.3",
35
+ "typescript": "5.9.3"
40
36
  },
41
37
  "publishConfig": {
42
38
  "access": "public",
43
39
  "directory": "dist"
44
40
  },
45
- "scripts": {
46
- "build": "node ../cli/bin.js run build",
47
- "watch": "node ../cli/bin.js run watch"
48
- },
49
41
  "adio": {
50
42
  "ignore": {
51
43
  "peerDependencies": [
@@ -53,5 +45,5 @@
53
45
  ]
54
46
  }
55
47
  },
56
- "gitHead": "b7e120541b093e91f214904a9f13e4c2c4640978"
48
+ "gitHead": "0f2aa699f4642e550ab62c96fcd050e8d02345c9"
57
49
  }
package/routes.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ export declare const Routes: {
3
+ Roles: {
4
+ List: Route<{
5
+ id: import("zod").ZodOptional<import("zod").ZodString>;
6
+ new: import("zod").ZodOptional<import("zod").ZodBoolean>;
7
+ }>;
8
+ };
9
+ Teams: {
10
+ List: Route<{
11
+ id: import("zod").ZodOptional<import("zod").ZodString>;
12
+ new: import("zod").ZodOptional<import("zod").ZodBoolean>;
13
+ }>;
14
+ };
15
+ ApiKeys: {
16
+ List: Route<{
17
+ id: import("zod").ZodOptional<import("zod").ZodString>;
18
+ new: import("zod").ZodOptional<import("zod").ZodBoolean>;
19
+ }>;
20
+ };
21
+ };
package/routes.js ADDED
@@ -0,0 +1,41 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ export const Routes = {
3
+ Roles: {
4
+ List: new Route({
5
+ name: "Security/Roles/List",
6
+ path: "/access-management/roles",
7
+ params: z => {
8
+ return {
9
+ id: z.string().optional(),
10
+ new: z.boolean().optional()
11
+ };
12
+ }
13
+ })
14
+ },
15
+ Teams: {
16
+ List: new Route({
17
+ name: "Security/Teams/List",
18
+ path: "/access-management/teams",
19
+ params: z => {
20
+ return {
21
+ id: z.string().optional(),
22
+ new: z.boolean().optional()
23
+ };
24
+ }
25
+ })
26
+ },
27
+ ApiKeys: {
28
+ List: new Route({
29
+ name: "Security/ApiKeys/List",
30
+ path: "/access-management/api-keys",
31
+ params: z => {
32
+ return {
33
+ id: z.string().optional(),
34
+ new: z.boolean().optional()
35
+ };
36
+ }
37
+ })
38
+ }
39
+ };
40
+
41
+ //# sourceMappingURL=routes.js.map
package/routes.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Route","Routes","Roles","List","name","path","params","z","id","string","optional","new","boolean","Teams","ApiKeys"],"sources":["routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n Roles: {\n List: new Route({\n name: \"Security/Roles/List\",\n path: \"/access-management/roles\",\n params: z => {\n return {\n id: z.string().optional(),\n new: z.boolean().optional()\n };\n }\n })\n },\n Teams: {\n List: new Route({\n name: \"Security/Teams/List\",\n path: \"/access-management/teams\",\n params: z => {\n return {\n id: z.string().optional(),\n new: z.boolean().optional()\n };\n }\n })\n },\n ApiKeys: {\n List: new Route({\n name: \"Security/ApiKeys/List\",\n path: \"/access-management/api-keys\",\n params: z => {\n return {\n id: z.string().optional(),\n new: z.boolean().optional()\n };\n }\n })\n }\n};\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AAEzC,OAAO,MAAMC,MAAM,GAAG;EAClBC,KAAK,EAAE;IACHC,IAAI,EAAE,IAAIH,KAAK,CAAC;MACZI,IAAI,EAAE,qBAAqB;MAC3BC,IAAI,EAAE,0BAA0B;MAChCC,MAAM,EAAEC,CAAC,IAAI;QACT,OAAO;UACHC,EAAE,EAAED,CAAC,CAACE,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;UACzBC,GAAG,EAAEJ,CAAC,CAACK,OAAO,CAAC,CAAC,CAACF,QAAQ,CAAC;QAC9B,CAAC;MACL;IACJ,CAAC;EACL,CAAC;EACDG,KAAK,EAAE;IACHV,IAAI,EAAE,IAAIH,KAAK,CAAC;MACZI,IAAI,EAAE,qBAAqB;MAC3BC,IAAI,EAAE,0BAA0B;MAChCC,MAAM,EAAEC,CAAC,IAAI;QACT,OAAO;UACHC,EAAE,EAAED,CAAC,CAACE,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;UACzBC,GAAG,EAAEJ,CAAC,CAACK,OAAO,CAAC,CAAC,CAACF,QAAQ,CAAC;QAC9B,CAAC;MACL;IACJ,CAAC;EACL,CAAC;EACDI,OAAO,EAAE;IACLX,IAAI,EAAE,IAAIH,KAAK,CAAC;MACZI,IAAI,EAAE,uBAAuB;MAC7BC,IAAI,EAAE,6BAA6B;MACnCC,MAAM,EAAEC,CAAC,IAAI;QACT,OAAO;UACHC,EAAE,EAAED,CAAC,CAACE,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;UACzBC,GAAG,EAAEJ,CAAC,CAACK,OAAO,CAAC,CAAC,CAACF,QAAQ,CAAC;QAC9B,CAAC;MACL;IACJ,CAAC;EACL;AACJ,CAAC","ignoreList":[]}
package/types.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- import type { SecurityPermission } from "@webiny/app-security/types";
2
- export interface Group {
1
+ import type { Identity } from "@webiny/app-admin/domain/Identity.js";
2
+ export interface Role {
3
3
  id: string;
4
4
  name: string;
5
5
  description: string;
6
6
  slug: string;
7
7
  system?: boolean;
8
8
  plugin: boolean | null;
9
- permissions: SecurityPermission[];
9
+ permissions: Identity.Permission[];
10
10
  createdOn: string;
11
11
  }
12
12
  export interface Team {
@@ -20,9 +20,10 @@ export interface Team {
20
20
  }
21
21
  export interface ApiKey {
22
22
  id: string;
23
+ slug: string;
23
24
  token: string;
24
25
  name: string;
25
26
  description: string;
26
- permissions: SecurityPermission[];
27
+ permissions: Identity.Permission[];
27
28
  createdOn: string;
28
29
  }
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { SecurityPermission } from \"@webiny/app-security/types\";\n\nexport interface Group {\n id: string;\n name: string;\n description: string;\n slug: string;\n system?: boolean;\n plugin: boolean | null;\n permissions: SecurityPermission[];\n createdOn: string;\n}\n\nexport interface Team {\n id: string;\n name: string;\n description: string;\n slug: string;\n system?: boolean;\n plugin: boolean | null;\n createdOn: string;\n}\n\nexport interface ApiKey {\n id: string;\n token: string;\n name: string;\n description: string;\n permissions: SecurityPermission[];\n createdOn: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { Identity } from \"@webiny/app-admin/domain/Identity.js\";\n\nexport interface Role {\n id: string;\n name: string;\n description: string;\n slug: string;\n system?: boolean;\n plugin: boolean | null;\n permissions: Identity.Permission[];\n createdOn: string;\n}\n\nexport interface Team {\n id: string;\n name: string;\n description: string;\n slug: string;\n system?: boolean;\n plugin: boolean | null;\n createdOn: string;\n}\n\nexport interface ApiKey {\n id: string;\n slug: string;\n token: string;\n name: string;\n description: string;\n permissions: Identity.Permission[];\n createdOn: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,5 +1,7 @@
1
1
  import React from "react";
2
- export interface ApiKeyFormProps {
3
- [key: string]: any;
2
+ interface ApiKeyFormProps {
3
+ newEntry: boolean;
4
+ id: string | undefined;
4
5
  }
5
- export declare const ApiKeyForm: () => React.JSX.Element;
6
+ export declare const ApiKeyForm: ({ id, newEntry }: ApiKeyFormProps) => React.JSX.Element;
7
+ export {};