@webiny/cognito 0.0.0-unstable.61c048f412

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 (217) hide show
  1. package/Cognito.d.ts +8 -0
  2. package/Cognito.js +30 -0
  3. package/Cognito.js.map +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +11 -0
  6. package/admin/Cognito.d.ts +6 -0
  7. package/admin/Cognito.js +53 -0
  8. package/admin/Cognito.js.map +1 -0
  9. package/admin/CognitoLogin.d.ts +7 -0
  10. package/admin/CognitoLogin.js +18 -0
  11. package/admin/CognitoLogin.js.map +1 -0
  12. package/admin/Extension.d.ts +2 -0
  13. package/admin/Extension.js +20 -0
  14. package/admin/Extension.js.map +1 -0
  15. package/admin/federatedIdentityProviders.d.ts +9 -0
  16. package/admin/federatedIdentityProviders.js +9 -0
  17. package/admin/federatedIdentityProviders.js.map +1 -0
  18. package/admin/plugins/constants.d.ts +3 -0
  19. package/admin/plugins/constants.js +6 -0
  20. package/admin/plugins/constants.js.map +1 -0
  21. package/admin/plugins/permissionRenderer/AdminUsersPermissions.d.ts +7 -0
  22. package/admin/plugins/permissionRenderer/AdminUsersPermissions.js +129 -0
  23. package/admin/plugins/permissionRenderer/AdminUsersPermissions.js.map +1 -0
  24. package/admin/plugins/permissionRenderer/index.d.ts +3 -0
  25. package/admin/plugins/permissionRenderer/index.js +20 -0
  26. package/admin/plugins/permissionRenderer/index.js.map +1 -0
  27. package/admin/plugins/userMenu/AccountDetails.d.ts +6 -0
  28. package/admin/plugins/userMenu/AccountDetails.js +23 -0
  29. package/admin/plugins/userMenu/AccountDetails.js.map +1 -0
  30. package/admin/plugins/userMenu/useIsDefaultTenant.d.ts +1 -0
  31. package/admin/plugins/userMenu/useIsDefaultTenant.js +15 -0
  32. package/admin/plugins/userMenu/useIsDefaultTenant.js.map +1 -0
  33. package/admin/presentation/Cognito/CognitoLoginScreen.d.ts +10 -0
  34. package/admin/presentation/Cognito/CognitoLoginScreen.js +54 -0
  35. package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -0
  36. package/admin/presentation/Cognito/CognitoPresenter.d.ts +58 -0
  37. package/admin/presentation/Cognito/CognitoPresenter.js +277 -0
  38. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -0
  39. package/admin/presentation/Cognito/abstractions.d.ts +72 -0
  40. package/admin/presentation/Cognito/abstractions.js +4 -0
  41. package/admin/presentation/Cognito/abstractions.js.map +1 -0
  42. package/admin/presentation/Cognito/components/Divider.d.ts +2 -0
  43. package/admin/presentation/Cognito/components/Divider.js +16 -0
  44. package/admin/presentation/Cognito/components/Divider.js.map +1 -0
  45. package/admin/presentation/Cognito/components/FederatedLogin.d.ts +7 -0
  46. package/admin/presentation/Cognito/components/FederatedLogin.js +32 -0
  47. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -0
  48. package/admin/presentation/Cognito/components/FederatedProviders.d.ts +44 -0
  49. package/admin/presentation/Cognito/components/FederatedProviders.js +14 -0
  50. package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -0
  51. package/admin/presentation/Cognito/components/FooterSignIn.d.ts +6 -0
  52. package/admin/presentation/Cognito/components/FooterSignIn.js +15 -0
  53. package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -0
  54. package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +9 -0
  55. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +43 -0
  56. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -0
  57. package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +8 -0
  58. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +45 -0
  59. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -0
  60. package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +8 -0
  61. package/admin/presentation/Cognito/components/RequireNewPassword.js +55 -0
  62. package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -0
  63. package/admin/presentation/Cognito/components/SetNewPassword.d.ts +8 -0
  64. package/admin/presentation/Cognito/components/SetNewPassword.js +79 -0
  65. package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -0
  66. package/admin/presentation/Cognito/components/SignIn.d.ts +10 -0
  67. package/admin/presentation/Cognito/components/SignIn.js +64 -0
  68. package/admin/presentation/Cognito/components/SignIn.js.map +1 -0
  69. package/admin/presentation/Cognito/components/View.d.ts +98 -0
  70. package/admin/presentation/Cognito/components/View.js +67 -0
  71. package/admin/presentation/Cognito/components/View.js.map +1 -0
  72. package/admin/presentation/Cognito/feature.d.ts +3 -0
  73. package/admin/presentation/Cognito/feature.js +16 -0
  74. package/admin/presentation/Cognito/feature.js.map +1 -0
  75. package/admin/presentation/shared/createPasswordValidator.d.ts +8 -0
  76. package/admin/presentation/shared/createPasswordValidator.js +27 -0
  77. package/admin/presentation/shared/createPasswordValidator.js.map +1 -0
  78. package/admin/presentation/shared/usePasswordValidator.d.ts +1 -0
  79. package/admin/presentation/shared/usePasswordValidator.js +15 -0
  80. package/admin/presentation/shared/usePasswordValidator.js.map +1 -0
  81. package/admin/routes.d.ts +10 -0
  82. package/admin/routes.js +21 -0
  83. package/admin/routes.js.map +1 -0
  84. package/admin/ui/UserItem.d.ts +10 -0
  85. package/admin/ui/UserItem.js +3 -0
  86. package/admin/ui/UserItem.js.map +1 -0
  87. package/admin/ui/components/AvatarImage/AvatarImage.d.ts +3 -0
  88. package/admin/ui/components/AvatarImage/AvatarImage.js +43 -0
  89. package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -0
  90. package/admin/ui/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  91. package/admin/ui/components/AvatarImage/AvatarImagePreview.js +55 -0
  92. package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  93. package/admin/ui/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  94. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +29 -0
  95. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  96. package/admin/ui/components/AvatarImage/index.d.ts +1 -0
  97. package/admin/ui/components/AvatarImage/index.js +3 -0
  98. package/admin/ui/components/AvatarImage/index.js.map +1 -0
  99. package/admin/ui/views/Account/Account.d.ts +2 -0
  100. package/admin/ui/views/Account/Account.js +142 -0
  101. package/admin/ui/views/Account/Account.js.map +1 -0
  102. package/admin/ui/views/Account/graphql.d.ts +2 -0
  103. package/admin/ui/views/Account/graphql.js +40 -0
  104. package/admin/ui/views/Account/graphql.js.map +1 -0
  105. package/admin/ui/views/Account/index.d.ts +1 -0
  106. package/admin/ui/views/Account/index.js +3 -0
  107. package/admin/ui/views/Account/index.js.map +1 -0
  108. package/admin/ui/views/Users/UsersDataList.d.ts +3 -0
  109. package/admin/ui/views/Users/UsersDataList.js +172 -0
  110. package/admin/ui/views/Users/UsersDataList.js.map +1 -0
  111. package/admin/ui/views/Users/UsersForm.d.ts +5 -0
  112. package/admin/ui/views/Users/UsersForm.js +174 -0
  113. package/admin/ui/views/Users/UsersForm.js.map +1 -0
  114. package/admin/ui/views/Users/UsersView.d.ts +2 -0
  115. package/admin/ui/views/Users/UsersView.js +14 -0
  116. package/admin/ui/views/Users/UsersView.js.map +1 -0
  117. package/admin/ui/views/Users/components/DeleteAction.d.ts +7 -0
  118. package/admin/ui/views/Users/components/DeleteAction.js +36 -0
  119. package/admin/ui/views/Users/components/DeleteAction.js.map +1 -0
  120. package/admin/ui/views/Users/graphql.d.ts +5 -0
  121. package/admin/ui/views/Users/graphql.js +99 -0
  122. package/admin/ui/views/Users/graphql.js.map +1 -0
  123. package/admin/ui/views/Users/hooks/useUserForm.d.ts +27 -0
  124. package/admin/ui/views/Users/hooks/useUserForm.js +127 -0
  125. package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -0
  126. package/admin/ui/views/Users/search.svg +20 -0
  127. package/admin/ui/views/utils.d.ts +3 -0
  128. package/admin/ui/views/utils.js +10 -0
  129. package/admin/ui/views/utils.js.map +1 -0
  130. package/api/CognitoApiFeature.d.ts +1 -0
  131. package/api/CognitoApiFeature.js +28 -0
  132. package/api/CognitoApiFeature.js.map +1 -0
  133. package/api/domain/Username.d.ts +4 -0
  134. package/api/domain/Username.js +7 -0
  135. package/api/domain/Username.js.map +1 -0
  136. package/api/domain/errors.d.ts +37 -0
  137. package/api/domain/errors.js +63 -0
  138. package/api/domain/errors.js.map +1 -0
  139. package/api/features/CognitoIdp/CognitoIdentityProvider.d.ts +15 -0
  140. package/api/features/CognitoIdp/CognitoIdentityProvider.js +61 -0
  141. package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -0
  142. package/api/features/CognitoIdp/abstractions.d.ts +15 -0
  143. package/api/features/CognitoIdp/abstractions.js +4 -0
  144. package/api/features/CognitoIdp/abstractions.js.map +1 -0
  145. package/api/features/CognitoIdp/feature.d.ts +1 -0
  146. package/api/features/CognitoIdp/feature.js +10 -0
  147. package/api/features/CognitoIdp/feature.js.map +1 -0
  148. package/api/features/CognitoIdp/index.d.ts +2 -0
  149. package/api/features/CognitoIdp/index.js +4 -0
  150. package/api/features/CognitoIdp/index.js.map +1 -0
  151. package/api/features/CognitoService/CognitoService.d.ts +20 -0
  152. package/api/features/CognitoService/CognitoService.js +90 -0
  153. package/api/features/CognitoService/CognitoService.js.map +1 -0
  154. package/api/features/CognitoService/abstractions.d.ts +54 -0
  155. package/api/features/CognitoService/abstractions.js +8 -0
  156. package/api/features/CognitoService/abstractions.js.map +1 -0
  157. package/api/features/CognitoService/feature.d.ts +5 -0
  158. package/api/features/CognitoService/feature.js +12 -0
  159. package/api/features/CognitoService/feature.js.map +1 -0
  160. package/api/features/CognitoService/index.d.ts +1 -0
  161. package/api/features/CognitoService/index.js +3 -0
  162. package/api/features/CognitoService/index.js.map +1 -0
  163. package/api/features/CreateUser/CreateUserUseCase.d.ts +22 -0
  164. package/api/features/CreateUser/CreateUserUseCase.js +106 -0
  165. package/api/features/CreateUser/CreateUserUseCase.js.map +1 -0
  166. package/api/features/CreateUser/abstractions.d.ts +35 -0
  167. package/api/features/CreateUser/abstractions.js +4 -0
  168. package/api/features/CreateUser/abstractions.js.map +1 -0
  169. package/api/features/CreateUser/feature.d.ts +1 -0
  170. package/api/features/CreateUser/feature.js +10 -0
  171. package/api/features/CreateUser/feature.js.map +1 -0
  172. package/api/features/CreateUser/index.d.ts +2 -0
  173. package/api/features/CreateUser/index.js +4 -0
  174. package/api/features/CreateUser/index.js.map +1 -0
  175. package/api/features/CreateUser/schema.d.ts +47 -0
  176. package/api/features/CreateUser/schema.js +17 -0
  177. package/api/features/CreateUser/schema.js.map +1 -0
  178. package/api/features/DeleteUser/DeleteUserUseCase.d.ts +16 -0
  179. package/api/features/DeleteUser/DeleteUserUseCase.js +54 -0
  180. package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -0
  181. package/api/features/DeleteUser/abstractions.d.ts +19 -0
  182. package/api/features/DeleteUser/abstractions.js +4 -0
  183. package/api/features/DeleteUser/abstractions.js.map +1 -0
  184. package/api/features/DeleteUser/feature.d.ts +1 -0
  185. package/api/features/DeleteUser/feature.js +10 -0
  186. package/api/features/DeleteUser/feature.js.map +1 -0
  187. package/api/features/DeleteUser/index.d.ts +2 -0
  188. package/api/features/DeleteUser/index.js +4 -0
  189. package/api/features/DeleteUser/index.js.map +1 -0
  190. package/api/features/UpdateUser/UpdateUserUseCase.d.ts +21 -0
  191. package/api/features/UpdateUser/UpdateUserUseCase.js +88 -0
  192. package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -0
  193. package/api/features/UpdateUser/abstractions.d.ts +33 -0
  194. package/api/features/UpdateUser/abstractions.js +4 -0
  195. package/api/features/UpdateUser/abstractions.js.map +1 -0
  196. package/api/features/UpdateUser/feature.d.ts +1 -0
  197. package/api/features/UpdateUser/feature.js +10 -0
  198. package/api/features/UpdateUser/feature.js.map +1 -0
  199. package/api/features/UpdateUser/index.d.ts +2 -0
  200. package/api/features/UpdateUser/index.js +4 -0
  201. package/api/features/UpdateUser/index.js.map +1 -0
  202. package/api/features/UpdateUser/schema.d.ts +44 -0
  203. package/api/features/UpdateUser/schema.js +16 -0
  204. package/api/features/UpdateUser/schema.js.map +1 -0
  205. package/api/features/UserInstaller/UserInstaller.d.ts +27 -0
  206. package/api/features/UserInstaller/UserInstaller.js +48 -0
  207. package/api/features/UserInstaller/UserInstaller.js.map +1 -0
  208. package/api/features/UserInstaller/feature.d.ts +1 -0
  209. package/api/features/UserInstaller/feature.js +10 -0
  210. package/api/features/UserInstaller/feature.js.map +1 -0
  211. package/api/graphql/user.gql.d.ts +8 -0
  212. package/api/graphql/user.gql.js +167 -0
  213. package/api/graphql/user.gql.js.map +1 -0
  214. package/index.d.ts +2 -0
  215. package/index.js +4 -0
  216. package/index.js.map +1 -0
  217. package/package.json +49 -0
