@webiny/cognito 0.0.0-unstable.e2758ee1cf → 0.0.0-unstable.e6f0dc8ca7

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 (60) hide show
  1. package/Cognito.d.ts +1 -5
  2. package/admin/Cognito.js +4 -5
  3. package/admin/Cognito.js.map +1 -1
  4. package/admin/Extension.js +3 -0
  5. package/admin/Extension.js.map +1 -1
  6. package/admin/SecurityPermission.js +2 -10
  7. package/admin/SecurityPermission.js.map +1 -1
  8. package/admin/domain/permissionsSchema.d.ts +10 -0
  9. package/admin/domain/permissionsSchema.js +13 -0
  10. package/admin/domain/permissionsSchema.js.map +1 -0
  11. package/admin/features/permissions/abstractions.d.ts +17 -0
  12. package/admin/features/permissions/abstractions.js +5 -0
  13. package/admin/features/permissions/abstractions.js.map +1 -0
  14. package/admin/features/permissions/feature.d.ts +14 -0
  15. package/admin/features/permissions/feature.js +6 -0
  16. package/admin/features/permissions/feature.js.map +1 -0
  17. package/admin/presentation/Cognito/CognitoPresenter.d.ts +0 -1
  18. package/admin/presentation/Cognito/CognitoPresenter.js +43 -21
  19. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
  20. package/admin/presentation/Cognito/components/FederatedLogin.js +10 -7
  21. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
  22. package/admin/presentation/shared/createPasswordValidator.js +1 -1
  23. package/admin/presentation/shared/createPasswordValidator.js.map +1 -1
  24. package/admin/ui/views/Users/UsersDataList.js +25 -26
  25. package/admin/ui/views/Users/UsersDataList.js.map +1 -1
  26. package/admin/ui/views/Users/components/DeleteAction.js +13 -12
  27. package/admin/ui/views/Users/components/DeleteAction.js.map +1 -1
  28. package/api/CognitoApiFeature.d.ts +4 -1
  29. package/api/features/CognitoIdp/feature.d.ts +4 -1
  30. package/api/features/CognitoService/feature.d.ts +4 -1
  31. package/api/features/CognitoService/feature.js.map +1 -1
  32. package/api/features/CreateUser/CreateUserUseCase.js +1 -1
  33. package/api/features/CreateUser/CreateUserUseCase.js.map +1 -1
  34. package/api/features/CreateUser/feature.d.ts +4 -1
  35. package/api/features/CreateUser/schema.d.ts +4 -36
  36. package/api/features/DeleteUser/DeleteUserUseCase.d.ts +2 -2
  37. package/api/features/DeleteUser/DeleteUserUseCase.js +2 -2
  38. package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -1
  39. package/api/features/DeleteUser/feature.d.ts +4 -1
  40. package/api/features/UpdateUser/UpdateUserUseCase.d.ts +2 -2
  41. package/api/features/UpdateUser/UpdateUserUseCase.js +3 -3
  42. package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -1
  43. package/api/features/UpdateUser/feature.d.ts +4 -1
  44. package/api/features/UpdateUser/schema.d.ts +4 -34
  45. package/api/features/UserInstaller/UserInstaller.d.ts +2 -2
  46. package/api/features/UserInstaller/UserInstaller.js +2 -2
  47. package/api/features/UserInstaller/UserInstaller.js.map +1 -1
  48. package/api/features/UserInstaller/feature.d.ts +4 -1
  49. package/api/graphql/user.gql.js +2 -2
  50. package/api/graphql/user.gql.js.map +1 -1
  51. package/package.json +31 -29
  52. package/admin/plugins/constants.d.ts +0 -3
  53. package/admin/plugins/constants.js +0 -6
  54. package/admin/plugins/constants.js.map +0 -1
  55. /package/admin/{plugins → presentation}/userMenu/AccountDetails.d.ts +0 -0
  56. /package/admin/{plugins → presentation}/userMenu/AccountDetails.js +0 -0
  57. /package/admin/{plugins → presentation}/userMenu/AccountDetails.js.map +0 -0
  58. /package/admin/{plugins → presentation}/userMenu/useIsDefaultTenant.d.ts +0 -0
  59. /package/admin/{plugins → presentation}/userMenu/useIsDefaultTenant.js +0 -0
  60. /package/admin/{plugins → presentation}/userMenu/useIsDefaultTenant.js.map +0 -0
package/Cognito.d.ts CHANGED
@@ -1,8 +1,4 @@
1
1
  import { z } from "zod";
2
2
  export declare const Cognito: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
3
3
  apiConfig: z.ZodOptional<z.ZodString>;
4
- }, "strip", z.ZodTypeAny, {
5
- apiConfig?: string | undefined;
6
- }, {
7
- apiConfig?: string | undefined;
8
- }>>;
4
+ }, z.core.$strip>>;
package/admin/Cognito.js CHANGED
@@ -2,13 +2,12 @@ import React, { Fragment, memo } from "react";
2
2
  import { AdminConfig, AdminLayout } from "@webiny/app-admin";
3
3
  import { HasPermission } from "@webiny/app-admin";
4
4
  import { useRouter } from "@webiny/app-admin";
5
- import { Permission } from "./plugins/constants.js";
6
5
  import { UsersView } from "./ui/views/Users/UsersView.js";
7
6
  import { UserAccountForm } from "./ui/views/Account/index.js";
8
- import { AccountDetails } from "./plugins/userMenu/AccountDetails.js";
9
7
  import { SecurityPermission } from "./SecurityPermission.js";
10
8
  import { CognitoLogin } from "./CognitoLogin.js";
11
9
  import { Routes } from "./routes.js";
10
+ import { AccountDetails } from "./presentation/userMenu/AccountDetails.js";
12
11
  const {
13
12
  Route,
14
13
  Menu
@@ -18,7 +17,7 @@ const CognitoIdP = props => {
18
17
  getLink
19
18
  } = useRouter();
20
19
  return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SecurityPermission, null), /*#__PURE__*/React.createElement(CognitoLogin, props.login), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
