@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.
- package/Cognito.d.ts +8 -0
- package/Cognito.js +30 -0
- package/Cognito.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/admin/Cognito.d.ts +6 -0
- package/admin/Cognito.js +53 -0
- package/admin/Cognito.js.map +1 -0
- package/admin/CognitoLogin.d.ts +7 -0
- package/admin/CognitoLogin.js +18 -0
- package/admin/CognitoLogin.js.map +1 -0
- package/admin/Extension.d.ts +2 -0
- package/admin/Extension.js +20 -0
- package/admin/Extension.js.map +1 -0
- package/admin/federatedIdentityProviders.d.ts +9 -0
- package/admin/federatedIdentityProviders.js +9 -0
- package/admin/federatedIdentityProviders.js.map +1 -0
- package/admin/plugins/constants.d.ts +3 -0
- package/admin/plugins/constants.js +6 -0
- package/admin/plugins/constants.js.map +1 -0
- package/admin/plugins/permissionRenderer/AdminUsersPermissions.d.ts +7 -0
- package/admin/plugins/permissionRenderer/AdminUsersPermissions.js +129 -0
- package/admin/plugins/permissionRenderer/AdminUsersPermissions.js.map +1 -0
- package/admin/plugins/permissionRenderer/index.d.ts +3 -0
- package/admin/plugins/permissionRenderer/index.js +20 -0
- package/admin/plugins/permissionRenderer/index.js.map +1 -0
- package/admin/plugins/userMenu/AccountDetails.d.ts +6 -0
- package/admin/plugins/userMenu/AccountDetails.js +23 -0
- package/admin/plugins/userMenu/AccountDetails.js.map +1 -0
- package/admin/plugins/userMenu/useIsDefaultTenant.d.ts +1 -0
- package/admin/plugins/userMenu/useIsDefaultTenant.js +15 -0
- package/admin/plugins/userMenu/useIsDefaultTenant.js.map +1 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.d.ts +10 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.js +54 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -0
- package/admin/presentation/Cognito/CognitoPresenter.d.ts +58 -0
- package/admin/presentation/Cognito/CognitoPresenter.js +277 -0
- package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -0
- package/admin/presentation/Cognito/abstractions.d.ts +72 -0
- package/admin/presentation/Cognito/abstractions.js +4 -0
- package/admin/presentation/Cognito/abstractions.js.map +1 -0
- package/admin/presentation/Cognito/components/Divider.d.ts +2 -0
- package/admin/presentation/Cognito/components/Divider.js +16 -0
- package/admin/presentation/Cognito/components/Divider.js.map +1 -0
- package/admin/presentation/Cognito/components/FederatedLogin.d.ts +7 -0
- package/admin/presentation/Cognito/components/FederatedLogin.js +32 -0
- package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -0
- package/admin/presentation/Cognito/components/FederatedProviders.d.ts +44 -0
- package/admin/presentation/Cognito/components/FederatedProviders.js +14 -0
- package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -0
- package/admin/presentation/Cognito/components/FooterSignIn.d.ts +6 -0
- package/admin/presentation/Cognito/components/FooterSignIn.js +15 -0
- package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -0
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +9 -0
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +43 -0
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -0
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +8 -0
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +45 -0
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -0
- package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +8 -0
- package/admin/presentation/Cognito/components/RequireNewPassword.js +55 -0
- package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -0
- package/admin/presentation/Cognito/components/SetNewPassword.d.ts +8 -0
- package/admin/presentation/Cognito/components/SetNewPassword.js +79 -0
- package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -0
- package/admin/presentation/Cognito/components/SignIn.d.ts +10 -0
- package/admin/presentation/Cognito/components/SignIn.js +64 -0
- package/admin/presentation/Cognito/components/SignIn.js.map +1 -0
- package/admin/presentation/Cognito/components/View.d.ts +98 -0
- package/admin/presentation/Cognito/components/View.js +67 -0
- package/admin/presentation/Cognito/components/View.js.map +1 -0
- package/admin/presentation/Cognito/feature.d.ts +3 -0
- package/admin/presentation/Cognito/feature.js +16 -0
- package/admin/presentation/Cognito/feature.js.map +1 -0
- package/admin/presentation/shared/createPasswordValidator.d.ts +8 -0
- package/admin/presentation/shared/createPasswordValidator.js +27 -0
- package/admin/presentation/shared/createPasswordValidator.js.map +1 -0
- package/admin/presentation/shared/usePasswordValidator.d.ts +1 -0
- package/admin/presentation/shared/usePasswordValidator.js +15 -0
- package/admin/presentation/shared/usePasswordValidator.js.map +1 -0
- package/admin/routes.d.ts +10 -0
- package/admin/routes.js +21 -0
- package/admin/routes.js.map +1 -0
- package/admin/ui/UserItem.d.ts +10 -0
- package/admin/ui/UserItem.js +3 -0
- package/admin/ui/UserItem.js.map +1 -0
- package/admin/ui/components/AvatarImage/AvatarImage.d.ts +3 -0
- package/admin/ui/components/AvatarImage/AvatarImage.js +43 -0
- package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -0
- package/admin/ui/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
- package/admin/ui/components/AvatarImage/AvatarImagePreview.js +55 -0
- package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -0
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +29 -0
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
- package/admin/ui/components/AvatarImage/index.d.ts +1 -0
- package/admin/ui/components/AvatarImage/index.js +3 -0
- package/admin/ui/components/AvatarImage/index.js.map +1 -0
- package/admin/ui/views/Account/Account.d.ts +2 -0
- package/admin/ui/views/Account/Account.js +142 -0
- package/admin/ui/views/Account/Account.js.map +1 -0
- package/admin/ui/views/Account/graphql.d.ts +2 -0
- package/admin/ui/views/Account/graphql.js +40 -0
- package/admin/ui/views/Account/graphql.js.map +1 -0
- package/admin/ui/views/Account/index.d.ts +1 -0
- package/admin/ui/views/Account/index.js +3 -0
- package/admin/ui/views/Account/index.js.map +1 -0
- package/admin/ui/views/Users/UsersDataList.d.ts +3 -0
- package/admin/ui/views/Users/UsersDataList.js +172 -0
- package/admin/ui/views/Users/UsersDataList.js.map +1 -0
- package/admin/ui/views/Users/UsersForm.d.ts +5 -0
- package/admin/ui/views/Users/UsersForm.js +174 -0
- package/admin/ui/views/Users/UsersForm.js.map +1 -0
- package/admin/ui/views/Users/UsersView.d.ts +2 -0
- package/admin/ui/views/Users/UsersView.js +14 -0
- package/admin/ui/views/Users/UsersView.js.map +1 -0
- package/admin/ui/views/Users/components/DeleteAction.d.ts +7 -0
- package/admin/ui/views/Users/components/DeleteAction.js +36 -0
- package/admin/ui/views/Users/components/DeleteAction.js.map +1 -0
- package/admin/ui/views/Users/graphql.d.ts +5 -0
- package/admin/ui/views/Users/graphql.js +99 -0
- package/admin/ui/views/Users/graphql.js.map +1 -0
- package/admin/ui/views/Users/hooks/useUserForm.d.ts +27 -0
- package/admin/ui/views/Users/hooks/useUserForm.js +127 -0
- package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -0
- package/admin/ui/views/Users/search.svg +20 -0
- package/admin/ui/views/utils.d.ts +3 -0
- package/admin/ui/views/utils.js +10 -0
- package/admin/ui/views/utils.js.map +1 -0
- package/api/CognitoApiFeature.d.ts +1 -0
- package/api/CognitoApiFeature.js +28 -0
- package/api/CognitoApiFeature.js.map +1 -0
- package/api/domain/Username.d.ts +4 -0
- package/api/domain/Username.js +7 -0
- package/api/domain/Username.js.map +1 -0
- package/api/domain/errors.d.ts +37 -0
- package/api/domain/errors.js +63 -0
- package/api/domain/errors.js.map +1 -0
- package/api/features/CognitoIdp/CognitoIdentityProvider.d.ts +15 -0
- package/api/features/CognitoIdp/CognitoIdentityProvider.js +61 -0
- package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -0
- package/api/features/CognitoIdp/abstractions.d.ts +15 -0
- package/api/features/CognitoIdp/abstractions.js +4 -0
- package/api/features/CognitoIdp/abstractions.js.map +1 -0
- package/api/features/CognitoIdp/feature.d.ts +1 -0
- package/api/features/CognitoIdp/feature.js +10 -0
- package/api/features/CognitoIdp/feature.js.map +1 -0
- package/api/features/CognitoIdp/index.d.ts +2 -0
- package/api/features/CognitoIdp/index.js +4 -0
- package/api/features/CognitoIdp/index.js.map +1 -0
- package/api/features/CognitoService/CognitoService.d.ts +20 -0
- package/api/features/CognitoService/CognitoService.js +90 -0
- package/api/features/CognitoService/CognitoService.js.map +1 -0
- package/api/features/CognitoService/abstractions.d.ts +54 -0
- package/api/features/CognitoService/abstractions.js +8 -0
- package/api/features/CognitoService/abstractions.js.map +1 -0
- package/api/features/CognitoService/feature.d.ts +5 -0
- package/api/features/CognitoService/feature.js +12 -0
- package/api/features/CognitoService/feature.js.map +1 -0
- package/api/features/CognitoService/index.d.ts +1 -0
- package/api/features/CognitoService/index.js +3 -0
- package/api/features/CognitoService/index.js.map +1 -0
- package/api/features/CreateUser/CreateUserUseCase.d.ts +22 -0
- package/api/features/CreateUser/CreateUserUseCase.js +106 -0
- package/api/features/CreateUser/CreateUserUseCase.js.map +1 -0
- package/api/features/CreateUser/abstractions.d.ts +35 -0
- package/api/features/CreateUser/abstractions.js +4 -0
- package/api/features/CreateUser/abstractions.js.map +1 -0
- package/api/features/CreateUser/feature.d.ts +1 -0
- package/api/features/CreateUser/feature.js +10 -0
- package/api/features/CreateUser/feature.js.map +1 -0
- package/api/features/CreateUser/index.d.ts +2 -0
- package/api/features/CreateUser/index.js +4 -0
- package/api/features/CreateUser/index.js.map +1 -0
- package/api/features/CreateUser/schema.d.ts +47 -0
- package/api/features/CreateUser/schema.js +17 -0
- package/api/features/CreateUser/schema.js.map +1 -0
- package/api/features/DeleteUser/DeleteUserUseCase.d.ts +16 -0
- package/api/features/DeleteUser/DeleteUserUseCase.js +54 -0
- package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -0
- package/api/features/DeleteUser/abstractions.d.ts +19 -0
- package/api/features/DeleteUser/abstractions.js +4 -0
- package/api/features/DeleteUser/abstractions.js.map +1 -0
- package/api/features/DeleteUser/feature.d.ts +1 -0
- package/api/features/DeleteUser/feature.js +10 -0
- package/api/features/DeleteUser/feature.js.map +1 -0
- package/api/features/DeleteUser/index.d.ts +2 -0
- package/api/features/DeleteUser/index.js +4 -0
- package/api/features/DeleteUser/index.js.map +1 -0
- package/api/features/UpdateUser/UpdateUserUseCase.d.ts +21 -0
- package/api/features/UpdateUser/UpdateUserUseCase.js +88 -0
- package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -0
- package/api/features/UpdateUser/abstractions.d.ts +33 -0
- package/api/features/UpdateUser/abstractions.js +4 -0
- package/api/features/UpdateUser/abstractions.js.map +1 -0
- package/api/features/UpdateUser/feature.d.ts +1 -0
- package/api/features/UpdateUser/feature.js +10 -0
- package/api/features/UpdateUser/feature.js.map +1 -0
- package/api/features/UpdateUser/index.d.ts +2 -0
- package/api/features/UpdateUser/index.js +4 -0
- package/api/features/UpdateUser/index.js.map +1 -0
- package/api/features/UpdateUser/schema.d.ts +44 -0
- package/api/features/UpdateUser/schema.js +16 -0
- package/api/features/UpdateUser/schema.js.map +1 -0
- package/api/features/UserInstaller/UserInstaller.d.ts +27 -0
- package/api/features/UserInstaller/UserInstaller.js +48 -0
- package/api/features/UserInstaller/UserInstaller.js.map +1 -0
- package/api/features/UserInstaller/feature.d.ts +1 -0
- package/api/features/UserInstaller/feature.js +10 -0
- package/api/features/UserInstaller/feature.js.map +1 -0
- package/api/graphql/user.gql.d.ts +8 -0
- package/api/graphql/user.gql.js +167 -0
- package/api/graphql/user.gql.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +4 -0
- package/index.js.map +1 -0
- 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>;
|
package/admin/Cognito.js
ADDED
|
@@ -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,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,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 @@
|
|
|
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 @@
|
|
|
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,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,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":[]}
|