package/Cognito.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export declare const Cognito: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
3
+ apiConfig: z.ZodOptional<z.ZodString>;
4
+ }, "strip", z.ZodTypeAny, {
5
+ apiConfig?: string | undefined;
6
+ }, {
7
+ apiConfig?: string | undefined;
8
+ }>>;
package/Cognito.js ADDED
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import { defineExtension } from "@webiny/project/defineExtension/index.js";
3
+ import { EnvVar } from "@webiny/project/extensions/index.js";
4
+ import { Api, Admin } from "@webiny/project-aws";
5
+ import { z } from "zod";
6
+ export const Cognito = defineExtension({
7
+ type: "Project/Cognito",
8
+ tags: {
9
+ runtimeContext: "project"
10
+ },
11
+ description: "Enable and configure Cognito authentication.",
12
+ paramsSchema: z.object({
13
+ apiConfig: z.string().describe("Path to API configuration.").optional()
14
+ }),
15
+ render: props => {
16
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EnvVar, {
17
+ varName: "REACT_APP_IDP_TYPE",
18
+ value: "cognito"
19
+ }), /*#__PURE__*/React.createElement(Api.Extension, {
20
+ src: import.meta.dirname + "/api/CognitoApiFeature.js",
21
+ exportName: "CognitoApiFeature"
22
+ }), props.apiConfig ? /*#__PURE__*/React.createElement(Api.Extension, {
23
+ src: props.apiConfig
24
+ }) : null, /*#__PURE__*/React.createElement(Admin.Extension, {
25
+ src: import.meta.dirname + "/admin/Extension.js"
26
+ }));
27
+ }
28
+ });
29
+
30
+ //# sourceMappingURL=Cognito.js.map
package/Cognito.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","defineExtension","EnvVar","Api","Admin","z","Cognito","type","tags","runtimeContext","description","paramsSchema","object","apiConfig","string","describe","optional","render","props","createElement","Fragment","varName","value","Extension","src","import","meta","dirname","exportName"],"sources":["Cognito.tsx"],"sourcesContent":["import React from \"react\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { EnvVar } from \"@webiny/project/extensions/index.js\";\nimport { Api, Admin } from \"@webiny/project-aws\";\nimport { z } from \"zod\";\n\nexport const Cognito = defineExtension({\n type: \"Project/Cognito\",\n tags: { runtimeContext: \"project\" },\n description: \"Enable and configure Cognito authentication.\",\n paramsSchema: z.object({\n apiConfig: z.string().describe(\"Path to API configuration.\").optional()\n }),\n render: props => {\n return (\n <>\n <EnvVar varName={\"REACT_APP_IDP_TYPE\"} value={\"cognito\"} />\n {/* Api extensions */}\n <Api.Extension\n src={import.meta.dirname + \"/api/CognitoApiFeature.js\"}\n exportName={\"CognitoApiFeature\"}\n />\n {props.apiConfig ? <Api.Extension src={props.apiConfig} /> : null}\n {/* Admin extensions */}\n <Admin.Extension src={import.meta.dirname + \"/admin/Extension.js\"} />\n </>\n );\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,MAAM,QAAQ,qCAAqC;AAC5D,SAASC,GAAG,EAAEC,KAAK,QAAQ,qBAAqB;AAChD,SAASC,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,OAAO,GAAGL,eAAe,CAAC;EACnCM,IAAI,EAAE,iBAAiB;EACvBC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EAAE,8CAA8C;EAC3DC,YAAY,EAAEN,CAAC,CAACO,MAAM,CAAC;IACnBC,SAAS,EAAER,CAAC,CAACS,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,4BAA4B,CAAC,CAACC,QAAQ,CAAC;EAC1E,CAAC,CAAC;EACFC,MAAM,EAAEC,KAAK,IAAI;IACb,oBACIlB,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoB,QAAA,qBACIpB,KAAA,CAAAmB,aAAA,CAACjB,MAAM;MAACmB,OAAO,EAAE,oBAAqB;MAACC,KAAK,EAAE;IAAU,CAAE,CAAC,eAE3DtB,KAAA,CAAAmB,aAAA,CAAChB,GAAG,CAACoB,SAAS;MACVC,GAAG,EAAEC,MAAM,CAACC,IAAI,CAACC,OAAO,GAAG,2BAA4B;MACvDC,UAAU,EAAE;IAAoB,CACnC,CAAC,EACDV,KAAK,CAACL,SAAS,gBAAGb,KAAA,CAAAmB,aAAA,CAAChB,GAAG,CAACoB,SAAS;MAACC,GAAG,EAAEN,KAAK,CAACL;IAAU,CAAE,CAAC,GAAG,IAAI,eAEjEb,KAAA,CAAAmB,aAAA,CAACf,KAAK,CAACmB,SAAS;MAACC,GAAG,EAAEC,MAAM,CAACC,IAAI,CAACC,OAAO,GAAG;IAAsB,CAAE,CACtE,CAAC;EAEX;AACJ,CAAC,CAAC","ignoreList":[]}
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Webiny
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # @webiny/cognito
2
+
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.
6
+
7
+ 📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
8
+
9
+ ---
10
+
11
+ _This README file is automatically generated during the publish process._
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { type CognitoLoginProps } from "./CognitoLogin.js";
3
+ export interface CognitoAdminProps {
4
+ login: CognitoLoginProps;
5
+ }
6
+ export declare const CognitoAdmin: React.MemoExoticComponent<(props: CognitoAdminProps) => React.JSX.Element>;
@@ -0,0 +1,53 @@
1
+ import React, { Fragment, memo } from "react";
2
+ import { AdminConfig, AdminLayout } from "@webiny/app-admin";
3
+ import { plugins } from "@webiny/plugins";
4
+ import { HasPermission } from "@webiny/app-admin";
5
+ import { useRouter } from "@webiny/app-admin";
6
+ import { Permission } from "./plugins/constants.js";
7
+ import { UsersView } from "./ui/views/Users/UsersView.js";
8
+ import { UserAccountForm } from "./ui/views/Account/index.js";
9
+ import { AccountDetails } from "./plugins/userMenu/AccountDetails.js";
10
+ import permissionRenderer from "./plugins/permissionRenderer/index.js";
11
+ import { CognitoLogin } from "./CognitoLogin.js";
12
+ import { Routes } from "./routes.js";
13
+ const {
14
+ Route,
15
+ Menu
16
+ } = AdminConfig;
17
+ const CognitoIdP = props => {
18
+ const {
19
+ getLink
20
+ } = useRouter();
21
+ plugins.register([permissionRenderer]);
22
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(CognitoLogin, props.login), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
23
+ name: Permission.Users
24
+ }, /*#__PURE__*/React.createElement(Route, {
25
+ route: Routes.Users.List,
26
+ element: /*#__PURE__*/React.createElement(AdminLayout, {
27
+ title: "Admin Users"
28
+ }, /*#__PURE__*/React.createElement(UsersView, null))
29
+ }), /*#__PURE__*/React.createElement(Route, {
30
+ route: Routes.Users.Account,
31
+ element: /*#__PURE__*/React.createElement(AdminLayout, {
32
+ title: "User Account"
33
+ }, /*#__PURE__*/React.createElement(UserAccountForm, null))
34
+ }), /*#__PURE__*/React.createElement(Menu, {
35
+ name: "cognito.settings.adminUsers",
36
+ parent: "settings",
37
+ after: "security.settings",
38
+ element: /*#__PURE__*/React.createElement(Menu.Link, {
39
+ text: "Users",
40
+ to: getLink(Routes.Users.List),
41
+ pinnable: true
42
+ })
43
+ })), /*#__PURE__*/React.createElement(Menu.User, {
44
+ name: "accountSettings",
45
+ after: "userInfo",
46
+ element: /*#__PURE__*/React.createElement(AccountDetails, {
47
+ accountRoute: getLink(Routes.Users.Account)
48
+ })
49
+ })));
50
+ };
51
+ export const CognitoAdmin = /*#__PURE__*/memo(CognitoIdP);
52
+
53
+ //# sourceMappingURL=Cognito.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Fragment","memo","AdminConfig","AdminLayout","plugins","HasPermission","useRouter","Permission","UsersView","UserAccountForm","AccountDetails","permissionRenderer","CognitoLogin","Routes","Route","Menu","CognitoIdP","props","getLink","register","createElement","login","name","Users","route","List","element","title","Account","parent","after","Link","text","to","pinnable","User","accountRoute","CognitoAdmin"],"sources":["Cognito.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { plugins } from \"@webiny/plugins\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Permission } from \"./plugins/constants.js\";\nimport { UsersView } from \"./ui/views/Users/UsersView.js\";\nimport { UserAccountForm } from \"./ui/views/Account/index.js\";\nimport { AccountDetails } from \"./plugins/userMenu/AccountDetails.js\";\nimport permissionRenderer from \"./plugins/permissionRenderer/index.js\";\nimport { CognitoLogin, type CognitoLoginProps } from \"./CognitoLogin.js\";\nimport { Routes } from \"./routes.js\";\n\nconst { Route, Menu } = AdminConfig;\n\nexport interface CognitoAdminProps {\n login: CognitoLoginProps;\n}\n\nconst CognitoIdP = (props: CognitoAdminProps) => {\n const { getLink } = useRouter();\n\n plugins.register([permissionRenderer]);\n\n return (\n <Fragment>\n <CognitoLogin {...props.login} />\n <AdminConfig>\n <HasPermission name={Permission.Users}>\n <Route\n route={Routes.Users.List}\n element={\n <AdminLayout title={\"Admin Users\"}>\n <UsersView />\n </AdminLayout>\n }\n />\n\n <Route\n route={Routes.Users.Account}\n element={\n <AdminLayout title={\"User Account\"}>\n <UserAccountForm />\n </AdminLayout>\n }\n />\n\n <Menu\n name={\"cognito.settings.adminUsers\"}\n parent={\"settings\"}\n after={\"security.settings\"}\n element={\n <Menu.Link\n text={\"Users\"}\n to={getLink(Routes.Users.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n\n <Menu.User\n name={\"accountSettings\"}\n after={\"userInfo\"}\n element={<AccountDetails accountRoute={getLink(Routes.Users.Account)} />}\n />\n </AdminConfig>\n </Fragment>\n );\n};\n\nexport const CognitoAdmin = memo(CognitoIdP);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,IAAI,QAAQ,OAAO;AAC7C,SAASC,WAAW,EAAEC,WAAW,QAAQ,mBAAmB;AAC5D,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,UAAU;AACnB,SAASC,SAAS;AAClB,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,OAAOC,kBAAkB;AACzB,SAASC,YAAY;AACrB,SAASC,MAAM;AAEf,MAAM;EAAEC,KAAK;EAAEC;AAAK,CAAC,GAAGb,WAAW;AAMnC,MAAMc,UAAU,GAAIC,KAAwB,IAAK;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAGZ,SAAS,CAAC,CAAC;EAE/BF,OAAO,CAACe,QAAQ,CAAC,CAACR,kBAAkB,CAAC,CAAC;EAEtC,oBACIZ,KAAA,CAAAqB,aAAA,CAACpB,QAAQ,qBACLD,KAAA,CAAAqB,aAAA,CAACR,YAAY,EAAKK,KAAK,CAACI,KAAQ,CAAC,eACjCtB,KAAA,CAAAqB,aAAA,CAAClB,WAAW,qBACRH,KAAA,CAAAqB,aAAA,CAACf,aAAa;IAACiB,IAAI,EAAEf,UAAU,CAACgB;EAAM,gBAClCxB,KAAA,CAAAqB,aAAA,CAACN,KAAK;IACFU,KAAK,EAAEX,MAAM,CAACU,KAAK,CAACE,IAAK;IACzBC,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACjB,WAAW;MAACwB,KAAK,EAAE;IAAc,gBAC9B5B,KAAA,CAAAqB,aAAA,CAACZ,SAAS,MAAE,CACH;EAChB,CACJ,CAAC,eAEFT,KAAA,CAAAqB,aAAA,CAACN,KAAK;IACFU,KAAK,EAAEX,MAAM,CAACU,KAAK,CAACK,OAAQ;IAC5BF,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACjB,WAAW;MAACwB,KAAK,EAAE;IAAe,gBAC/B5B,KAAA,CAAAqB,aAAA,CAACX,eAAe,MAAE,CACT;EAChB,CACJ,CAAC,eAEFV,KAAA,CAAAqB,aAAA,CAACL,IAAI;IACDO,IAAI,EAAE,6BAA8B;IACpCO,MAAM,EAAE,UAAW;IACnBC,KAAK,EAAE,mBAAoB;IAC3BJ,OAAO,eACH3B,KAAA,CAAAqB,aAAA,CAACL,IAAI,CAACgB,IAAI;MACNC,IAAI,EAAE,OAAQ;MACdC,EAAE,EAAEf,OAAO,CAACL,MAAM,CAACU,KAAK,CAACE,IAAI,CAAE;MAC/BS,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAEhBnC,KAAA,CAAAqB,aAAA,CAACL,IAAI,CAACoB,IAAI;IACNb,IAAI,EAAE,iBAAkB;IACxBQ,KAAK,EAAE,UAAW;IAClBJ,OAAO,eAAE3B,KAAA,CAAAqB,aAAA,CAACV,cAAc;MAAC0B,YAAY,EAAElB,OAAO,CAACL,MAAM,CAACU,KAAK,CAACK,OAAO;IAAE,CAAE;EAAE,CAC5E,CACQ,CACP,CAAC;AAEnB,CAAC;AAED,OAAO,MAAMS,YAAY,gBAAGpC,IAAI,CAACe,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ export interface CognitoLoginProps {
3
+ region: string;
4
+ userPoolId: string;
5
+ clientId: string;
6
+ }
7
+ export declare const CognitoLogin: (props: CognitoLoginProps) => React.JSX.Element;
@@ -0,0 +1,18 @@
1
+ import React, { Fragment } from "react";
2
+ import { LoginScreenRenderer } from "@webiny/app-admin";
3
+ import { CognitoLoginScreen } from "./presentation/Cognito/CognitoLoginScreen.js";
4
+ const createLoginScreenPlugin = params => {
5
+ return LoginScreenRenderer.createDecorator(() => {
6
+ return function CognitoLogin({
7
+ children
8
+ }) {
9
+ return /*#__PURE__*/React.createElement(CognitoLoginScreen, params, children);
10
+ };
11
+ });
12
+ };
13
+ export const CognitoLogin = props => {
14
+ const LoginScreenPlugin = createLoginScreenPlugin(props);
15
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(LoginScreenPlugin, null));
16
+ };
17
+
18
+ //# sourceMappingURL=CognitoLogin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Fragment","LoginScreenRenderer","CognitoLoginScreen","createLoginScreenPlugin","params","createDecorator","CognitoLogin","children","createElement","props","LoginScreenPlugin"],"sources":["CognitoLogin.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport { LoginScreenRenderer } from \"@webiny/app-admin\";\nimport {\n CognitoLoginScreen,\n type CognitoLoginScreenProps\n} from \"./presentation/Cognito/CognitoLoginScreen.js\";\n\nconst createLoginScreenPlugin = (params: Omit<CognitoLoginScreenProps, \"children\">) => {\n return LoginScreenRenderer.createDecorator(() => {\n return function CognitoLogin({ children }) {\n return <CognitoLoginScreen {...params}>{children}</CognitoLoginScreen>;\n };\n });\n};\n\nexport interface CognitoLoginProps {\n region: string;\n userPoolId: string;\n clientId: string;\n}\n\nexport const CognitoLogin = (props: CognitoLoginProps) => {\n const LoginScreenPlugin = createLoginScreenPlugin(props);\n return (\n <Fragment>\n <LoginScreenPlugin />\n </Fragment>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,mBAAmB,QAAQ,mBAAmB;AACvD,SACIC,kBAAkB;AAItB,MAAMC,uBAAuB,GAAIC,MAAiD,IAAK;EACnF,OAAOH,mBAAmB,CAACI,eAAe,CAAC,MAAM;IAC7C,OAAO,SAASC,YAAYA,CAAC;MAAEC;IAAS,CAAC,EAAE;MACvC,oBAAOR,KAAA,CAAAS,aAAA,CAACN,kBAAkB,EAAKE,MAAM,EAAGG,QAA6B,CAAC;IAC1E,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAQD,OAAO,MAAMD,YAAY,GAAIG,KAAwB,IAAK;EACtD,MAAMC,iBAAiB,GAAGP,uBAAuB,CAACM,KAAK,CAAC;EACxD,oBACIV,KAAA,CAAAS,aAAA,CAACR,QAAQ,qBACLD,KAAA,CAAAS,aAAA,CAACE,iBAAiB,MAAE,CACd,CAAC;AAEnB,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const Extension: () => React.JSX.Element;
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { RegisterFeature } from "@webiny/app-admin";
3
+ import { CognitoFeature } from "./presentation/Cognito/feature.js";
4
+ import { CognitoAdmin } from "./Cognito.js";
5
+ export const Extension = () => {
6
+ const region = process.env.REACT_APP_USER_POOL_REGION || "";
7
+ const userPoolId = process.env.REACT_APP_USER_POOL_ID || "";
8
+ const clientId = process.env.REACT_APP_USER_POOL_WEB_CLIENT_ID || "";
9
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RegisterFeature, {
10
+ feature: CognitoFeature
11
+ }), /*#__PURE__*/React.createElement(CognitoAdmin, {
12
+ login: {
13
+ region,
14
+ userPoolId,
15
+ clientId
16
+ }
17
+ }));
18
+ };
19
+
20
+ //# sourceMappingURL=Extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","RegisterFeature","CognitoFeature","CognitoAdmin","Extension","region","process","env","REACT_APP_USER_POOL_REGION","userPoolId","REACT_APP_USER_POOL_ID","clientId","REACT_APP_USER_POOL_WEB_CLIENT_ID","createElement","Fragment","feature","login"],"sources":["Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature } from \"@webiny/app-admin\";\nimport { CognitoFeature } from \"./presentation/Cognito/feature.js\";\nimport { CognitoAdmin } from \"./Cognito.js\";\n\nexport const Extension = () => {\n const region = process.env.REACT_APP_USER_POOL_REGION || \"\";\n const userPoolId = process.env.REACT_APP_USER_POOL_ID || \"\";\n const clientId = process.env.REACT_APP_USER_POOL_WEB_CLIENT_ID || \"\";\n\n return (\n <>\n <RegisterFeature feature={CognitoFeature} />\n <CognitoAdmin\n login={{\n region,\n userPoolId,\n clientId\n }}\n />\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,cAAc;AACvB,SAASC,YAAY;AAErB,OAAO,MAAMC,SAAS,GAAGA,CAAA,KAAM;EAC3B,MAAMC,MAAM,GAAGC,OAAO,CAACC,GAAG,CAACC,0BAA0B,IAAI,EAAE;EAC3D,MAAMC,UAAU,GAAGH,OAAO,CAACC,GAAG,CAACG,sBAAsB,IAAI,EAAE;EAC3D,MAAMC,QAAQ,GAAGL,OAAO,CAACC,GAAG,CAACK,iCAAiC,IAAI,EAAE;EAEpE,oBACIZ,KAAA,CAAAa,aAAA,CAAAb,KAAA,CAAAc,QAAA,qBACId,KAAA,CAAAa,aAAA,CAACZ,eAAe;IAACc,OAAO,EAAEb;EAAe,CAAE,CAAC,eAC5CF,KAAA,CAAAa,aAAA,CAACV,YAAY;IACTa,KAAK,EAAE;MACHX,MAAM;MACNI,UAAU;MACVE;IACJ;EAAE,CACL,CACH,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type React from "react";
2
+ export declare const federatedIdentityProviders: Record<string, string>;
3
+ export interface SignInProps {
4
+ signIn: () => void;
5
+ }
6
+ export type FederatedIdentityProvider = {
7
+ name: string;
8
+ component: React.FunctionComponent<SignInProps>;
9
+ };
@@ -0,0 +1,9 @@
1
+ export const federatedIdentityProviders = {
2
+ cognito: "COGNITO",
3
+ google: "Google",
4
+ facebook: "Facebook",
5
+ amazon: "LoginWithAmazon",
6
+ apple: "SignInWithApple"
7
+ };
8
+
9
+ //# sourceMappingURL=federatedIdentityProviders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["federatedIdentityProviders","cognito","google","facebook","amazon","apple"],"sources":["federatedIdentityProviders.ts"],"sourcesContent":["import type React from \"react\";\n\nexport const federatedIdentityProviders: Record<string, string> = {\n cognito: \"COGNITO\",\n google: \"Google\",\n facebook: \"Facebook\",\n amazon: \"LoginWithAmazon\",\n apple: \"SignInWithApple\"\n};\n\nexport interface SignInProps {\n signIn: () => void;\n}\n\nexport type FederatedIdentityProvider = {\n name: string;\n component: React.FunctionComponent<SignInProps>;\n};\n"],"mappings":"AAEA,OAAO,MAAMA,0BAAkD,GAAG;EAC9DC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,iBAAiB;EACzBC,KAAK,EAAE;AACX,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export declare enum Permission {
2
+ Users = "adminUsers.user"
3
+ }
@@ -0,0 +1,6 @@
1
+ export let Permission = /*#__PURE__*/function (Permission) {
2
+ Permission["Users"] = "adminUsers.user";
3
+ return Permission;
4
+ }({});
5
+
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Permission"],"sources":["constants.ts"],"sourcesContent":["export enum Permission {\n Users = \"adminUsers.user\"\n}\n"],"mappings":"AAAA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import type { Identity } from "@webiny/app-admin/domain/Identity.js";
3
+ export interface AdminUsersPermissionsProps {
4
+ value: Identity.Permission[];
5
+ onChange: (value: Identity.Permission[]) => void;
6
+ }
7
+ export declare const AdminUsersPermissions: ({ value, onChange }: AdminUsersPermissionsProps) => React.JSX.Element;
@@ -0,0 +1,129 @@
1
+ import React, { Fragment, useCallback, useMemo } from "react";
2
+ import { Grid, Cell } from "@webiny/ui/Grid/index.js";
3
+ import { Select } from "@webiny/ui/Select/index.js";
4
+ import { i18n } from "@webiny/app/i18n/index.js";
5
+ import { CannotUseAaclAlert, PermissionInfo, gridWithPaddingClass, PermissionsGroup } from "@webiny/app-admin";
6
+ import { Form } from "@webiny/form";
7
+ import { useSecurity } from "@webiny/app-admin";
8
+ const t = i18n.ns("app-security-admin-users/plugins/permissionRenderer");
9
+ const ADMIN_USERS = "adminUsers";
10
+ const ADMIN_USERS_FULL_ACCESS = `${ADMIN_USERS}.*`;
11
+ const ADMIN_USERS_USER_ACCESS = `${ADMIN_USERS}.user`;
12
+ const FULL_ACCESS = "full";
13
+ const NO_ACCESS = "no";
14
+ const CUSTOM_ACCESS = "custom";
15
+ export const AdminUsersPermissions = ({
16
+ value,
17
+ onChange
18
+ }) => {
19
+ const {
20
+ getPermission
21
+ } = useSecurity();
22
+
23
+ // We disable form elements for custom permissions if AACL cannot be used.
24
+ const cannotUseAAcl = useMemo(() => {
25
+ return !getPermission("aacl", true);
26
+ }, []);
27
+ const onFormChange = useCallback(data => {
28
+ let newValue = [];
29
+ if (Array.isArray(value)) {
30
+ // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.
31
+ newValue = value.filter(item => !item.name.startsWith(ADMIN_USERS));
32
+ }
33
+ const permissions = [];
34
+ if (data.accessLevel === FULL_ACCESS) {
35
+ permissions.push({
36
+ name: ADMIN_USERS_FULL_ACCESS
37
+ });
38
+ } else if (data.accessLevel === CUSTOM_ACCESS) {
39
+ if (data.userAccessScope === FULL_ACCESS) {
40
+ permissions.push({
41
+ name: ADMIN_USERS_USER_ACCESS
42
+ });
43
+ }
44
+ }
45
+ if (permissions && permissions.length) {
46
+ newValue.push(...permissions);
47
+ }
48
+ onChange(newValue);
49
+ }, [value]);
50
+ const formData = useMemo(() => {
51
+ if (!Array.isArray(value)) {
52
+ return {
53
+ accessLevel: NO_ACCESS
54
+ };
55
+ }
56
+ const hasFullAccess = value.find(item => item.name === ADMIN_USERS_FULL_ACCESS || item.name === "*");
57
+ if (hasFullAccess) {
58
+ return {
59
+ accessLevel: FULL_ACCESS
60
+ };
61
+ }
62
+ const permissions = value.filter(item => item.name.startsWith(ADMIN_USERS));
63
+ if (permissions.length === 0) {
64
+ return {
65
+ accessLevel: NO_ACCESS
66
+ };
67
+ }
68
+ const data = {
69
+ accessLevel: CUSTOM_ACCESS,
70
+ userAccessScope: NO_ACCESS
71
+ };
72
+ const hasUserAccess = permissions.find(item => item.name === ADMIN_USERS_USER_ACCESS);
73
+ if (hasUserAccess) {
74
+ data.userAccessScope = FULL_ACCESS;
75
+ }
76
+ return data;
77
+ }, []);
78
+ return /*#__PURE__*/React.createElement(Form, {
79
+ data: formData,
80
+ onChange: onFormChange
81
+ }, ({
82
+ data,
83
+ Bind
84
+ }) => {
85
+ const disableUserAccessScope = data.groupAccessScope === NO_ACCESS;
86
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, {
87
+ className: gridWithPaddingClass
88
+ }, /*#__PURE__*/React.createElement(Cell, {
89
+ span: 12
90
+ }, data.accessLevel === "custom" && cannotUseAAcl && /*#__PURE__*/React.createElement(CannotUseAaclAlert, null))), /*#__PURE__*/React.createElement(Grid, {
91
+ className: gridWithPaddingClass
92
+ }, /*#__PURE__*/React.createElement(Cell, {
93
+ span: 6
94
+ }, /*#__PURE__*/React.createElement(PermissionInfo, {
95
+ title: t`Access Level`
96
+ })), /*#__PURE__*/React.createElement(Cell, {
97
+ span: 6
98
+ }, /*#__PURE__*/React.createElement(Bind, {
99
+ name: "accessLevel"
100
+ }, /*#__PURE__*/React.createElement(Select, null, /*#__PURE__*/React.createElement("option", {
101
+ value: NO_ACCESS
102
+ }, t`No access`), /*#__PURE__*/React.createElement("option", {
103
+ value: FULL_ACCESS
104
+ }, t`Full access`), /*#__PURE__*/React.createElement("option", {
105
+ value: CUSTOM_ACCESS
106
+ }, t`Custom access`))))), data.accessLevel === CUSTOM_ACCESS && /*#__PURE__*/React.createElement("div", {
107
+ className: "mt-lg"
108
+ }, /*#__PURE__*/React.createElement(PermissionsGroup, {
109
+ title: t`Users`
110
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
111
+ span: 12
112
+ }, /*#__PURE__*/React.createElement(Bind, {
113
+ name: "userAccessScope"
114
+ }, ({
115
+ value,
116
+ ...props
117
+ }) => /*#__PURE__*/React.createElement(Select, Object.assign({}, props, {
118
+ label: t`Access Scope`,
119
+ disabled: cannotUseAAcl || disableUserAccessScope,
120
+ value: disableUserAccessScope ? NO_ACCESS : value
121
+ }), /*#__PURE__*/React.createElement("option", {
122
+ value: NO_ACCESS
123
+ }, t`No access`), /*#__PURE__*/React.createElement("option", {
124
+ value: FULL_ACCESS
125
+ }, t`Full access`))))))));
126
+ });
127
+ };
128
+
129
+ //# sourceMappingURL=AdminUsersPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Fragment","useCallback","useMemo","Grid","Cell","Select","i18n","CannotUseAaclAlert","PermissionInfo","gridWithPaddingClass","PermissionsGroup","Form","useSecurity","t","ns","ADMIN_USERS","ADMIN_USERS_FULL_ACCESS","ADMIN_USERS_USER_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","AdminUsersPermissions","value","onChange","getPermission","cannotUseAAcl","onFormChange","data","newValue","Array","isArray","filter","item","name","startsWith","permissions","accessLevel","push","userAccessScope","length","formData","hasFullAccess","find","hasUserAccess","createElement","Bind","disableUserAccessScope","groupAccessScope","className","span","title","props","Object","assign","label","disabled"],"sources":["AdminUsersPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Cell } from \"@webiny/ui/Grid/index.js\";\nimport { Select } from \"@webiny/ui/Select/index.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport {\n CannotUseAaclAlert,\n PermissionInfo,\n gridWithPaddingClass,\n PermissionsGroup,\n type AaclPermission\n} from \"@webiny/app-admin\";\nimport { Form } from \"@webiny/form\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport type { Identity } from \"@webiny/app-admin/domain/Identity.js\";\n\nconst t = i18n.ns(\"app-security-admin-users/plugins/permissionRenderer\");\n\nconst ADMIN_USERS = \"adminUsers\";\nconst ADMIN_USERS_FULL_ACCESS = `${ADMIN_USERS}.*`;\nconst ADMIN_USERS_USER_ACCESS = `${ADMIN_USERS}.user`;\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\nexport interface AdminUsersPermissionsProps {\n value: Identity.Permission[];\n onChange: (value: Identity.Permission[]) => void;\n}\n\ninterface OnFormChangeCallable {\n (data: Identity.Permission): void;\n}\n\nexport const AdminUsersPermissions = ({ value, onChange }: AdminUsersPermissionsProps) => {\n const { getPermission } = useSecurity();\n\n // We disable form elements for custom permissions if AACL cannot be used.\n const cannotUseAAcl = useMemo(() => {\n return !getPermission<AaclPermission>(\"aacl\", true);\n }, []);\n\n const onFormChange = useCallback<OnFormChangeCallable>(\n data => {\n let newValue: Identity.Permission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `security*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(ADMIN_USERS));\n }\n\n const permissions = [];\n if (data.accessLevel === FULL_ACCESS) {\n permissions.push({ name: ADMIN_USERS_FULL_ACCESS });\n } else if (data.accessLevel === CUSTOM_ACCESS) {\n if (data.userAccessScope === FULL_ACCESS) {\n permissions.push({ name: ADMIN_USERS_USER_ACCESS });\n }\n }\n\n if (permissions && permissions.length) {\n newValue.push(...permissions);\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === ADMIN_USERS_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(ADMIN_USERS));\n if (permissions.length === 0) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data = {\n accessLevel: CUSTOM_ACCESS,\n userAccessScope: NO_ACCESS\n };\n\n const hasUserAccess = permissions.find(item => item.name === ADMIN_USERS_USER_ACCESS);\n if (hasUserAccess) {\n data.userAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind }) => {\n const disableUserAccessScope = data.groupAccessScope === NO_ACCESS;\n return (\n <Fragment>\n <Grid className={gridWithPaddingClass}>\n <Cell span={12}>\n {data.accessLevel === \"custom\" && cannotUseAAcl && (\n <CannotUseAaclAlert />\n )}\n </Cell>\n </Grid>\n <Grid className={gridWithPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <div className={\"mt-lg\"}>\n <PermissionsGroup title={t`Users`}>\n <Grid>\n <Cell span={12}>\n <Bind name={\"userAccessScope\"}>\n {({ value, ...props }) => (\n <Select\n {...props}\n label={t`Access Scope`}\n disabled={\n cannotUseAAcl || disableUserAccessScope\n }\n value={\n disableUserAccessScope\n ? NO_ACCESS\n : value\n }\n >\n <option\n value={NO_ACCESS}\n >{t`No access`}</option>\n <option\n value={FULL_ACCESS}\n >{t`Full access`}</option>\n </Select>\n )}\n </Bind>\n </Cell>\n </Grid>\n </PermissionsGroup>\n </div>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin.js";
2
+ declare const _default: PermissionRendererPlugin;
3
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { Accordion } from "@webiny/admin-ui";
3
+ import { ReactComponent as PermissionsIcon } from "@webiny/icons/group.svg";
4
+ import { AdminUsersPermissions } from "./AdminUsersPermissions.js";
5
+ import { PermissionRendererPlugin } from "@webiny/app-admin/plugins/PermissionRendererPlugin.js";
6
+ export default new PermissionRendererPlugin({
7
+ render(props) {
8
+ return /*#__PURE__*/React.createElement(Accordion.Item, {
9
+ icon: /*#__PURE__*/React.createElement(Accordion.Item.Icon, {
10
+ icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
11
+ label: "Admin Users Permissions"
12
+ }),
13
+ title: `Admin Users`,
14
+ description: `Manage Admin Users access permissions.`,
15
+ "data-testid": "permission.adminUsers"
16
+ }, /*#__PURE__*/React.createElement(AdminUsersPermissions, props));
17
+ }
18
+ });
19
+
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Accordion","ReactComponent","PermissionsIcon","AdminUsersPermissions","PermissionRendererPlugin","render","props","createElement","Item","icon","Icon","label","title","description"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/group.svg\";\nimport { AdminUsersPermissions } from \"./AdminUsersPermissions.js\";\nimport { PermissionRendererPlugin } from \"@webiny/app-admin/plugins/PermissionRendererPlugin.js\";\n\nexport default new PermissionRendererPlugin({\n render(props) {\n return (\n <Accordion.Item\n icon={\n <Accordion.Item.Icon\n icon={<PermissionsIcon />}\n label={\"Admin Users Permissions\"}\n />\n }\n title={`Admin Users`}\n description={`Manage Admin Users access permissions.`}\n data-testid={\"permission.adminUsers\"}\n >\n <AdminUsersPermissions {...props} />\n </Accordion.Item>\n );\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,cAAc,IAAIC,eAAe,QAAQ,yBAAyB;AAC3E,SAASC,qBAAqB;AAC9B,SAASC,wBAAwB,QAAQ,uDAAuD;AAEhG,eAAe,IAAIA,wBAAwB,CAAC;EACxCC,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIP,KAAA,CAAAQ,aAAA,CAACP,SAAS,CAACQ,IAAI;MACXC,IAAI,eACAV,KAAA,CAAAQ,aAAA,CAACP,SAAS,CAACQ,IAAI,CAACE,IAAI;QAChBD,IAAI,eAAEV,KAAA,CAAAQ,aAAA,CAACL,eAAe,MAAE,CAAE;QAC1BS,KAAK,EAAE;MAA0B,CACpC,CACJ;MACDC,KAAK,EAAE,aAAc;MACrBC,WAAW,EAAE,wCAAyC;MACtD,eAAa;IAAwB,gBAErCd,KAAA,CAAAQ,aAAA,CAACJ,qBAAqB,EAAKG,KAAQ,CACvB,CAAC;EAEzB;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface AccountDetailsProps {
3
+ accountRoute: string;
4
+ }
5
+ export declare const AccountDetails: (props: AccountDetailsProps) => React.JSX.Element | null;
6
+ export {};
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { ReactComponent as AccountIcon } from "@webiny/icons/account_circle.svg";
3
+ import { AdminConfig } from "@webiny/app-admin";
4
+ import { useIsDefaultTenant } from "./useIsDefaultTenant.js";
5
+ const {
6
+ Menu
7
+ } = AdminConfig;
8
+ export const AccountDetails = props => {
9
+ const isDefaultTenant = useIsDefaultTenant();
10
+ if (!isDefaultTenant) {
11
+ return null;
12
+ }
13
+ return /*#__PURE__*/React.createElement(Menu.User.Link, {
14
+ icon: /*#__PURE__*/React.createElement(Menu.User.Item.Icon, {
15
+ element: /*#__PURE__*/React.createElement(AccountIcon, null),
16
+ label: "Account settings"
17
+ }),
18
+ text: "Account settings",
19
+ to: props.accountRoute
20
+ });
21
+ };
22
+
23
+ //# sourceMappingURL=AccountDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ReactComponent","AccountIcon","AdminConfig","useIsDefaultTenant","Menu","AccountDetails","props","isDefaultTenant","createElement","User","Link","icon","Item","Icon","element","label","text","to","accountRoute"],"sources":["AccountDetails.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as AccountIcon } from \"@webiny/icons/account_circle.svg\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { useIsDefaultTenant } from \"./useIsDefaultTenant.js\";\n\nconst { Menu } = AdminConfig;\n\ninterface AccountDetailsProps {\n accountRoute: string;\n}\n\nexport const AccountDetails = (props: AccountDetailsProps) => {\n const isDefaultTenant = useIsDefaultTenant();\n\n if (!isDefaultTenant) {\n return null;\n }\n return (\n <Menu.User.Link\n icon={<Menu.User.Item.Icon element={<AccountIcon />} label={\"Account settings\"} />}\n text={\"Account settings\"}\n to={props.accountRoute}\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,IAAIC,WAAW,QAAQ,kCAAkC;AAChF,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,kBAAkB;AAE3B,MAAM;EAAEC;AAAK,CAAC,GAAGF,WAAW;AAM5B,OAAO,MAAMG,cAAc,GAAIC,KAA0B,IAAK;EAC1D,MAAMC,eAAe,GAAGJ,kBAAkB,CAAC,CAAC;EAE5C,IAAI,CAACI,eAAe,EAAE;IAClB,OAAO,IAAI;EACf;EACA,oBACIR,KAAA,CAAAS,aAAA,CAACJ,IAAI,CAACK,IAAI,CAACC,IAAI;IACXC,IAAI,eAAEZ,KAAA,CAAAS,aAAA,CAACJ,IAAI,CAACK,IAAI,CAACG,IAAI,CAACC,IAAI;MAACC,OAAO,eAAEf,KAAA,CAAAS,aAAA,CAACP,WAAW,MAAE,CAAE;MAACc,KAAK,EAAE;IAAmB,CAAE,CAAE;IACnFC,IAAI,EAAE,kBAAmB;IACzBC,EAAE,EAAEX,KAAK,CAACY;EAAa,CAC1B,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare function useIsDefaultTenant(): boolean;
@@ -0,0 +1,15 @@
1
+ import { useIdentity } from "@webiny/app-admin";
2
+ export function useIsDefaultTenant() {
3
+ const {
4
+ identity
5
+ } = useIdentity();
6
+
7
+ // This is only applicable in multi-tenant environments
8
+ const {
9
+ currentTenant,
10
+ defaultTenant
11
+ } = identity;
12
+ return currentTenant.id === defaultTenant.id;
13
+ }
14
+
15
+ //# sourceMappingURL=useIsDefaultTenant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useIdentity","useIsDefaultTenant","identity","currentTenant","defaultTenant","id"],"sources":["useIsDefaultTenant.ts"],"sourcesContent":["import { useIdentity } from \"@webiny/app-admin\";\n\nexport function useIsDefaultTenant(): boolean {\n const { identity } = useIdentity();\n\n // This is only applicable in multi-tenant environments\n const { currentTenant, defaultTenant } = identity;\n\n return currentTenant.id === defaultTenant.id;\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mBAAmB;AAE/C,OAAO,SAASC,kBAAkBA,CAAA,EAAY;EAC1C,MAAM;IAAEC;EAAS,CAAC,GAAGF,WAAW,CAAC,CAAC;;EAElC;EACA,MAAM;IAAEG,aAAa;IAAEC;EAAc,CAAC,GAAGF,QAAQ;EAEjD,OAAOC,aAAa,CAACE,EAAE,KAAKD,aAAa,CAACC,EAAE;AAChD","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ export interface CognitoLoginScreenProps {
3
+ region: string;
4
+ userPoolId: string;
5
+ clientId: string;
6
+ children: React.ReactNode;
7
+ }
8
+ export declare const CognitoLoginScreen: ((props: CognitoLoginScreenProps) => React.JSX.Element) & {
9
+ displayName: string;
10
+ };
@@ -0,0 +1,54 @@
1
+ import React, { useEffect } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { useFeature } from "@webiny/app";
4
+ import { OverlayLoader } from "@webiny/admin-ui";
5
+ import { CognitoFeature } from "./feature.js";
6
+ import { SignIn } from "./components/SignIn.js";
7
+ import { RequireNewPassword } from "./components/RequireNewPassword.js";
8
+ import { RequestPasswordResetCode } from "./components/RequestPasswordResetCode.js";
9
+ import { SetNewPassword } from "./components/SetNewPassword.js";
10
+ import { PasswordResetCodeSent } from "./components/PasswordResetCodeSent.js";
11
+ export const CognitoLoginScreen = observer(props => {
12
+ const {
13
+ presenter
14
+ } = useFeature(CognitoFeature);
15
+ useEffect(() => {
16
+ presenter.init({
17
+ region: props.region,
18
+ userPoolId: props.userPoolId,
19
+ clientId: props.clientId
20
+ });
21
+ }, []);
22
+ const vm = presenter.vm;
23
+ if (vm.isAuthenticated) {
24
+ return /*#__PURE__*/React.createElement(React.Fragment, null, props.children);
25
+ }
26
+ return /*#__PURE__*/React.createElement(React.Fragment, null, vm.isLoggingIn ? /*#__PURE__*/React.createElement(OverlayLoader, {
27
+ text: "Signing in..."
28
+ }) : null, vm.checkingSession ? /*#__PURE__*/React.createElement(OverlayLoader, {
29
+ text: "Checking session..."
30
+ }) : null, !vm.isLoggingIn && !vm.checkingSession ? /*#__PURE__*/React.createElement(React.Fragment, null, vm.authState === "requireNewPassword" && /*#__PURE__*/React.createElement(RequireNewPassword, {
31
+ vm: vm.requireNewPassword,
32
+ onSubmit: (password, attributes) => presenter.confirmNewPassword(password, attributes),
33
+ onCancel: () => presenter.showSignIn()
34
+ }), vm.authState === "requestPasswordResetCode" && /*#__PURE__*/React.createElement(RequestPasswordResetCode, {
35
+ vm: vm.requestPasswordResetCode,
36
+ onRequestCode: username => presenter.requestPasswordReset(username),
37
+ onCancel: () => presenter.showSignIn()
38
+ }), vm.authState === "passwordResetCodeSent" && /*#__PURE__*/React.createElement(PasswordResetCodeSent, {
39
+ vm: vm.passwordResetCodeSent,
40
+ onResendCode: () => presenter.resendPasswordResetCode(),
41
+ onCodeAcquired: () => presenter.showSetNewPassword(),
42
+ onCancel: () => presenter.showSignIn()
43
+ }), vm.authState === "setNewPassword" && /*#__PURE__*/React.createElement(SetNewPassword, {
44
+ vm: vm.setNewPassword,
45
+ onSetNewPassword: (code, password) => presenter.confirmPasswordReset(code, password),
46
+ onCancel: () => presenter.showSignIn()
47
+ }), (vm.authState === "signIn" || vm.authState === "signedOut") && /*#__PURE__*/React.createElement(SignIn, {
48
+ vm: vm.signIn,
49
+ onSubmit: (username, password) => presenter.signIn(username, password),
50
+ onForgotPassword: () => presenter.showRequestPasswordResetCode()
51
+ })) : null);
52
+ });
53
+
54
+ //# sourceMappingURL=CognitoLoginScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","observer","useFeature","OverlayLoader","CognitoFeature","SignIn","RequireNewPassword","RequestPasswordResetCode","SetNewPassword","PasswordResetCodeSent","CognitoLoginScreen","props","presenter","init","region","userPoolId","clientId","vm","isAuthenticated","createElement","Fragment","children","isLoggingIn","text","checkingSession","authState","requireNewPassword","onSubmit","password","attributes","confirmNewPassword","onCancel","showSignIn","requestPasswordResetCode","onRequestCode","username","requestPasswordReset","passwordResetCodeSent","onResendCode","resendPasswordResetCode","onCodeAcquired","showSetNewPassword","setNewPassword","onSetNewPassword","code","confirmPasswordReset","signIn","onForgotPassword","showRequestPasswordResetCode"],"sources":["CognitoLoginScreen.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useFeature } from \"@webiny/app\";\nimport { OverlayLoader } from \"@webiny/admin-ui\";\nimport { CognitoFeature } from \"./feature.js\";\nimport { SignIn } from \"./components/SignIn.js\";\nimport { RequireNewPassword } from \"./components/RequireNewPassword.js\";\nimport { RequestPasswordResetCode } from \"./components/RequestPasswordResetCode.js\";\nimport { SetNewPassword } from \"./components/SetNewPassword.js\";\nimport { PasswordResetCodeSent } from \"~/admin/presentation/Cognito/components/PasswordResetCodeSent.js\";\n\nexport interface CognitoLoginScreenProps {\n region: string;\n userPoolId: string;\n clientId: string;\n children: React.ReactNode;\n}\n\nexport const CognitoLoginScreen = observer((props: CognitoLoginScreenProps) => {\n const { presenter } = useFeature(CognitoFeature);\n\n useEffect(() => {\n presenter.init({\n region: props.region,\n userPoolId: props.userPoolId,\n clientId: props.clientId\n });\n }, []);\n\n const vm = presenter.vm;\n\n if (vm.isAuthenticated) {\n return <>{props.children}</>;\n }\n\n return (\n <>\n {vm.isLoggingIn ? <OverlayLoader text={\"Signing in...\"} /> : null}\n {vm.checkingSession ? <OverlayLoader text={\"Checking session...\"} /> : null}\n\n {!vm.isLoggingIn && !vm.checkingSession ? (\n <>\n {vm.authState === \"requireNewPassword\" && (\n <RequireNewPassword\n vm={vm.requireNewPassword}\n onSubmit={(password, attributes) =>\n presenter.confirmNewPassword(password, attributes)\n }\n onCancel={() => presenter.showSignIn()}\n />\n )}\n\n {vm.authState === \"requestPasswordResetCode\" && (\n <RequestPasswordResetCode\n vm={vm.requestPasswordResetCode}\n onRequestCode={username => presenter.requestPasswordReset(username)}\n onCancel={() => presenter.showSignIn()}\n />\n )}\n\n {vm.authState === \"passwordResetCodeSent\" && (\n <PasswordResetCodeSent\n vm={vm.passwordResetCodeSent}\n onResendCode={() => presenter.resendPasswordResetCode()}\n onCodeAcquired={() => presenter.showSetNewPassword()}\n onCancel={() => presenter.showSignIn()}\n />\n )}\n\n {vm.authState === \"setNewPassword\" && (\n <SetNewPassword\n vm={vm.setNewPassword}\n onSetNewPassword={(code, password) =>\n presenter.confirmPasswordReset(code, password)\n }\n onCancel={() => presenter.showSignIn()}\n />\n )}\n\n {(vm.authState === \"signIn\" || vm.authState === \"signedOut\") && (\n <SignIn\n vm={vm.signIn}\n onSubmit={(username, password) => presenter.signIn(username, password)}\n onForgotPassword={() => presenter.showRequestPasswordResetCode()}\n />\n )}\n </>\n ) : null}\n </>\n );\n});\n"],"mappings":"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","ignoreList":[]}