21
- name: Permission.Users
20
+ name: "adminUsers.user"
22
21
  }, /*#__PURE__*/React.createElement(Route, {
23
22
  route: Routes.Users.List,
24
23
  element: /*#__PURE__*/React.createElement(AdminLayout, {
@@ -31,8 +30,8 @@ const CognitoIdP = props => {
31
30
  }, /*#__PURE__*/React.createElement(UserAccountForm, null))
32
31
  }), /*#__PURE__*/React.createElement(Menu, {
33
32
  name: "cognito.settings.adminUsers",
34
- parent: "settings",
35
- after: "security.settings",
33
+ parent: "settings.security",
34
+ before: "$first",
36
35
  element: /*#__PURE__*/React.createElement(Menu.Link, {
37
36
  text: "Users",
38
37
  to: getLink(Routes.Users.List),
@@ -1 +1 @@
1
- {"version":3,"names":["React","Fragment","memo","AdminConfig","AdminLayout","HasPermission","useRouter","Permission","UsersView","UserAccountForm","AccountDetails","SecurityPermission","CognitoLogin","Routes","Route","Menu","CognitoIdP","props","getLink","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 { 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 { SecurityPermission } from \"./SecurityPermission.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 return (\n <Fragment>\n <SecurityPermission />\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,aAAa,QAAQ,mBAAmB;AACjD,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,UAAU;AACnB,SAASC,SAAS;AAClB,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AACrB,SAASC,MAAM;AAEf,MAAM;EAAEC,KAAK;EAAEC;AAAK,CAAC,GAAGZ,WAAW;AAMnC,MAAMa,UAAU,GAAIC,KAAwB,IAAK;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAGZ,SAAS,CAAC,CAAC;EAE/B,oBACIN,KAAA,CAAAmB,aAAA,CAAClB,QAAQ,qBACLD,KAAA,CAAAmB,aAAA,CAACR,kBAAkB,MAAE,CAAC,eACtBX,KAAA,CAAAmB,aAAA,CAACP,YAAY,EAAKK,KAAK,CAACG,KAAQ,CAAC,eACjCpB,KAAA,CAAAmB,aAAA,CAAChB,WAAW,qBACRH,KAAA,CAAAmB,aAAA,CAACd,aAAa;IAACgB,IAAI,EAAEd,UAAU,CAACe;EAAM,gBAClCtB,KAAA,CAAAmB,aAAA,CAACL,KAAK;IACFS,KAAK,EAAEV,MAAM,CAACS,KAAK,CAACE,IAAK;IACzBC,OAAO,eACHzB,KAAA,CAAAmB,aAAA,CAACf,WAAW;MAACsB,KAAK,EAAE;IAAc,gBAC9B1B,KAAA,CAAAmB,aAAA,CAACX,SAAS,MAAE,CACH;EAChB,CACJ,CAAC,eAEFR,KAAA,CAAAmB,aAAA,CAACL,KAAK;IACFS,KAAK,EAAEV,MAAM,CAACS,KAAK,CAACK,OAAQ;IAC5BF,OAAO,eACHzB,KAAA,CAAAmB,aAAA,CAACf,WAAW;MAACsB,KAAK,EAAE;IAAe,gBAC/B1B,KAAA,CAAAmB,aAAA,CAACV,eAAe,MAAE,CACT;EAChB,CACJ,CAAC,eAEFT,KAAA,CAAAmB,aAAA,CAACJ,IAAI;IACDM,IAAI,EAAE,6BAA8B;IACpCO,MAAM,EAAE,UAAW;IACnBC,KAAK,EAAE,mBAAoB;IAC3BJ,OAAO,eACHzB,KAAA,CAAAmB,aAAA,CAACJ,IAAI,CAACe,IAAI;MACNC,IAAI,EAAE,OAAQ;MACdC,EAAE,EAAEd,OAAO,CAACL,MAAM,CAACS,KAAK,CAACE,IAAI,CAAE;MAC/BS,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAEhBjC,KAAA,CAAAmB,aAAA,CAACJ,IAAI,CAACmB,IAAI;IACNb,IAAI,EAAE,iBAAkB;IACxBQ,KAAK,EAAE,UAAW;IAClBJ,OAAO,eAAEzB,KAAA,CAAAmB,aAAA,CAACT,cAAc;MAACyB,YAAY,EAAEjB,OAAO,CAACL,MAAM,CAACS,KAAK,CAACK,OAAO;IAAE,CAAE;EAAE,CAC5E,CACQ,CACP,CAAC;AAEnB,CAAC;AAED,OAAO,MAAMS,YAAY,gBAAGlC,IAAI,CAACc,UAAU,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","memo","AdminConfig","AdminLayout","HasPermission","useRouter","UsersView","UserAccountForm","SecurityPermission","CognitoLogin","Routes","AccountDetails","Route","Menu","CognitoIdP","props","getLink","createElement","login","name","route","Users","List","element","title","Account","parent","before","Link","text","to","pinnable","User","after","accountRoute","CognitoAdmin"],"sources":["Cognito.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { UsersView } from \"./ui/views/Users/UsersView.js\";\nimport { UserAccountForm } from \"./ui/views/Account/index.js\";\nimport { SecurityPermission } from \"./SecurityPermission.js\";\nimport { CognitoLogin, type CognitoLoginProps } from \"./CognitoLogin.js\";\nimport { Routes } from \"./routes.js\";\nimport { AccountDetails } from \"~/admin/presentation/userMenu/AccountDetails.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 return (\n <Fragment>\n <SecurityPermission />\n <CognitoLogin {...props.login} />\n <AdminConfig>\n <HasPermission name={\"adminUsers.user\"}>\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.security\"}\n before={\"$first\"}\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,aAAa,QAAQ,mBAAmB;AACjD,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,SAAS;AAClB,SAASC,eAAe;AACxB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AACrB,SAASC,MAAM;AACf,SAASC,cAAc;AAEvB,MAAM;EAAEC,KAAK;EAAEC;AAAK,CAAC,GAAGX,WAAW;AAMnC,MAAMY,UAAU,GAAIC,KAAwB,IAAK;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAGX,SAAS,CAAC,CAAC;EAE/B,oBACIN,KAAA,CAAAkB,aAAA,CAACjB,QAAQ,qBACLD,KAAA,CAAAkB,aAAA,CAACT,kBAAkB,MAAE,CAAC,eACtBT,KAAA,CAAAkB,aAAA,CAACR,YAAY,EAAKM,KAAK,CAACG,KAAQ,CAAC,eACjCnB,KAAA,CAAAkB,aAAA,CAACf,WAAW,qBACRH,KAAA,CAAAkB,aAAA,CAACb,aAAa;IAACe,IAAI,EAAE;EAAkB,gBACnCpB,KAAA,CAAAkB,aAAA,CAACL,KAAK;IACFQ,KAAK,EAAEV,MAAM,CAACW,KAAK,CAACC,IAAK;IACzBC,OAAO,eACHxB,KAAA,CAAAkB,aAAA,CAACd,WAAW;MAACqB,KAAK,EAAE;IAAc,gBAC9BzB,KAAA,CAAAkB,aAAA,CAACX,SAAS,MAAE,CACH;EAChB,CACJ,CAAC,eAEFP,KAAA,CAAAkB,aAAA,CAACL,KAAK;IACFQ,KAAK,EAAEV,MAAM,CAACW,KAAK,CAACI,OAAQ;IAC5BF,OAAO,eACHxB,KAAA,CAAAkB,aAAA,CAACd,WAAW;MAACqB,KAAK,EAAE;IAAe,gBAC/BzB,KAAA,CAAAkB,aAAA,CAACV,eAAe,MAAE,CACT;EAChB,CACJ,CAAC,eAEFR,KAAA,CAAAkB,aAAA,CAACJ,IAAI;IACDM,IAAI,EAAE,6BAA8B;IACpCO,MAAM,EAAE,mBAAoB;IAC5BC,MAAM,EAAE,QAAS;IACjBJ,OAAO,eACHxB,KAAA,CAAAkB,aAAA,CAACJ,IAAI,CAACe,IAAI;MACNC,IAAI,EAAE,OAAQ;MACdC,EAAE,EAAEd,OAAO,CAACN,MAAM,CAACW,KAAK,CAACC,IAAI,CAAE;MAC/BS,QAAQ,EAAE;IAAK,CAClB;EACJ,CACJ,CACU,CAAC,eAEhBhC,KAAA,CAAAkB,aAAA,CAACJ,IAAI,CAACmB,IAAI;IACNb,IAAI,EAAE,iBAAkB;IACxBc,KAAK,EAAE,UAAW;IAClBV,OAAO,eAAExB,KAAA,CAAAkB,aAAA,CAACN,cAAc;MAACuB,YAAY,EAAElB,OAAO,CAACN,MAAM,CAACW,KAAK,CAACI,OAAO;IAAE,CAAE;EAAE,CAC5E,CACQ,CACP,CAAC;AAEnB,CAAC;AAED,OAAO,MAAMU,YAAY,gBAAGlC,IAAI,CAACa,UAAU,CAAC","ignoreList":[]}
@@ -2,12 +2,15 @@ import React from "react";
2
2
  import { RegisterFeature } from "@webiny/app-admin";
3
3
  import { CognitoFeature } from "./presentation/Cognito/feature.js";
4
4
  import { CognitoAdmin } from "./Cognito.js";
5
+ import { CognitoPermissionsFeature } from "./features/permissions/feature.js";
5
6
  export const Extension = () => {
6
7
  const region = process.env.REACT_APP_USER_POOL_REGION || "";
7
8
  const userPoolId = process.env.REACT_APP_USER_POOL_ID || "";
8
9
  const clientId = process.env.REACT_APP_USER_POOL_WEB_CLIENT_ID || "";
9
10
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RegisterFeature, {
10
11
  feature: CognitoFeature
12
+ }), /*#__PURE__*/React.createElement(RegisterFeature, {
13
+ feature: CognitoPermissionsFeature
11
14
  }), /*#__PURE__*/React.createElement(CognitoAdmin, {
12
15
  login: {
13
16
  region,
@@ -1 +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":[]}
1
+ {"version":3,"names":["React","RegisterFeature","CognitoFeature","CognitoAdmin","CognitoPermissionsFeature","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\";\nimport { CognitoPermissionsFeature } from \"./features/permissions/feature.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 <RegisterFeature feature={CognitoPermissionsFeature} />\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;AACrB,SAASC,yBAAyB;AAElC,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,oBACIb,KAAA,CAAAc,aAAA,CAAAd,KAAA,CAAAe,QAAA,qBACIf,KAAA,CAAAc,aAAA,CAACb,eAAe;IAACe,OAAO,EAAEd;EAAe,CAAE,CAAC,eAC5CF,KAAA,CAAAc,aAAA,CAACb,eAAe;IAACe,OAAO,EAAEZ;EAA0B,CAAE,CAAC,eACvDJ,KAAA,CAAAc,aAAA,CAACX,YAAY;IACTc,KAAK,EAAE;MACHX,MAAM;MACNI,UAAU;MACVE;IACJ;EAAE,CACL,CACH,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { AdminConfig } from "@webiny/app-admin";
3
3
  import { ReactComponent as PermissionsIcon } from "@webiny/icons/group.svg";
4
+ import { COGNITO_PERMISSIONS_SCHEMA } from "./domain/permissionsSchema.js";
4
5
  const {
5
6
  Security
6
7
  } = AdminConfig;
@@ -10,16 +11,7 @@ export const SecurityPermission = () => {
10
11
  title: "Admin Users",
11
12
  description: "Manage Admin Users permissions.",
12
13
  icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
13
- schema: {
14
- prefix: "adminUsers",
15
- fullAccess: true,
16
- entities: [{
17
- id: "user",
18
- title: "Users",
19
- permission: "adminUsers.user",
20
- scopes: ["full"]
21
- }]
22
- }
14
+ schema: COGNITO_PERMISSIONS_SCHEMA
23
15
  }));
24
16
  };
25
17
 
@@ -1 +1 @@
1
- {"version":3,"names":["React","AdminConfig","ReactComponent","PermissionsIcon","Security","SecurityPermission","createElement","Permissions","name","title","description","icon","schema","prefix","fullAccess","entities","id","permission","scopes"],"sources":["SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/group.svg\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"admin-users\"\n title=\"Admin Users\"\n description=\"Manage Admin Users permissions.\"\n icon={<PermissionsIcon />}\n schema={{\n prefix: \"adminUsers\",\n fullAccess: true,\n entities: [\n {\n id: \"user\",\n title: \"Users\",\n permission: \"adminUsers.user\",\n scopes: [\"full\"]\n }\n ]\n }}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,cAAc,IAAIC,eAAe,QAAQ,yBAAyB;AAE3E,MAAM;EAAEC;AAAS,CAAC,GAAGH,WAAW;AAEhC,OAAO,MAAMI,kBAAkB,GAAGA,CAAA,KAAM;EACpC,oBACIL,KAAA,CAAAM,aAAA,CAACL,WAAW,qBACRD,KAAA,CAAAM,aAAA,CAACF,QAAQ,CAACG,WAAW;IACjBC,IAAI,EAAC,aAAa;IAClBC,KAAK,EAAC,aAAa;IACnBC,WAAW,EAAC,iCAAiC;IAC7CC,IAAI,eAAEX,KAAA,CAAAM,aAAA,CAACH,eAAe,MAAE,CAAE;IAC1BS,MAAM,EAAE;MACJC,MAAM,EAAE,YAAY;MACpBC,UAAU,EAAE,IAAI;MAChBC,QAAQ,EAAE,CACN;QACIC,EAAE,EAAE,MAAM;QACVP,KAAK,EAAE,OAAO;QACdQ,UAAU,EAAE,iBAAiB;QAC7BC,MAAM,EAAE,CAAC,MAAM;MACnB,CAAC;IAET;EAAE,CACL,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","AdminConfig","ReactComponent","PermissionsIcon","COGNITO_PERMISSIONS_SCHEMA","Security","SecurityPermission","createElement","Permissions","name","title","description","icon","schema"],"sources":["SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/group.svg\";\nimport { COGNITO_PERMISSIONS_SCHEMA } from \"~/admin/domain/permissionsSchema.js\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"admin-users\"\n title=\"Admin Users\"\n description=\"Manage Admin Users permissions.\"\n icon={<PermissionsIcon />}\n schema={COGNITO_PERMISSIONS_SCHEMA}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,cAAc,IAAIC,eAAe,QAAQ,yBAAyB;AAC3E,SAASC,0BAA0B;AAEnC,MAAM;EAAEC;AAAS,CAAC,GAAGJ,WAAW;AAEhC,OAAO,MAAMK,kBAAkB,GAAGA,CAAA,KAAM;EACpC,oBACIN,KAAA,CAAAO,aAAA,CAACN,WAAW,qBACRD,KAAA,CAAAO,aAAA,CAACF,QAAQ,CAACG,WAAW;IACjBC,IAAI,EAAC,aAAa;IAClBC,KAAK,EAAC,aAAa;IACnBC,WAAW,EAAC,iCAAiC;IAC7CC,IAAI,eAAEZ,KAAA,CAAAO,aAAA,CAACJ,eAAe,MAAE,CAAE;IAC1BU,MAAM,EAAET;EAA2B,CACtC,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ export declare const COGNITO_PERMISSIONS_SCHEMA: {
2
+ readonly prefix: "adminUsers";
3
+ readonly fullAccess: true;
4
+ readonly entities: [{
5
+ readonly id: "user";
6
+ readonly title: "Users";
7
+ readonly permission: "adminUsers.user";
8
+ readonly scopes: ["full"];
9
+ }];
10
+ };
@@ -0,0 +1,13 @@
1
+ import { createPermissionSchema } from "@webiny/app-admin";
2
+ export const COGNITO_PERMISSIONS_SCHEMA = createPermissionSchema({
3
+ prefix: "adminUsers",
4
+ fullAccess: true,
5
+ entities: [{
6
+ id: "user",
7
+ title: "Users",
8
+ permission: "adminUsers.user",
9
+ scopes: ["full"]
10
+ }]
11
+ });
12
+
13
+ //# sourceMappingURL=permissionsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionSchema","COGNITO_PERMISSIONS_SCHEMA","prefix","fullAccess","entities","id","title","permission","scopes"],"sources":["permissionsSchema.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const COGNITO_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"adminUsers\",\n fullAccess: true,\n entities: [\n {\n id: \"user\",\n title: \"Users\",\n permission: \"adminUsers.user\",\n scopes: [\"full\"]\n }\n ]\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,mBAAmB;AAE1D,OAAO,MAAMC,0BAA0B,GAAGD,sBAAsB,CAAC;EAC7DE,MAAM,EAAE,YAAY;EACpBC,UAAU,EAAE,IAAI;EAChBC,QAAQ,EAAE,CACN;IACIC,EAAE,EAAE,MAAM;IACVC,KAAK,EAAE,OAAO;IACdC,UAAU,EAAE,iBAAiB;IAC7BC,MAAM,EAAE,CAAC,MAAM;EACnB,CAAC;AAET,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ import type { Permissions } from "@webiny/app-admin/exports/admin/security.js";
2
+ import { COGNITO_PERMISSIONS_SCHEMA } from "../../../admin/domain/permissionsSchema.js";
3
+ export declare const CognitoPermissions: import("@webiny/di").Abstraction<{
4
+ canAccess: (entityId: "user") => boolean;
5
+ canAction: (action: string, entityId: "user") => boolean;
6
+ } & {
7
+ canRead: (entityId: string) => boolean;
8
+ canCreate: (entityId: string) => boolean;
9
+ canEdit: (entityId: string, item?: import("@webiny/app-admin/permissions").OwnableItem) => boolean;
10
+ canDelete: (entityId: string, item?: import("@webiny/app-admin/permissions").OwnableItem) => boolean;
11
+ } & {
12
+ canPublish: (entityId: string) => boolean;
13
+ canUnpublish: (entityId: string) => boolean;
14
+ }>;
15
+ export declare namespace CognitoPermissions {
16
+ type Interface = Permissions<typeof COGNITO_PERMISSIONS_SCHEMA>;
17
+ }
@@ -0,0 +1,5 @@
1
+ import { createPermissionsAbstraction } from "@webiny/app-admin/exports/admin/security.js";
2
+ import { COGNITO_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
3
+ export const CognitoPermissions = createPermissionsAbstraction(COGNITO_PERMISSIONS_SCHEMA);
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionsAbstraction","COGNITO_PERMISSIONS_SCHEMA","CognitoPermissions"],"sources":["abstractions.ts"],"sourcesContent":["import { createPermissionsAbstraction } from \"@webiny/app-admin/exports/admin/security.js\";\nimport type { Permissions } from \"@webiny/app-admin/exports/admin/security.js\";\nimport { COGNITO_PERMISSIONS_SCHEMA } from \"~/admin/domain/permissionsSchema.js\";\n\nexport const CognitoPermissions = createPermissionsAbstraction(COGNITO_PERMISSIONS_SCHEMA);\n\nexport namespace CognitoPermissions {\n export type Interface = Permissions<typeof COGNITO_PERMISSIONS_SCHEMA>;\n}\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,6CAA6C;AAE1F,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,kBAAkB,GAAGF,4BAA4B,CAACC,0BAA0B,CAAC","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ export declare const CognitoPermissionsFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ permissions: {
3
+ canAccess: (entityId: "user") => boolean;
4
+ canAction: (action: string, entityId: "user") => boolean;
5
+ } & {
6
+ canRead: (entityId: string) => boolean;
7
+ canCreate: (entityId: string) => boolean;
8
+ canEdit: (entityId: string, item?: import("@webiny/app-admin/index.js").OwnableItem) => boolean;
9
+ canDelete: (entityId: string, item?: import("@webiny/app-admin/index.js").OwnableItem) => boolean;
10
+ } & {
11
+ canPublish: (entityId: string) => boolean;
12
+ canUnpublish: (entityId: string) => boolean;
13
+ };
14
+ }, []>;
@@ -0,0 +1,6 @@
1
+ import { createPermissionsFeature } from "@webiny/app-admin/exports/admin/security.js";
2
+ import { CognitoPermissions } from "./abstractions.js";
3
+ import { COGNITO_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
4
+ export const CognitoPermissionsFeature = createPermissionsFeature(COGNITO_PERMISSIONS_SCHEMA, CognitoPermissions);
5
+
6
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionsFeature","CognitoPermissions","COGNITO_PERMISSIONS_SCHEMA","CognitoPermissionsFeature"],"sources":["feature.ts"],"sourcesContent":["import { createPermissionsFeature } from \"@webiny/app-admin/exports/admin/security.js\";\nimport { CognitoPermissions } from \"./abstractions.js\";\nimport { COGNITO_PERMISSIONS_SCHEMA } from \"~/admin/domain/permissionsSchema.js\";\n\nexport const CognitoPermissionsFeature = createPermissionsFeature(\n COGNITO_PERMISSIONS_SCHEMA,\n CognitoPermissions\n);\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,6CAA6C;AACtF,SAASC,kBAAkB;AAC3B,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,yBAAyB,GAAGH,wBAAwB,CAC7DE,0BAA0B,EAC1BD,kBACJ,CAAC","ignoreList":[]}
@@ -10,7 +10,6 @@ declare class CognitoPresenterImpl implements CognitoPresenterAbstraction.Interf
10
10
  private checkingSession;
11
11
  private isLoggingIn;
12
12
  private formLoading;
13
- private cognitoUser;
14
13
  private initialized;
15
14
  constructor(identity: IdentityContext.Interface, logInUseCase: LogInUseCase.Interface);
16
15
  get vm(): {
@@ -1,5 +1,6 @@
1
1
  import { makeAutoObservable, runInAction } from "mobx";
2
- import { Auth } from "@aws-amplify/auth";
2
+ import { Amplify } from "aws-amplify";
3
+ import { signIn, signOut, confirmSignIn, resetPassword, confirmResetPassword, fetchAuthSession } from "aws-amplify/auth";
3
4
  import { CognitoPresenter as CognitoPresenterAbstraction } from "./abstractions.js";
4
5
  import { LogInUseCase } from "@webiny/app-admin/features/security/LogIn/index.js";
5
6
  import { IdentityContext } from "@webiny/app-admin/features/security/IdentityContext/index.js";
@@ -10,7 +11,6 @@ class CognitoPresenterImpl {
10
11
  checkingSession = false;
11
12
  isLoggingIn = false;
12
13
  formLoading = false;
13
- cognitoUser = null;
14
14
  initialized = false;
15
15
  constructor(identity, logInUseCase) {
16
16
  this.identity = identity;
@@ -51,12 +51,14 @@ class CognitoPresenterImpl {
51
51
  if (this.initialized) {
52
52
  return;
53
53
  }
54
- const authConfig = {
55
- region: params.region,
56
- userPoolId: params.userPoolId,
57
- userPoolWebClientId: params.clientId
58
- };
59
- Auth.configure(authConfig);
54
+ Amplify.configure({
55
+ Auth: {
56
+ Cognito: {
57
+ userPoolId: params.userPoolId,
58
+ userPoolClientId: params.clientId
59
+ }
60
+ }
61
+ });
60
62
  this.initialized = true;
61
63
  await this.checkUrl();
62
64
  }
@@ -69,13 +71,18 @@ class CognitoPresenterImpl {
69
71
  });
70
72
  const usernameOrPassword = ["UserNotFoundException", "NotAuthorizedException"];
71
73
  try {
72
- const user = await Auth.signIn(username, password);
73
- if (user.challengeName === "NEW_PASSWORD_REQUIRED") {
74
+ const result = await signIn({
75
+ username,
76
+ password
77
+ });
78
+ const {
79
+ nextStep
80
+ } = result;
81
+ if (nextStep.signInStep === "CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED") {
74
82
  runInAction(() => {
75
- this.cognitoUser = user;
76
83
  this.authState = "requireNewPassword";
77
84
  this.authData = {
78
- requiredAttributes: user.challengeParam.requiredAttributes || []
85
+ requiredAttributes: nextStep.missingAttributes || []
79
86
  };
80
87
  this.formLoading = false;
81
88
  });
@@ -87,7 +94,7 @@ class CognitoPresenterImpl {
87
94
  }
88
95
  } catch (error) {
89
96
  let message = error.message;
90
- if (usernameOrPassword.includes(error.code)) {
97
+ if (usernameOrPassword.includes(error.name)) {
91
98
  message = "Incorrect username or password.";
92
99
  }
93
100
  runInAction(() => {
@@ -106,7 +113,12 @@ class CognitoPresenterImpl {
106
113
  this.message = null;
107
114
  });
108
115
  try {
109
- await Auth.completeNewPassword(this.cognitoUser, password, requiredAttributes);
116
+ await confirmSignIn({
117
+ challengeResponse: password,
118
+ options: {
119
+ userAttributes: requiredAttributes
120
+ }
121
+ });
110
122
  await this.handleSignedIn();
111
123
  } catch (error) {
112
124
  runInAction(() => {
@@ -128,7 +140,9 @@ class CognitoPresenterImpl {
128
140
  this.message = null;
129
141
  });
130
142
  try {
131
- await Auth.forgotPassword(username);
143
+ await resetPassword({
144
+ username
145
+ });
132
146
  } catch {
133
147
  // We ignore errors and pretend that everything went fine.
134
148
  // Showing an error would give a potential attacker information about which usernames exist (or not).
@@ -167,7 +181,11 @@ class CognitoPresenterImpl {
167
181
  this.message = null;
168
182
  });
169
183
  try {
170
- await Auth.forgotPasswordSubmit(username, code, password);
184
+ await confirmResetPassword({
185
+ username,
186
+ confirmationCode: code,
187
+ newPassword: password
188
+ });
171
189
  runInAction(() => {
172
190
  this.authState = "signIn";
173
191
  this.message = {
@@ -212,11 +230,15 @@ class CognitoPresenterImpl {
212
230
  try {
213
231
  await this.logInUseCase.execute({
214
232
  idTokenProvider: async () => {
215
- const currentSession = await Auth.currentSession();
216
- return currentSession.getIdToken().getJwtToken();
233
+ const session = await fetchAuthSession();
234
+ const idToken = session.tokens?.idToken;
235
+ if (!idToken) {
236
+ throw new Error("No ID token available.");
237
+ }
238
+ return idToken.toString();
217
239
  },
218
240
  logoutCallback: () => {
219
- Auth.signOut();
241
+ signOut();
220
242
  runInAction(() => {
221
243
  this.authState = "signIn";
222
244
  this.authData = null;
@@ -255,8 +277,8 @@ class CognitoPresenterImpl {
255
277
  this.checkingSession = true;
256
278
  });
257
279
  try {
258
- const cognitoUser = await Auth.currentSession();
259
- if (cognitoUser) {
280
+ const session = await fetchAuthSession();
281
+ if (session.tokens) {
260
282
  // We don't need to `await`, we simply start a separate "branch" of execution.
261
283
  this.handleSignedIn();
262
284
  }
@@ -1 +1 @@
1
- {"version":3,"names":["makeAutoObservable","runInAction","Auth","CognitoPresenter","CognitoPresenterAbstraction","LogInUseCase","IdentityContext","CognitoPresenterImpl","authState","authData","message","checkingSession","isLoggingIn","formLoading","cognitoUser","initialized","constructor","identity","logInUseCase","vm","getIdentity","isAuthenticated","signIn","isLoading","requestPasswordResetCode","passwordResetCodeSent","setNewPassword","requireNewPassword","requiredAttributes","init","params","authConfig","region","userPoolId","userPoolWebClientId","clientId","configure","checkUrl","username","password","usernameOrPassword","user","challengeName","challengeParam","handleSignedIn","error","includes","code","title","text","type","confirmNewPassword","completeNewPassword","requestPasswordReset","forgotPassword","resendPasswordResetCode","confirmPasswordReset","forgotPasswordSubmit","showSignIn","showRequestPasswordResetCode","showSetNewPassword","execute","idTokenProvider","currentSession","getIdToken","getJwtToken","logoutCallback","signOut","console","query","URLSearchParams","window","location","search","queryData","forEach","value","key","state","checkSession","createImplementation","implementation","dependencies"],"sources":["CognitoPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport { Auth } from \"@aws-amplify/auth\";\nimport { AuthOptions } from \"@aws-amplify/auth/lib-esm/types/index.js\";\nimport {\n CognitoPresenter as CognitoPresenterAbstraction,\n AuthState,\n AuthData,\n AuthMessage,\n ICognitoInitParams\n} from \"./abstractions.js\";\nimport { LogInUseCase } from \"@webiny/app-admin/features/security/LogIn/index.js\";\nimport { IdentityContext } from \"@webiny/app-admin/features/security/IdentityContext/index.js\";\n\nclass CognitoPresenterImpl implements CognitoPresenterAbstraction.Interface {\n private authState: AuthState = \"signIn\";\n private authData: AuthData | null = null;\n private message: AuthMessage | null = null;\n private checkingSession = false;\n private isLoggingIn = false;\n private formLoading = false;\n private cognitoUser: any = null;\n private initialized = false;\n\n constructor(\n private identity: IdentityContext.Interface,\n private logInUseCase: LogInUseCase.Interface\n ) {\n makeAutoObservable(this);\n }\n\n get vm() {\n const identity = this.identity.getIdentity();\n\n return {\n authState: this.authState,\n checkingSession: this.checkingSession,\n isLoggingIn: this.isLoggingIn,\n isAuthenticated: identity.isAuthenticated,\n\n // View-specific VMs\n signIn: {\n isLoading: this.formLoading,\n message: this.message\n },\n requestPasswordResetCode: {\n isLoading: this.formLoading,\n message: this.message\n },\n passwordResetCodeSent: {\n isLoading: this.formLoading,\n message: this.message\n },\n setNewPassword: {\n isLoading: this.formLoading,\n message: this.message\n },\n requireNewPassword: {\n isLoading: this.formLoading,\n requiredAttributes: (this.authData && this.authData.requiredAttributes) || []\n }\n };\n }\n\n async init(params: ICognitoInitParams): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n const authConfig: AuthOptions = {\n region: params.region,\n userPoolId: params.userPoolId,\n userPoolWebClientId: params.clientId\n };\n\n Auth.configure(authConfig);\n this.initialized = true;\n\n await this.checkUrl();\n }\n\n // Public API\n async signIn(username: string, password: string): Promise<void> {\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n const usernameOrPassword = [\"UserNotFoundException\", \"NotAuthorizedException\"];\n\n try {\n const user = await Auth.signIn(username, password);\n\n if (user.challengeName === \"NEW_PASSWORD_REQUIRED\") {\n runInAction(() => {\n this.cognitoUser = user;\n this.authState = \"requireNewPassword\";\n this.authData = {\n requiredAttributes: user.challengeParam.requiredAttributes || []\n };\n this.formLoading = false;\n });\n } else {\n await this.handleSignedIn();\n runInAction(() => {\n this.formLoading = false;\n });\n }\n } catch (error) {\n let message = error.message;\n\n if (usernameOrPassword.includes(error.code)) {\n message = \"Incorrect username or password.\";\n }\n runInAction(() => {\n this.message = {\n title: \"Login Failed\",\n text: message,\n type: \"danger\"\n };\n this.formLoading = false;\n });\n }\n }\n\n async confirmNewPassword(password: string, requiredAttributes: any): Promise<void> {\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n try {\n await Auth.completeNewPassword(this.cognitoUser, password, requiredAttributes);\n await this.handleSignedIn();\n } catch (error) {\n runInAction(() => {\n this.message = {\n title: \"Error\",\n text: error.message,\n type: \"danger\"\n };\n });\n } finally {\n runInAction(() => {\n this.formLoading = false;\n });\n }\n }\n\n async requestPasswordReset(username: string): Promise<void> {\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n try {\n await Auth.forgotPassword(username);\n } catch {\n // We ignore errors and pretend that everything went fine.\n // Showing an error would give a potential attacker information about which usernames exist (or not).\n // This way it's more difficult to exploit the process.\n } finally {\n runInAction(() => {\n this.authState = \"passwordResetCodeSent\";\n this.authData = { username };\n this.formLoading = false;\n });\n }\n }\n\n async resendPasswordResetCode(): Promise<void> {\n const username = this.authData?.username;\n if (this.authState !== \"passwordResetCodeSent\" || !username) {\n return;\n }\n\n await this.requestPasswordReset(username!);\n runInAction(() => {\n this.message = {\n title: \"Code Resent\",\n text: \"Password reset code has been resent to your email address. Please check your inbox!\",\n type: \"success\"\n };\n });\n }\n\n async confirmPasswordReset(code: string, password: string): Promise<void> {\n const username = this.authData?.username;\n if (!username) {\n return;\n }\n\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n try {\n await Auth.forgotPasswordSubmit(username, code, password);\n runInAction(() => {\n this.authState = \"signIn\";\n this.message = {\n title: \"Password Reset\",\n text: \"You can now sign in with your new password\",\n type: \"success\"\n };\n });\n } catch (error) {\n runInAction(() => {\n this.message = {\n title: \"Error\",\n text: error.message,\n type: \"danger\"\n };\n });\n } finally {\n runInAction(() => {\n this.formLoading = false;\n });\n }\n }\n\n showSignIn(): void {\n this.authState = \"signIn\";\n this.authData = null;\n this.message = null;\n }\n\n showRequestPasswordResetCode(): void {\n this.authState = \"requestPasswordResetCode\";\n this.message = null;\n }\n\n showSetNewPassword(): void {\n this.authState = \"setNewPassword\";\n this.message = null;\n }\n\n // Private/internal methods\n private async handleSignedIn(): Promise<void> {\n runInAction(() => {\n this.isLoggingIn = true;\n });\n\n try {\n await this.logInUseCase.execute({\n idTokenProvider: async () => {\n const currentSession = await Auth.currentSession();\n return currentSession.getIdToken().getJwtToken();\n },\n logoutCallback: () => {\n Auth.signOut();\n runInAction(() => {\n this.authState = \"signIn\";\n this.authData = null;\n });\n }\n });\n\n runInAction(() => {\n this.authState = \"signedIn\";\n });\n } catch (error) {\n console.error(\"Error during sign in:\", error);\n runInAction(() => {\n this.authState = \"signIn\";\n });\n } finally {\n runInAction(() => {\n this.isLoggingIn = false;\n });\n }\n }\n\n private async checkUrl(): Promise<void> {\n const query = new URLSearchParams(window.location.search);\n const queryData: Record<string, string> = {};\n query.forEach((value, key) => (queryData[key] = value));\n const { state } = queryData;\n\n if (state) {\n // Handle state from URL if needed\n return;\n }\n\n return this.checkSession();\n }\n\n private async checkSession(): Promise<void> {\n runInAction(() => {\n this.checkingSession = true;\n });\n\n try {\n const cognitoUser = await Auth.currentSession();\n if (cognitoUser) {\n // We don't need to `await`, we simply start a separate \"branch\" of execution.\n this.handleSignedIn();\n }\n } catch {\n // Not authenticated, stay on signIn\n } finally {\n runInAction(() => {\n this.checkingSession = false;\n });\n }\n }\n}\n\nexport const CognitoPresenter = CognitoPresenterAbstraction.createImplementation({\n implementation: CognitoPresenterImpl,\n dependencies: [IdentityContext, LogInUseCase]\n});\n"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,WAAW,QAAQ,MAAM;AACtD,SAASC,IAAI,QAAQ,mBAAmB;AAExC,SACIC,gBAAgB,IAAIC,2BAA2B;AAMnD,SAASC,YAAY,QAAQ,oDAAoD;AACjF,SAASC,eAAe,QAAQ,8DAA8D;AAE9F,MAAMC,oBAAoB,CAAkD;EAChEC,SAAS,GAAc,QAAQ;EAC/BC,QAAQ,GAAoB,IAAI;EAChCC,OAAO,GAAuB,IAAI;EAClCC,eAAe,GAAG,KAAK;EACvBC,WAAW,GAAG,KAAK;EACnBC,WAAW,GAAG,KAAK;EACnBC,WAAW,GAAQ,IAAI;EACvBC,WAAW,GAAG,KAAK;EAE3BC,WAAWA,CACCC,QAAmC,EACnCC,YAAoC,EAC9C;IAAA,KAFUD,QAAmC,GAAnCA,QAAmC;IAAA,KACnCC,YAAoC,GAApCA,YAAoC;IAE5ClB,kBAAkB,CAAC,IAAI,CAAC;EAC5B;EAEA,IAAImB,EAAEA,CAAA,EAAG;IACL,MAAMF,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACG,WAAW,CAAC,CAAC;IAE5C,OAAO;MACHZ,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBG,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCC,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BS,eAAe,EAAEJ,QAAQ,CAACI,eAAe;MAEzC;MACAC,MAAM,EAAE;QACJC,SAAS,EAAE,IAAI,CAACV,WAAW;QAC3BH,OAAO,EAAE,IAAI,CAACA;MAClB,CAAC;MACDc,wBAAwB,EAAE;QACtBD,SAAS,EAAE,IAAI,CAACV,WAAW;QAC3BH,OAAO,EAAE,IAAI,CAACA;MAClB,CAAC;MACDe,qBAAqB,EAAE;QACnBF,SAAS,EAAE,IAAI,CAACV,WAAW;QAC3BH,OAAO,EAAE,IAAI,CAACA;MAClB,CAAC;MACDgB,cAAc,EAAE;QACZH,SAAS,EAAE,IAAI,CAACV,WAAW;QAC3BH,OAAO,EAAE,IAAI,CAACA;MAClB,CAAC;MACDiB,kBAAkB,EAAE;QAChBJ,SAAS,EAAE,IAAI,CAACV,WAAW;QAC3Be,kBAAkB,EAAG,IAAI,CAACnB,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAACmB,kBAAkB,IAAK;MAC/E;IACJ,CAAC;EACL;EAEA,MAAMC,IAAIA,CAACC,MAA0B,EAAiB;IAClD,IAAI,IAAI,CAACf,WAAW,EAAE;MAClB;IACJ;IAEA,MAAMgB,UAAuB,GAAG;MAC5BC,MAAM,EAAEF,MAAM,CAACE,MAAM;MACrBC,UAAU,EAAEH,MAAM,CAACG,UAAU;MAC7BC,mBAAmB,EAAEJ,MAAM,CAACK;IAChC,CAAC;IAEDjC,IAAI,CAACkC,SAAS,CAACL,UAAU,CAAC;IAC1B,IAAI,CAAChB,WAAW,GAAG,IAAI;IAEvB,MAAM,IAAI,CAACsB,QAAQ,CAAC,CAAC;EACzB;;EAEA;EACA,MAAMf,MAAMA,CAACgB,QAAgB,EAAEC,QAAgB,EAAiB;IAC5DtC,WAAW,CAAC,MAAM;MACd,IAAI,CAACY,WAAW,GAAG,IAAI;MACvB,IAAI,CAACH,OAAO,GAAG,IAAI;IACvB,CAAC,CAAC;IAEF,MAAM8B,kBAAkB,GAAG,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;IAE9E,IAAI;MACA,MAAMC,IAAI,GAAG,MAAMvC,IAAI,CAACoB,MAAM,CAACgB,QAAQ,EAAEC,QAAQ,CAAC;MAElD,IAAIE,IAAI,CAACC,aAAa,KAAK,uBAAuB,EAAE;QAChDzC,WAAW,CAAC,MAAM;UACd,IAAI,CAACa,WAAW,GAAG2B,IAAI;UACvB,IAAI,CAACjC,SAAS,GAAG,oBAAoB;UACrC,IAAI,CAACC,QAAQ,GAAG;YACZmB,kBAAkB,EAAEa,IAAI,CAACE,cAAc,CAACf,kBAAkB,IAAI;UAClE,CAAC;UACD,IAAI,CAACf,WAAW,GAAG,KAAK;QAC5B,CAAC,CAAC;MACN,CAAC,MAAM;QACH,MAAM,IAAI,CAAC+B,cAAc,CAAC,CAAC;QAC3B3C,WAAW,CAAC,MAAM;UACd,IAAI,CAACY,WAAW,GAAG,KAAK;QAC5B,CAAC,CAAC;MACN;IACJ,CAAC,CAAC,OAAOgC,KAAK,EAAE;MACZ,IAAInC,OAAO,GAAGmC,KAAK,CAACnC,OAAO;MAE3B,IAAI8B,kBAAkB,CAACM,QAAQ,CAACD,KAAK,CAACE,IAAI,CAAC,EAAE;QACzCrC,OAAO,GAAG,iCAAiC;MAC/C;MACAT,WAAW,CAAC,MAAM;QACd,IAAI,CAACS,OAAO,GAAG;UACXsC,KAAK,EAAE,cAAc;UACrBC,IAAI,EAAEvC,OAAO;UACbwC,IAAI,EAAE;QACV,CAAC;QACD,IAAI,CAACrC,WAAW,GAAG,KAAK;MAC5B,CAAC,CAAC;IACN;EACJ;EAEA,MAAMsC,kBAAkBA,CAACZ,QAAgB,EAAEX,kBAAuB,EAAiB;IAC/E3B,WAAW,CAAC,MAAM;MACd,IAAI,CAACY,WAAW,GAAG,IAAI;MACvB,IAAI,CAACH,OAAO,GAAG,IAAI;IACvB,CAAC,CAAC;IAEF,IAAI;MACA,MAAMR,IAAI,CAACkD,mBAAmB,CAAC,IAAI,CAACtC,WAAW,EAAEyB,QAAQ,EAAEX,kBAAkB,CAAC;MAC9E,MAAM,IAAI,CAACgB,cAAc,CAAC,CAAC;IAC/B,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZ5C,WAAW,CAAC,MAAM;QACd,IAAI,CAACS,OAAO,GAAG;UACXsC,KAAK,EAAE,OAAO;UACdC,IAAI,EAAEJ,KAAK,CAACnC,OAAO;UACnBwC,IAAI,EAAE;QACV,CAAC;MACL,CAAC,CAAC;IACN,CAAC,SAAS;MACNjD,WAAW,CAAC,MAAM;QACd,IAAI,CAACY,WAAW,GAAG,KAAK;MAC5B,CAAC,CAAC;IACN;EACJ;EAEA,MAAMwC,oBAAoBA,CAACf,QAAgB,EAAiB;IACxDrC,WAAW,CAAC,MAAM;MACd,IAAI,CAACY,WAAW,GAAG,IAAI;MACvB,IAAI,CAACH,OAAO,GAAG,IAAI;IACvB,CAAC,CAAC;IAEF,IAAI;MACA,MAAMR,IAAI,CAACoD,cAAc,CAAChB,QAAQ,CAAC;IACvC,CAAC,CAAC,MAAM;MACJ;MACA;MACA;IAAA,CACH,SAAS;MACNrC,WAAW,CAAC,MAAM;QACd,IAAI,CAACO,SAAS,GAAG,uBAAuB;QACxC,IAAI,CAACC,QAAQ,GAAG;UAAE6B;QAAS,CAAC;QAC5B,IAAI,CAACzB,WAAW,GAAG,KAAK;MAC5B,CAAC,CAAC;IACN;EACJ;EAEA,MAAM0C,uBAAuBA,CAAA,EAAkB;IAC3C,MAAMjB,QAAQ,GAAG,IAAI,CAAC7B,QAAQ,EAAE6B,QAAQ;IACxC,IAAI,IAAI,CAAC9B,SAAS,KAAK,uBAAuB,IAAI,CAAC8B,QAAQ,EAAE;MACzD;IACJ;IAEA,MAAM,IAAI,CAACe,oBAAoB,CAACf,QAAS,CAAC;IAC1CrC,WAAW,CAAC,MAAM;MACd,IAAI,CAACS,OAAO,GAAG;QACXsC,KAAK,EAAE,aAAa;QACpBC,IAAI,EAAE,qFAAqF;QAC3FC,IAAI,EAAE;MACV,CAAC;IACL,CAAC,CAAC;EACN;EAEA,MAAMM,oBAAoBA,CAACT,IAAY,EAAER,QAAgB,EAAiB;IACtE,MAAMD,QAAQ,GAAG,IAAI,CAAC7B,QAAQ,EAAE6B,QAAQ;IACxC,IAAI,CAACA,QAAQ,EAAE;MACX;IACJ;IAEArC,WAAW,CAAC,MAAM;MACd,IAAI,CAACY,WAAW,GAAG,IAAI;MACvB,IAAI,CAACH,OAAO,GAAG,IAAI;IACvB,CAAC,CAAC;IAEF,IAAI;MACA,MAAMR,IAAI,CAACuD,oBAAoB,CAACnB,QAAQ,EAAES,IAAI,EAAER,QAAQ,CAAC;MACzDtC,WAAW,CAAC,MAAM;QACd,IAAI,CAACO,SAAS,GAAG,QAAQ;QACzB,IAAI,CAACE,OAAO,GAAG;UACXsC,KAAK,EAAE,gBAAgB;UACvBC,IAAI,EAAE,4CAA4C;UAClDC,IAAI,EAAE;QACV,CAAC;MACL,CAAC,CAAC;IACN,CAAC,CAAC,OAAOL,KAAK,EAAE;MACZ5C,WAAW,CAAC,MAAM;QACd,IAAI,CAACS,OAAO,GAAG;UACXsC,KAAK,EAAE,OAAO;UACdC,IAAI,EAAEJ,KAAK,CAACnC,OAAO;UACnBwC,IAAI,EAAE;QACV,CAAC;MACL,CAAC,CAAC;IACN,CAAC,SAAS;MACNjD,WAAW,CAAC,MAAM;QACd,IAAI,CAACY,WAAW,GAAG,KAAK;MAC5B,CAAC,CAAC;IACN;EACJ;EAEA6C,UAAUA,CAAA,EAAS;IACf,IAAI,CAAClD,SAAS,GAAG,QAAQ;IACzB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,OAAO,GAAG,IAAI;EACvB;EAEAiD,4BAA4BA,CAAA,EAAS;IACjC,IAAI,CAACnD,SAAS,GAAG,0BAA0B;IAC3C,IAAI,CAACE,OAAO,GAAG,IAAI;EACvB;EAEAkD,kBAAkBA,CAAA,EAAS;IACvB,IAAI,CAACpD,SAAS,GAAG,gBAAgB;IACjC,IAAI,CAACE,OAAO,GAAG,IAAI;EACvB;;EAEA;EACA,MAAckC,cAAcA,CAAA,EAAkB;IAC1C3C,WAAW,CAAC,MAAM;MACd,IAAI,CAACW,WAAW,GAAG,IAAI;IAC3B,CAAC,CAAC;IAEF,IAAI;MACA,MAAM,IAAI,CAACM,YAAY,CAAC2C,OAAO,CAAC;QAC5BC,eAAe,EAAE,MAAAA,CAAA,KAAY;UACzB,MAAMC,cAAc,GAAG,MAAM7D,IAAI,CAAC6D,cAAc,CAAC,CAAC;UAClD,OAAOA,cAAc,CAACC,UAAU,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;QACpD,CAAC;QACDC,cAAc,EAAEA,CAAA,KAAM;UAClBhE,IAAI,CAACiE,OAAO,CAAC,CAAC;UACdlE,WAAW,CAAC,MAAM;YACd,IAAI,CAACO,SAAS,GAAG,QAAQ;YACzB,IAAI,CAACC,QAAQ,GAAG,IAAI;UACxB,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;MAEFR,WAAW,CAAC,MAAM;QACd,IAAI,CAACO,SAAS,GAAG,UAAU;MAC/B,CAAC,CAAC;IACN,CAAC,CAAC,OAAOqC,KAAK,EAAE;MACZuB,OAAO,CAACvB,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;MAC7C5C,WAAW,CAAC,MAAM;QACd,IAAI,CAACO,SAAS,GAAG,QAAQ;MAC7B,CAAC,CAAC;IACN,CAAC,SAAS;MACNP,WAAW,CAAC,MAAM;QACd,IAAI,CAACW,WAAW,GAAG,KAAK;MAC5B,CAAC,CAAC;IACN;EACJ;EAEA,MAAcyB,QAAQA,CAAA,EAAkB;IACpC,MAAMgC,KAAK,GAAG,IAAIC,eAAe,CAACC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC;IACzD,MAAMC,SAAiC,GAAG,CAAC,CAAC;IAC5CL,KAAK,CAACM,OAAO,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAMH,SAAS,CAACG,GAAG,CAAC,GAAGD,KAAM,CAAC;IACvD,MAAM;MAAEE;IAAM,CAAC,GAAGJ,SAAS;IAE3B,IAAII,KAAK,EAAE;MACP;MACA;IACJ;IAEA,OAAO,IAAI,CAACC,YAAY,CAAC,CAAC;EAC9B;EAEA,MAAcA,YAAYA,CAAA,EAAkB;IACxC9E,WAAW,CAAC,MAAM;MACd,IAAI,CAACU,eAAe,GAAG,IAAI;IAC/B,CAAC,CAAC;IAEF,IAAI;MACA,MAAMG,WAAW,GAAG,MAAMZ,IAAI,CAAC6D,cAAc,CAAC,CAAC;MAC/C,IAAIjD,WAAW,EAAE;QACb;QACA,IAAI,CAAC8B,cAAc,CAAC,CAAC;MACzB;IACJ,CAAC,CAAC,MAAM;MACJ;IAAA,CACH,SAAS;MACN3C,WAAW,CAAC,MAAM;QACd,IAAI,CAACU,eAAe,GAAG,KAAK;MAChC,CAAC,CAAC;IACN;EACJ;AACJ;AAEA,OAAO,MAAMR,gBAAgB,GAAGC,2BAA2B,CAAC4E,oBAAoB,CAAC;EAC7EC,cAAc,EAAE1E,oBAAoB;EACpC2E,YAAY,EAAE,CAAC5E,eAAe,EAAED,YAAY;AAChD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["makeAutoObservable","runInAction","Amplify","signIn","signOut","confirmSignIn","resetPassword","confirmResetPassword","fetchAuthSession","CognitoPresenter","CognitoPresenterAbstraction","LogInUseCase","IdentityContext","CognitoPresenterImpl","authState","authData","message","checkingSession","isLoggingIn","formLoading","initialized","constructor","identity","logInUseCase","vm","getIdentity","isAuthenticated","isLoading","requestPasswordResetCode","passwordResetCodeSent","setNewPassword","requireNewPassword","requiredAttributes","init","params","configure","Auth","Cognito","userPoolId","userPoolClientId","clientId","checkUrl","username","password","usernameOrPassword","result","nextStep","signInStep","missingAttributes","handleSignedIn","error","includes","name","title","text","type","confirmNewPassword","challengeResponse","options","userAttributes","requestPasswordReset","resendPasswordResetCode","confirmPasswordReset","code","confirmationCode","newPassword","showSignIn","showRequestPasswordResetCode","showSetNewPassword","execute","idTokenProvider","session","idToken","tokens","Error","toString","logoutCallback","console","query","URLSearchParams","window","location","search","queryData","forEach","value","key","state","checkSession","createImplementation","implementation","dependencies"],"sources":["CognitoPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport { Amplify } from \"aws-amplify\";\nimport {\n signIn,\n signOut,\n confirmSignIn,\n resetPassword,\n confirmResetPassword,\n fetchAuthSession\n} from \"aws-amplify/auth\";\nimport {\n CognitoPresenter as CognitoPresenterAbstraction,\n AuthState,\n AuthData,\n AuthMessage,\n ICognitoInitParams\n} from \"./abstractions.js\";\nimport { LogInUseCase } from \"@webiny/app-admin/features/security/LogIn/index.js\";\nimport { IdentityContext } from \"@webiny/app-admin/features/security/IdentityContext/index.js\";\n\nclass CognitoPresenterImpl implements CognitoPresenterAbstraction.Interface {\n private authState: AuthState = \"signIn\";\n private authData: AuthData | null = null;\n private message: AuthMessage | null = null;\n private checkingSession = false;\n private isLoggingIn = false;\n private formLoading = false;\n private initialized = false;\n\n constructor(\n private identity: IdentityContext.Interface,\n private logInUseCase: LogInUseCase.Interface\n ) {\n makeAutoObservable(this);\n }\n\n get vm() {\n const identity = this.identity.getIdentity();\n\n return {\n authState: this.authState,\n checkingSession: this.checkingSession,\n isLoggingIn: this.isLoggingIn,\n isAuthenticated: identity.isAuthenticated,\n\n // View-specific VMs\n signIn: {\n isLoading: this.formLoading,\n message: this.message\n },\n requestPasswordResetCode: {\n isLoading: this.formLoading,\n message: this.message\n },\n passwordResetCodeSent: {\n isLoading: this.formLoading,\n message: this.message\n },\n setNewPassword: {\n isLoading: this.formLoading,\n message: this.message\n },\n requireNewPassword: {\n isLoading: this.formLoading,\n requiredAttributes: (this.authData && this.authData.requiredAttributes) || []\n }\n };\n }\n\n async init(params: ICognitoInitParams): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n Amplify.configure({\n Auth: {\n Cognito: {\n userPoolId: params.userPoolId,\n userPoolClientId: params.clientId\n }\n }\n });\n this.initialized = true;\n\n await this.checkUrl();\n }\n\n // Public API\n async signIn(username: string, password: string): Promise<void> {\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n const usernameOrPassword = [\"UserNotFoundException\", \"NotAuthorizedException\"];\n\n try {\n const result = await signIn({ username, password });\n const { nextStep } = result;\n\n if (nextStep.signInStep === \"CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED\") {\n runInAction(() => {\n this.authState = \"requireNewPassword\";\n this.authData = {\n requiredAttributes: nextStep.missingAttributes || []\n };\n this.formLoading = false;\n });\n } else {\n await this.handleSignedIn();\n runInAction(() => {\n this.formLoading = false;\n });\n }\n } catch (error) {\n let message = error.message;\n\n if (usernameOrPassword.includes(error.name)) {\n message = \"Incorrect username or password.\";\n }\n runInAction(() => {\n this.message = {\n title: \"Login Failed\",\n text: message,\n type: \"danger\"\n };\n this.formLoading = false;\n });\n }\n }\n\n async confirmNewPassword(password: string, requiredAttributes: any): Promise<void> {\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n try {\n await confirmSignIn({\n challengeResponse: password,\n options: { userAttributes: requiredAttributes }\n });\n await this.handleSignedIn();\n } catch (error) {\n runInAction(() => {\n this.message = {\n title: \"Error\",\n text: error.message,\n type: \"danger\"\n };\n });\n } finally {\n runInAction(() => {\n this.formLoading = false;\n });\n }\n }\n\n async requestPasswordReset(username: string): Promise<void> {\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n try {\n await resetPassword({ username });\n } catch {\n // We ignore errors and pretend that everything went fine.\n // Showing an error would give a potential attacker information about which usernames exist (or not).\n // This way it's more difficult to exploit the process.\n } finally {\n runInAction(() => {\n this.authState = \"passwordResetCodeSent\";\n this.authData = { username };\n this.formLoading = false;\n });\n }\n }\n\n async resendPasswordResetCode(): Promise<void> {\n const username = this.authData?.username;\n if (this.authState !== \"passwordResetCodeSent\" || !username) {\n return;\n }\n\n await this.requestPasswordReset(username!);\n runInAction(() => {\n this.message = {\n title: \"Code Resent\",\n text: \"Password reset code has been resent to your email address. Please check your inbox!\",\n type: \"success\"\n };\n });\n }\n\n async confirmPasswordReset(code: string, password: string): Promise<void> {\n const username = this.authData?.username;\n if (!username) {\n return;\n }\n\n runInAction(() => {\n this.formLoading = true;\n this.message = null;\n });\n\n try {\n await confirmResetPassword({\n username,\n confirmationCode: code,\n newPassword: password\n });\n runInAction(() => {\n this.authState = \"signIn\";\n this.message = {\n title: \"Password Reset\",\n text: \"You can now sign in with your new password\",\n type: \"success\"\n };\n });\n } catch (error) {\n runInAction(() => {\n this.message = {\n title: \"Error\",\n text: error.message,\n type: \"danger\"\n };\n });\n } finally {\n runInAction(() => {\n this.formLoading = false;\n });\n }\n }\n\n showSignIn(): void {\n this.authState = \"signIn\";\n this.authData = null;\n this.message = null;\n }\n\n showRequestPasswordResetCode(): void {\n this.authState = \"requestPasswordResetCode\";\n this.message = null;\n }\n\n showSetNewPassword(): void {\n this.authState = \"setNewPassword\";\n this.message = null;\n }\n\n // Private/internal methods\n private async handleSignedIn(): Promise<void> {\n runInAction(() => {\n this.isLoggingIn = true;\n });\n\n try {\n await this.logInUseCase.execute({\n idTokenProvider: async () => {\n const session = await fetchAuthSession();\n const idToken = session.tokens?.idToken;\n if (!idToken) {\n throw new Error(\"No ID token available.\");\n }\n return idToken.toString();\n },\n logoutCallback: () => {\n signOut();\n runInAction(() => {\n this.authState = \"signIn\";\n this.authData = null;\n });\n }\n });\n\n runInAction(() => {\n this.authState = \"signedIn\";\n });\n } catch (error) {\n console.error(\"Error during sign in:\", error);\n runInAction(() => {\n this.authState = \"signIn\";\n });\n } finally {\n runInAction(() => {\n this.isLoggingIn = false;\n });\n }\n }\n\n private async checkUrl(): Promise<void> {\n const query = new URLSearchParams(window.location.search);\n const queryData: Record<string, string> = {};\n query.forEach((value, key) => (queryData[key] = value));\n const { state } = queryData;\n\n if (state) {\n // Handle state from URL if needed\n return;\n }\n\n return this.checkSession();\n }\n\n private async checkSession(): Promise<void> {\n runInAction(() => {\n this.checkingSession = true;\n });\n\n try {\n const session = await fetchAuthSession();\n if (session.tokens) {\n // We don't need to `await`, we simply start a separate \"branch\" of execution.\n this.handleSignedIn();\n }\n } catch {\n // Not authenticated, stay on signIn\n } finally {\n runInAction(() => {\n this.checkingSession = false;\n });\n }\n }\n}\n\nexport const CognitoPresenter = CognitoPresenterAbstraction.createImplementation({\n implementation: CognitoPresenterImpl,\n dependencies: [IdentityContext, LogInUseCase]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  import React from "react";
2
- import { Auth } from "@aws-amplify/auth";
2
+ import { signInWithRedirect } from "aws-amplify/auth";
3
3
  import { federatedIdentityProviders } from "../../../federatedIdentityProviders.js";
4
4
  import { FederatedProviders } from "./FederatedProviders.js";
5
+ const builtInProviders = new Set(["Amazon", "Apple", "Facebook", "Google"]);
5
6
  export const FederatedLogin = ({
6
7
  providers
7
8
  }) => {
@@ -10,15 +11,17 @@ export const FederatedLogin = ({
10
11
  component: Component
11
12
  }) => {
12
13
  const cognitoProviderName = federatedIdentityProviders[name] ?? name;
13
- const isCustomProvider = !(name in federatedIdentityProviders);
14
+ const isBuiltIn = builtInProviders.has(cognitoProviderName);
14
15
  const signIn = () => {
15
- if (isCustomProvider) {
16
- Auth.federatedSignIn({
17
- customProvider: cognitoProviderName
16
+ if (isBuiltIn) {
17
+ signInWithRedirect({
18
+ provider: cognitoProviderName
18
19
  });
19
20
  } else {
20
- Auth.federatedSignIn({
21
- provider: cognitoProviderName
21
+ signInWithRedirect({
22
+ provider: {
23
+ custom: cognitoProviderName
24
+ }
22
25
  });
23
26
  }
24
27
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","Auth","federatedIdentityProviders","FederatedProviders","FederatedLogin","providers","createElement","Container","map","name","component","Component","cognitoProviderName","isCustomProvider","signIn","federatedSignIn","customProvider","provider","key"],"sources":["FederatedLogin.tsx"],"sourcesContent":["import React from \"react\";\nimport { Auth } from \"@aws-amplify/auth\";\nimport type { CognitoHostedUIIdentityProvider } from \"@aws-amplify/auth/lib-esm/types/Auth.js\";\nimport type { FederatedIdentityProvider } from \"~/admin/federatedIdentityProviders.js\";\nimport { federatedIdentityProviders } from \"~/admin/federatedIdentityProviders.js\";\nimport { FederatedProviders } from \"./FederatedProviders.js\";\n\ninterface FederatedLoginProps {\n providers: FederatedIdentityProvider[];\n}\n\nexport const FederatedLogin = ({ providers }: FederatedLoginProps) => {\n return (\n <FederatedProviders.Container>\n {providers.map(({ name, component: Component }) => {\n const cognitoProviderName = federatedIdentityProviders[name] ?? name;\n const isCustomProvider = !(name in federatedIdentityProviders);\n\n const signIn = () => {\n if (isCustomProvider) {\n Auth.federatedSignIn({\n customProvider: cognitoProviderName\n });\n } else {\n Auth.federatedSignIn({\n provider: cognitoProviderName as CognitoHostedUIIdentityProvider\n });\n }\n };\n\n return <Component key={name} signIn={signIn} />;\n })}\n </FederatedProviders.Container>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,mBAAmB;AAGxC,SAASC,0BAA0B;AACnC,SAASC,kBAAkB;AAM3B,OAAO,MAAMC,cAAc,GAAGA,CAAC;EAAEC;AAA+B,CAAC,KAAK;EAClE,oBACIL,KAAA,CAAAM,aAAA,CAACH,kBAAkB,CAACI,SAAS,QACxBF,SAAS,CAACG,GAAG,CAAC,CAAC;IAAEC,IAAI;IAAEC,SAAS,EAAEC;EAAU,CAAC,KAAK;IAC/C,MAAMC,mBAAmB,GAAGV,0BAA0B,CAACO,IAAI,CAAC,IAAIA,IAAI;IACpE,MAAMI,gBAAgB,GAAG,EAAEJ,IAAI,IAAIP,0BAA0B,CAAC;IAE9D,MAAMY,MAAM,GAAGA,CAAA,KAAM;MACjB,IAAID,gBAAgB,EAAE;QAClBZ,IAAI,CAACc,eAAe,CAAC;UACjBC,cAAc,EAAEJ;QACpB,CAAC,CAAC;MACN,CAAC,MAAM;QACHX,IAAI,CAACc,eAAe,CAAC;UACjBE,QAAQ,EAAEL;QACd,CAAC,CAAC;MACN;IACJ,CAAC;IAED,oBAAOZ,KAAA,CAAAM,aAAA,CAACK,SAAS;MAACO,GAAG,EAAET,IAAK;MAACK,MAAM,EAAEA;IAAO,CAAE,CAAC;EACnD,CAAC,CACyB,CAAC;AAEvC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","signInWithRedirect","federatedIdentityProviders","FederatedProviders","builtInProviders","Set","FederatedLogin","providers","createElement","Container","map","name","component","Component","cognitoProviderName","isBuiltIn","has","signIn","provider","custom","key"],"sources":["FederatedLogin.tsx"],"sourcesContent":["import React from \"react\";\nimport { signInWithRedirect } from \"aws-amplify/auth\";\nimport type { FederatedIdentityProvider } from \"~/admin/federatedIdentityProviders.js\";\nimport { federatedIdentityProviders } from \"~/admin/federatedIdentityProviders.js\";\nimport { FederatedProviders } from \"./FederatedProviders.js\";\n\ntype AuthProvider = \"Amazon\" | \"Apple\" | \"Facebook\" | \"Google\";\n\nconst builtInProviders = new Set<string>([\"Amazon\", \"Apple\", \"Facebook\", \"Google\"]);\n\ninterface FederatedLoginProps {\n providers: FederatedIdentityProvider[];\n}\n\nexport const FederatedLogin = ({ providers }: FederatedLoginProps) => {\n return (\n <FederatedProviders.Container>\n {providers.map(({ name, component: Component }) => {\n const cognitoProviderName = federatedIdentityProviders[name] ?? name;\n const isBuiltIn = builtInProviders.has(cognitoProviderName);\n\n const signIn = () => {\n if (isBuiltIn) {\n signInWithRedirect({\n provider: cognitoProviderName as AuthProvider\n });\n } else {\n signInWithRedirect({\n provider: { custom: cognitoProviderName }\n });\n }\n };\n\n return <Component key={name} signIn={signIn} />;\n })}\n </FederatedProviders.Container>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,kBAAkB,QAAQ,kBAAkB;AAErD,SAASC,0BAA0B;AACnC,SAASC,kBAAkB;AAI3B,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAMnF,OAAO,MAAMC,cAAc,GAAGA,CAAC;EAAEC;AAA+B,CAAC,KAAK;EAClE,oBACIP,KAAA,CAAAQ,aAAA,CAACL,kBAAkB,CAACM,SAAS,QACxBF,SAAS,CAACG,GAAG,CAAC,CAAC;IAAEC,IAAI;IAAEC,SAAS,EAAEC;EAAU,CAAC,KAAK;IAC/C,MAAMC,mBAAmB,GAAGZ,0BAA0B,CAACS,IAAI,CAAC,IAAIA,IAAI;IACpE,MAAMI,SAAS,GAAGX,gBAAgB,CAACY,GAAG,CAACF,mBAAmB,CAAC;IAE3D,MAAMG,MAAM,GAAGA,CAAA,KAAM;MACjB,IAAIF,SAAS,EAAE;QACXd,kBAAkB,CAAC;UACfiB,QAAQ,EAAEJ;QACd,CAAC,CAAC;MACN,CAAC,MAAM;QACHb,kBAAkB,CAAC;UACfiB,QAAQ,EAAE;YAAEC,MAAM,EAAEL;UAAoB;QAC5C,CAAC,CAAC;MACN;IACJ,CAAC;IAED,oBAAOd,KAAA,CAAAQ,aAAA,CAACK,SAAS;MAACO,GAAG,EAAET,IAAK;MAACM,MAAM,EAAEA;IAAO,CAAE,CAAC;EACnD,CAAC,CACyB,CAAC;AAEvC,CAAC","ignoreList":[]}
@@ -3,7 +3,7 @@ export const createPasswordValidator = policy => value => {
3
3
  if (!value) {
4
4
  return;
5
5
  }
6
- const requireSymbols = /([=+\-^$*.\[\]{}()?"!@#%&/,><':;|_~`])+/;
6
+ const requireSymbols = /([=+\-^$*.[\]{}()?"!@#%&/,><':;|_~`])+/;
7
7
  const requireNumber = /[0-9]/;
8
8
  const requireLowercase = /[a-z]/;
9
9
  const requireUppercase = /[A-Z]/;
@@ -1 +1 @@
1
- {"version":3,"names":["ValidationError","createPasswordValidator","policy","value","requireSymbols","requireNumber","requireLowercase","requireUppercase","minimumLength","undefined","length","test","requireNumbers"],"sources":["createPasswordValidator.ts"],"sourcesContent":["import { ValidationError } from \"@webiny/validation\";\n\nexport interface PasswordPolicy {\n minimumLength?: number;\n requireLowercase?: boolean;\n requireNumbers?: boolean;\n requireSymbols?: boolean;\n requireUppercase?: boolean;\n}\n\nexport const createPasswordValidator =\n (policy: PasswordPolicy) =>\n (value?: string): void => {\n if (!value) {\n return;\n }\n\n const requireSymbols = /([=+\\-^$*.\\[\\]{}()?\"!@#%&/,><':;|_~`])+/;\n const requireNumber = /[0-9]/;\n const requireLowercase = /[a-z]/;\n const requireUppercase = /[A-Z]/;\n\n if (policy.minimumLength !== undefined && value.length < policy.minimumLength) {\n throw new ValidationError(\n `Value requires at least ${policy.minimumLength} characters.`\n );\n }\n\n if (policy.requireLowercase && !requireLowercase.test(value)) {\n throw new ValidationError(\"Value must contain a lowercase character.\");\n }\n\n if (policy.requireNumbers && !requireNumber.test(value)) {\n throw new ValidationError(\"Value must contain a number.\");\n }\n\n if (policy.requireUppercase && !requireUppercase.test(value)) {\n throw new ValidationError(\"Value must contain an uppercase character.\");\n }\n\n if (policy.requireSymbols && !requireSymbols.test(value)) {\n throw new ValidationError(\"Value must contain a special character.\");\n }\n };\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,oBAAoB;AAUpD,OAAO,MAAMC,uBAAuB,GAC/BC,MAAsB,IACtBC,KAAc,IAAW;EACtB,IAAI,CAACA,KAAK,EAAE;IACR;EACJ;EAEA,MAAMC,cAAc,GAAG,yCAAyC;EAChE,MAAMC,aAAa,GAAG,OAAO;EAC7B,MAAMC,gBAAgB,GAAG,OAAO;EAChC,MAAMC,gBAAgB,GAAG,OAAO;EAEhC,IAAIL,MAAM,CAACM,aAAa,KAAKC,SAAS,IAAIN,KAAK,CAACO,MAAM,GAAGR,MAAM,CAACM,aAAa,EAAE;IAC3E,MAAM,IAAIR,eAAe,CACrB,2BAA2BE,MAAM,CAACM,aAAa,cACnD,CAAC;EACL;EAEA,IAAIN,MAAM,CAACI,gBAAgB,IAAI,CAACA,gBAAgB,CAACK,IAAI,CAACR,KAAK,CAAC,EAAE;IAC1D,MAAM,IAAIH,eAAe,CAAC,2CAA2C,CAAC;EAC1E;EAEA,IAAIE,MAAM,CAACU,cAAc,IAAI,CAACP,aAAa,CAACM,IAAI,CAACR,KAAK,CAAC,EAAE;IACrD,MAAM,IAAIH,eAAe,CAAC,8BAA8B,CAAC;EAC7D;EAEA,IAAIE,MAAM,CAACK,gBAAgB,IAAI,CAACA,gBAAgB,CAACI,IAAI,CAACR,KAAK,CAAC,EAAE;IAC1D,MAAM,IAAIH,eAAe,CAAC,4CAA4C,CAAC;EAC3E;EAEA,IAAIE,MAAM,CAACE,cAAc,IAAI,CAACA,cAAc,CAACO,IAAI,CAACR,KAAK,CAAC,EAAE;IACtD,MAAM,IAAIH,eAAe,CAAC,yCAAyC,CAAC;EACxE;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ValidationError","createPasswordValidator","policy","value","requireSymbols","requireNumber","requireLowercase","requireUppercase","minimumLength","undefined","length","test","requireNumbers"],"sources":["createPasswordValidator.ts"],"sourcesContent":["import { ValidationError } from \"@webiny/validation\";\n\nexport interface PasswordPolicy {\n minimumLength?: number;\n requireLowercase?: boolean;\n requireNumbers?: boolean;\n requireSymbols?: boolean;\n requireUppercase?: boolean;\n}\n\nexport const createPasswordValidator =\n (policy: PasswordPolicy) =>\n (value?: string): void => {\n if (!value) {\n return;\n }\n\n const requireSymbols = /([=+\\-^$*.[\\]{}()?\"!@#%&/,><':;|_~`])+/;\n const requireNumber = /[0-9]/;\n const requireLowercase = /[a-z]/;\n const requireUppercase = /[A-Z]/;\n\n if (policy.minimumLength !== undefined && value.length < policy.minimumLength) {\n throw new ValidationError(\n `Value requires at least ${policy.minimumLength} characters.`\n );\n }\n\n if (policy.requireLowercase && !requireLowercase.test(value)) {\n throw new ValidationError(\"Value must contain a lowercase character.\");\n }\n\n if (policy.requireNumbers && !requireNumber.test(value)) {\n throw new ValidationError(\"Value must contain a number.\");\n }\n\n if (policy.requireUppercase && !requireUppercase.test(value)) {\n throw new ValidationError(\"Value must contain an uppercase character.\");\n }\n\n if (policy.requireSymbols && !requireSymbols.test(value)) {\n throw new ValidationError(\"Value must contain a special character.\");\n }\n };\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,oBAAoB;AAUpD,OAAO,MAAMC,uBAAuB,GAC/BC,MAAsB,IACtBC,KAAc,IAAW;EACtB,IAAI,CAACA,KAAK,EAAE;IACR;EACJ;EAEA,MAAMC,cAAc,GAAG,wCAAwC;EAC/D,MAAMC,aAAa,GAAG,OAAO;EAC7B,MAAMC,gBAAgB,GAAG,OAAO;EAChC,MAAMC,gBAAgB,GAAG,OAAO;EAEhC,IAAIL,MAAM,CAACM,aAAa,KAAKC,SAAS,IAAIN,KAAK,CAACO,MAAM,GAAGR,MAAM,CAACM,aAAa,EAAE;IAC3E,MAAM,IAAIR,eAAe,CACrB,2BAA2BE,MAAM,CAACM,aAAa,cACnD,CAAC;EACL;EAEA,IAAIN,MAAM,CAACI,gBAAgB,IAAI,CAACA,gBAAgB,CAACK,IAAI,CAACR,KAAK,CAAC,EAAE;IAC1D,MAAM,IAAIH,eAAe,CAAC,2CAA2C,CAAC;EAC1E;EAEA,IAAIE,MAAM,CAACU,cAAc,IAAI,CAACP,aAAa,CAACM,IAAI,CAACR,KAAK,CAAC,EAAE;IACrD,MAAM,IAAIH,eAAe,CAAC,8BAA8B,CAAC;EAC7D;EAEA,IAAIE,MAAM,CAACK,gBAAgB,IAAI,CAACA,gBAAgB,CAACI,IAAI,CAACR,KAAK,CAAC,EAAE;IAC1D,MAAM,IAAIH,eAAe,CAAC,4CAA4C,CAAC;EAC3E;EAEA,IAAIE,MAAM,CAACE,cAAc,IAAI,CAACA,cAAc,CAACO,IAAI,CAACR,KAAK,CAAC,EAAE;IACtD,MAAM,IAAIH,eAAe,CAAC,yCAAyC,CAAC;EACxE;AACJ,CAAC","ignoreList":[]}