@webiny/cognito 6.1.0 → 6.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/admin/Cognito.js +4 -5
  2. package/admin/Cognito.js.map +1 -1
  3. package/admin/Extension.js +3 -0
  4. package/admin/Extension.js.map +1 -1
  5. package/admin/SecurityPermission.js +2 -10
  6. package/admin/SecurityPermission.js.map +1 -1
  7. package/admin/domain/permissionsSchema.d.ts +10 -0
  8. package/admin/domain/permissionsSchema.js +13 -0
  9. package/admin/domain/permissionsSchema.js.map +1 -0
  10. package/admin/features/permissions/abstractions.d.ts +17 -0
  11. package/admin/features/permissions/abstractions.js +5 -0
  12. package/admin/features/permissions/abstractions.js.map +1 -0
  13. package/admin/features/permissions/feature.d.ts +14 -0
  14. package/admin/features/permissions/feature.js +6 -0
  15. package/admin/features/permissions/feature.js.map +1 -0
  16. package/admin/presentation/Cognito/CognitoPresenter.d.ts +0 -1
  17. package/admin/presentation/Cognito/CognitoPresenter.js +43 -21
  18. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
  19. package/admin/presentation/Cognito/components/FederatedLogin.js +10 -7
  20. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
  21. package/api/features/DeleteUser/DeleteUserUseCase.d.ts +2 -2
  22. package/api/features/DeleteUser/DeleteUserUseCase.js +2 -2
  23. package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -1
  24. package/api/features/UpdateUser/UpdateUserUseCase.d.ts +2 -2
  25. package/api/features/UpdateUser/UpdateUserUseCase.js +2 -2
  26. package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -1
  27. package/api/features/UserInstaller/UserInstaller.d.ts +2 -2
  28. package/api/features/UserInstaller/UserInstaller.js +2 -2
  29. package/api/features/UserInstaller/UserInstaller.js.map +1 -1
  30. package/api/graphql/user.gql.js +2 -2
  31. package/api/graphql/user.gql.js.map +1 -1
  32. package/package.json +23 -23
  33. package/admin/plugins/constants.d.ts +0 -3
  34. package/admin/plugins/constants.js +0 -6
  35. package/admin/plugins/constants.js.map +0 -1
  36. /package/admin/{plugins → presentation}/userMenu/AccountDetails.d.ts +0 -0
  37. /package/admin/{plugins → presentation}/userMenu/AccountDetails.js +0 -0
  38. /package/admin/{plugins → presentation}/userMenu/AccountDetails.js.map +0 -0
  39. /package/admin/{plugins → presentation}/userMenu/useIsDefaultTenant.d.ts +0 -0
  40. /package/admin/{plugins → presentation}/userMenu/useIsDefaultTenant.js +0 -0
  41. /package/admin/{plugins → presentation}/userMenu/useIsDefaultTenant.js.map +0 -0
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":"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","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":[]}
@@ -1,6 +1,6 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { DeleteUserUseCase as CoreDeleteUser } from "@webiny/api-core/features/DeleteUser";
3
- import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
2
+ import { DeleteUserUseCase as CoreDeleteUser } from "@webiny/api-core/features/users/DeleteUser/index.js";
3
+ import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
4
4
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
5
5
  import { DeleteUserUseCase as UseCaseAbstraction } from "./abstractions.js";
6
6
  import { CognitoService } from "../CognitoService/abstractions.js";
@@ -1,7 +1,7 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
2
  import { Result } from "@webiny/feature/api";
3
- import { DeleteUserUseCase as CoreDeleteUser } from "@webiny/api-core/features/DeleteUser";
4
- import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
3
+ import { DeleteUserUseCase as CoreDeleteUser } from "@webiny/api-core/features/users/DeleteUser/index.js";
4
+ import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
5
5
  import { NotAuthorizedError } from "@webiny/api-core/features/users/shared/errors.js";
6
6
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
7
7
  import { DeleteUserUseCase as UseCaseAbstraction } from "./abstractions.js";
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","Result","DeleteUserUseCase","CoreDeleteUser","GetUserUseCase","NotAuthorizedError","IdentityContext","UseCaseAbstraction","Username","CognitoDeleteUserError","CognitoService","DeleteUserUseCaseImpl","constructor","identityContext","cognitoService","deleteUserUseCase","getUserUseCase","execute","id","permission","getPermission","fail","getUserResult","isFail","error","user","value","deleteUserResult","deleteUser","fromUser","ok","cognitoError","abstraction","implementation","dependencies"],"sources":["DeleteUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { DeleteUserUseCase as CoreDeleteUser } from \"@webiny/api-core/features/DeleteUser\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/GetUser\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/users/shared/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { DeleteUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoDeleteUserError } from \"~/api/domain/errors.js\";\nimport { CognitoService } from \"../CognitoService/abstractions.js\";\n\nclass DeleteUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private deleteUserUseCase: CoreDeleteUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get user to have email for Cognito deletion\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const user = getUserResult.value;\n\n // Delete user from the database\n const deleteUserResult = await this.deleteUserUseCase.execute(id);\n if (deleteUserResult.isFail()) {\n return Result.fail(deleteUserResult.error);\n }\n\n // Delete user from Cognito\n try {\n await this.cognitoService.deleteUser(Username.fromUser(user));\n\n return Result.ok();\n } catch (cognitoError) {\n return Result.fail(new CognitoDeleteUserError(cognitoError as Error));\n }\n }\n}\n\nexport const DeleteUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreDeleteUser, GetUserUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,iBAAiB,IAAIC,cAAc,QAAQ,sCAAsC;AAC1F,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,kBAAkB,QAAQ,kDAAkD;AACrF,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASJ,iBAAiB,IAAIK,kBAAkB;AAChD,SAASC,QAAQ;AACjB,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAEvB,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,iBAA2C,EAC3CC,cAAwC,EAClD;IAAA,KAJUH,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,iBAA2C,GAA3CA,iBAA2C;IAAA,KAC3CC,cAAwC,GAAxCA,cAAwC;EACjD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAmD;IACvE,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACN,eAAe,CAACO,aAAa,CAAC,iBAAiB,CAAC;IAC9E,IAAI,CAACD,UAAU,EAAE;MACb,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIhB,kBAAkB,CAAC,CAAC,CAAC;IAChD;;IAEA;IACA,MAAMiB,aAAa,GAAG,MAAM,IAAI,CAACN,cAAc,CAACC,OAAO,CAAC;MAAEC;IAAG,CAAC,CAAC;IAC/D,IAAII,aAAa,CAACC,MAAM,CAAC,CAAC,EAAE;MACxB,OAAOtB,MAAM,CAACoB,IAAI,CAACC,aAAa,CAACE,KAAK,CAAC;IAC3C;IAEA,MAAMC,IAAI,GAAGH,aAAa,CAACI,KAAK;;IAEhC;IACA,MAAMC,gBAAgB,GAAG,MAAM,IAAI,CAACZ,iBAAiB,CAACE,OAAO,CAACC,EAAE,CAAC;IACjE,IAAIS,gBAAgB,CAACJ,MAAM,CAAC,CAAC,EAAE;MAC3B,OAAOtB,MAAM,CAACoB,IAAI,CAACM,gBAAgB,CAACH,KAAK,CAAC;IAC9C;;IAEA;IACA,IAAI;MACA,MAAM,IAAI,CAACV,cAAc,CAACc,UAAU,CAACpB,QAAQ,CAACqB,QAAQ,CAACJ,IAAI,CAAC,CAAC;MAE7D,OAAOxB,MAAM,CAAC6B,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,OAAOC,YAAY,EAAE;MACnB,OAAO9B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,sBAAsB,CAACsB,YAAqB,CAAC,CAAC;IACzE;EACJ;AACJ;AAEA,OAAO,MAAM7B,iBAAiB,GAAGF,oBAAoB,CAAC;EAClDgC,WAAW,EAAEzB,kBAAkB;EAC/B0B,cAAc,EAAEtB,qBAAqB;EACrCuB,YAAY,EAAE,CAAC5B,eAAe,EAAEI,cAAc,EAAEP,cAAc,EAAEC,cAAc;AAClF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","Result","DeleteUserUseCase","CoreDeleteUser","GetUserUseCase","NotAuthorizedError","IdentityContext","UseCaseAbstraction","Username","CognitoDeleteUserError","CognitoService","DeleteUserUseCaseImpl","constructor","identityContext","cognitoService","deleteUserUseCase","getUserUseCase","execute","id","permission","getPermission","fail","getUserResult","isFail","error","user","value","deleteUserResult","deleteUser","fromUser","ok","cognitoError","abstraction","implementation","dependencies"],"sources":["DeleteUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { DeleteUserUseCase as CoreDeleteUser } from \"@webiny/api-core/features/users/DeleteUser/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/users/shared/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { DeleteUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoDeleteUserError } from \"~/api/domain/errors.js\";\nimport { CognitoService } from \"../CognitoService/abstractions.js\";\n\nclass DeleteUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private deleteUserUseCase: CoreDeleteUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get user to have email for Cognito deletion\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const user = getUserResult.value;\n\n // Delete user from the database\n const deleteUserResult = await this.deleteUserUseCase.execute(id);\n if (deleteUserResult.isFail()) {\n return Result.fail(deleteUserResult.error);\n }\n\n // Delete user from Cognito\n try {\n await this.cognitoService.deleteUser(Username.fromUser(user));\n\n return Result.ok();\n } catch (cognitoError) {\n return Result.fail(new CognitoDeleteUserError(cognitoError as Error));\n }\n }\n}\n\nexport const DeleteUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreDeleteUser, GetUserUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,iBAAiB,IAAIC,cAAc,QAAQ,qDAAqD;AACzG,SAASC,cAAc,QAAQ,kDAAkD;AACjF,SAASC,kBAAkB,QAAQ,kDAAkD;AACrF,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASJ,iBAAiB,IAAIK,kBAAkB;AAChD,SAASC,QAAQ;AACjB,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAEvB,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,iBAA2C,EAC3CC,cAAwC,EAClD;IAAA,KAJUH,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,iBAA2C,GAA3CA,iBAA2C;IAAA,KAC3CC,cAAwC,GAAxCA,cAAwC;EACjD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAmD;IACvE,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACN,eAAe,CAACO,aAAa,CAAC,iBAAiB,CAAC;IAC9E,IAAI,CAACD,UAAU,EAAE;MACb,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIhB,kBAAkB,CAAC,CAAC,CAAC;IAChD;;IAEA;IACA,MAAMiB,aAAa,GAAG,MAAM,IAAI,CAACN,cAAc,CAACC,OAAO,CAAC;MAAEC;IAAG,CAAC,CAAC;IAC/D,IAAII,aAAa,CAACC,MAAM,CAAC,CAAC,EAAE;MACxB,OAAOtB,MAAM,CAACoB,IAAI,CAACC,aAAa,CAACE,KAAK,CAAC;IAC3C;IAEA,MAAMC,IAAI,GAAGH,aAAa,CAACI,KAAK;;IAEhC;IACA,MAAMC,gBAAgB,GAAG,MAAM,IAAI,CAACZ,iBAAiB,CAACE,OAAO,CAACC,EAAE,CAAC;IACjE,IAAIS,gBAAgB,CAACJ,MAAM,CAAC,CAAC,EAAE;MAC3B,OAAOtB,MAAM,CAACoB,IAAI,CAACM,gBAAgB,CAACH,KAAK,CAAC;IAC9C;;IAEA;IACA,IAAI;MACA,MAAM,IAAI,CAACV,cAAc,CAACc,UAAU,CAACpB,QAAQ,CAACqB,QAAQ,CAACJ,IAAI,CAAC,CAAC;MAE7D,OAAOxB,MAAM,CAAC6B,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,OAAOC,YAAY,EAAE;MACnB,OAAO9B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,sBAAsB,CAACsB,YAAqB,CAAC,CAAC;IACzE;EACJ;AACJ;AAEA,OAAO,MAAM7B,iBAAiB,GAAGF,oBAAoB,CAAC;EAClDgC,WAAW,EAAEzB,kBAAkB;EAC/B0B,cAAc,EAAEtB,qBAAqB;EACrCuB,YAAY,EAAE,CAAC5B,eAAe,EAAEI,cAAc,EAAEP,cAAc,EAAEC,cAAc;AAClF,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { UpdateUserUseCase as CoreUpdateUser } from "@webiny/api-core/features/UpdateUser";
3
- import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
2
+ import { UpdateUserUseCase as CoreUpdateUser } from "@webiny/api-core/features/users/UpdateUser/index.js";
3
+ import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
4
4
  import type { AdminUser } from "@webiny/api-core/types/users.js";
5
5
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
6
6
  import { UpdateUserUseCase as UseCaseAbstraction } from "./abstractions.js";
@@ -1,6 +1,6 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { UpdateUserUseCase as CoreUpdateUser } from "@webiny/api-core/features/UpdateUser";
3
- import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
2
+ import { UpdateUserUseCase as CoreUpdateUser } from "@webiny/api-core/features/users/UpdateUser/index.js";
3
+ import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
4
4
  import { NotAuthorizedError, UserValidationError } from "@webiny/api-core/features/users/shared/errors.js";
5
5
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
6
6
  import { UpdateUserUseCase as UseCaseAbstraction } from "./abstractions.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Result","UpdateUserUseCase","CoreUpdateUser","GetUserUseCase","NotAuthorizedError","UserValidationError","IdentityContext","UseCaseAbstraction","Username","CognitoUpdateUserError","updateAdminUserValidation","CognitoService","defaultUpdateAttributes","family_name","given_name","preferred_username","UpdateUserUseCaseImpl","constructor","identityContext","cognitoService","updateUserUseCase","getUserUseCase","updateAttributes","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","issues","message","data","password","userDataWithoutPassword","getUserResult","isFail","originalUser","value","updateUserResult","updatedUser","attributes","Object","keys","forEach","attr","mappedAttr","attrValue","email","updateUserAttributes","fromUser","setPermanentPassword","ok","cognitoError","createImplementation","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateUserUseCase as CoreUpdateUser } from \"@webiny/api-core/features/UpdateUser\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/GetUser\";\nimport {\n NotAuthorizedError,\n UserValidationError\n} from \"@webiny/api-core/features/users/shared/errors.js\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoUpdateUserError } from \"~/api/domain/errors.js\";\nimport { updateAdminUserValidation } from \"./schema.js\";\nimport type { UpdateAdminUserInput } from \"./abstractions.js\";\nimport { CognitoService } from \"~/api/features/CognitoService/index.js\";\n\ntype MappedAttrType = (user: AdminUser) => string | keyof AdminUser;\n\nconst defaultUpdateAttributes = {\n family_name: \"lastName\",\n given_name: \"firstName\",\n preferred_username: \"email\"\n};\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n private updateAttributes: Record<string, string | MappedAttrType>;\n\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private updateUserUseCase: CoreUpdateUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {\n this.updateAttributes = defaultUpdateAttributes;\n }\n\n async execute(\n id: string,\n input: UpdateAdminUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Validate input (including password)\n const validation = updateAdminUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n const data = validation.data;\n const { password, ...userDataWithoutPassword } = data;\n\n // Get original user to know the email before update\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // Update user in api-core\n const updateUserResult = await this.updateUserUseCase.execute(id, userDataWithoutPassword);\n if (updateUserResult.isFail()) {\n return Result.fail(updateUserResult.error);\n }\n\n const updatedUser = updateUserResult.value;\n\n // Update user in Cognito\n try {\n // Build new attributes\n const attributes: Record<string, string> = {};\n\n Object.keys(this.updateAttributes).forEach(attr => {\n const mappedAttr = this.updateAttributes[\n attr as keyof typeof this.updateAttributes\n ] as MappedAttrType;\n const attrValue =\n typeof mappedAttr === \"function\"\n ? mappedAttr(updatedUser)\n : updatedUser[mappedAttr];\n attributes[attr] = attrValue;\n });\n\n // If email changed, set email_verified to true\n if (originalUser.email !== updatedUser.email) {\n attributes[\"email_verified\"] = \"true\";\n }\n\n await this.cognitoService.updateUserAttributes(\n Username.fromUser(originalUser),\n attributes\n );\n\n // Update password if provided\n if (password) {\n await this.cognitoService.setPermanentPassword(\n Username.fromUser(updatedUser),\n password\n );\n }\n\n return Result.ok(updatedUser);\n } catch (cognitoError) {\n return Result.fail(new CognitoUpdateUserError(cognitoError as Error));\n }\n }\n}\n\nexport const UpdateUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreUpdateUser, GetUserUseCase]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Result","UpdateUserUseCase","CoreUpdateUser","GetUserUseCase","NotAuthorizedError","UserValidationError","IdentityContext","UseCaseAbstraction","Username","CognitoUpdateUserError","updateAdminUserValidation","CognitoService","defaultUpdateAttributes","family_name","given_name","preferred_username","UpdateUserUseCaseImpl","constructor","identityContext","cognitoService","updateUserUseCase","getUserUseCase","updateAttributes","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","issues","message","data","password","userDataWithoutPassword","getUserResult","isFail","originalUser","value","updateUserResult","updatedUser","attributes","Object","keys","forEach","attr","mappedAttr","attrValue","email","updateUserAttributes","fromUser","setPermanentPassword","ok","cognitoError","createImplementation","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateUserUseCase as CoreUpdateUser } from \"@webiny/api-core/features/users/UpdateUser/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport {\n NotAuthorizedError,\n UserValidationError\n} from \"@webiny/api-core/features/users/shared/errors.js\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoUpdateUserError } from \"~/api/domain/errors.js\";\nimport { updateAdminUserValidation } from \"./schema.js\";\nimport type { UpdateAdminUserInput } from \"./abstractions.js\";\nimport { CognitoService } from \"~/api/features/CognitoService/index.js\";\n\ntype MappedAttrType = (user: AdminUser) => string | keyof AdminUser;\n\nconst defaultUpdateAttributes = {\n family_name: \"lastName\",\n given_name: \"firstName\",\n preferred_username: \"email\"\n};\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n private updateAttributes: Record<string, string | MappedAttrType>;\n\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private updateUserUseCase: CoreUpdateUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {\n this.updateAttributes = defaultUpdateAttributes;\n }\n\n async execute(\n id: string,\n input: UpdateAdminUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Validate input (including password)\n const validation = updateAdminUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n const data = validation.data;\n const { password, ...userDataWithoutPassword } = data;\n\n // Get original user to know the email before update\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // Update user in api-core\n const updateUserResult = await this.updateUserUseCase.execute(id, userDataWithoutPassword);\n if (updateUserResult.isFail()) {\n return Result.fail(updateUserResult.error);\n }\n\n const updatedUser = updateUserResult.value;\n\n // Update user in Cognito\n try {\n // Build new attributes\n const attributes: Record<string, string> = {};\n\n Object.keys(this.updateAttributes).forEach(attr => {\n const mappedAttr = this.updateAttributes[\n attr as keyof typeof this.updateAttributes\n ] as MappedAttrType;\n const attrValue =\n typeof mappedAttr === \"function\"\n ? mappedAttr(updatedUser)\n : updatedUser[mappedAttr];\n attributes[attr] = attrValue;\n });\n\n // If email changed, set email_verified to true\n if (originalUser.email !== updatedUser.email) {\n attributes[\"email_verified\"] = \"true\";\n }\n\n await this.cognitoService.updateUserAttributes(\n Username.fromUser(originalUser),\n attributes\n );\n\n // Update password if provided\n if (password) {\n await this.cognitoService.setPermanentPassword(\n Username.fromUser(updatedUser),\n password\n );\n }\n\n return Result.ok(updatedUser);\n } catch (cognitoError) {\n return Result.fail(new CognitoUpdateUserError(cognitoError as Error));\n }\n }\n}\n\nexport const UpdateUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreUpdateUser, GetUserUseCase]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { Tenant } from "@webiny/api-core/types/tenancy.js";
2
- import { AppInstaller } from "@webiny/api-core/features/InstallTenant";
3
- import { GetRoleUseCase } from "@webiny/api-core/features/GetRole";
2
+ import { AppInstaller } from "@webiny/api-core/features/tenancy/InstallTenant/index.js";
3
+ import { GetRoleUseCase } from "@webiny/api-core/features/security/roles/GetRole/index.js";
4
4
  import { DeleteUserUseCase } from "../../../api/features/DeleteUser/index.js";
5
5
  import { CreateUserUseCase } from "../../../api/features/CreateUser/index.js";
6
6
  interface UserInstallationData {
@@ -1,5 +1,5 @@
1
- import { AppInstaller } from "@webiny/api-core/features/InstallTenant";
2
- import { GetRoleUseCase } from "@webiny/api-core/features/GetRole";
1
+ import { AppInstaller } from "@webiny/api-core/features/tenancy/InstallTenant/index.js";
2
+ import { GetRoleUseCase } from "@webiny/api-core/features/security/roles/GetRole/index.js";
3
3
  import { DeleteUserUseCase } from "../DeleteUser/index.js";
4
4
  import { CreateUserUseCase } from "../CreateUser/index.js";
5
5
  class UsersInstallerImpl {
@@ -1 +1 @@
1
- {"version":3,"names":["AppInstaller","GetRoleUseCase","DeleteUserUseCase","CreateUserUseCase","UsersInstallerImpl","alwaysRun","appName","dependsOn","constructor","getRole","createUserUseCase","deleteUserUseCase","install","_","data","roleResult","execute","slug","isFail","Error","error","message","role","value","userWithDisplayName","displayName","firstName","lastName","roles","id","teams","createResult","createdUser","uninstall","UserInstaller","createImplementation","implementation","dependencies"],"sources":["UserInstaller.ts"],"sourcesContent":["import type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport { AppInstaller } from \"@webiny/api-core/features/InstallTenant\";\nimport { GetRoleUseCase } from \"@webiny/api-core/features/GetRole\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\n\ninterface UserInstallationData {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n}\n\nclass UsersInstallerImpl implements AppInstaller.Interface<UserInstallationData> {\n readonly alwaysRun = false;\n readonly appName = \"Cognito\";\n readonly dependsOn = [\"Security\"];\n private createdUser: AdminUser | undefined;\n\n constructor(\n private getRole: GetRoleUseCase.Interface,\n private createUserUseCase: CreateUserUseCase.Interface,\n private deleteUserUseCase: DeleteUserUseCase.Interface\n ) {}\n\n async install(_: Tenant, data: UserInstallationData): Promise<void> {\n // Load `full-access` role and assign it to the new user\n const roleResult = await this.getRole.execute({ slug: \"full-access\" });\n if (roleResult.isFail()) {\n throw new Error(`Failed to get full-access role: ${roleResult.error.message}`);\n }\n\n const role = roleResult.value;\n\n // Create user with displayName and full-access role\n const userWithDisplayName: CreateUserUseCase.Input = {\n ...data,\n displayName: `${data.firstName} ${data.lastName}`,\n roles: [role.id],\n teams: []\n };\n\n const createResult = await this.createUserUseCase.execute(userWithDisplayName);\n if (createResult.isFail()) {\n throw new Error(`Failed to create admin user: ${createResult.error.message}`);\n }\n\n this.createdUser = createResult.value;\n }\n\n async uninstall(): Promise<void> {\n if (this.createdUser) {\n await this.deleteUserUseCase.execute(this.createdUser.id);\n }\n }\n}\n\nexport const UserInstaller = AppInstaller.createImplementation({\n implementation: UsersInstallerImpl,\n dependencies: [GetRoleUseCase, CreateUserUseCase, DeleteUserUseCase]\n});\n"],"mappings":"AAEA,SAASA,YAAY,QAAQ,yCAAyC;AACtE,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAS1B,MAAMC,kBAAkB,CAAyD;EACpEC,SAAS,GAAG,KAAK;EACjBC,OAAO,GAAG,SAAS;EACnBC,SAAS,GAAG,CAAC,UAAU,CAAC;EAGjCC,WAAWA,CACCC,OAAiC,EACjCC,iBAA8C,EAC9CC,iBAA8C,EACxD;IAAA,KAHUF,OAAiC,GAAjCA,OAAiC;IAAA,KACjCC,iBAA8C,GAA9CA,iBAA8C;IAAA,KAC9CC,iBAA8C,GAA9CA,iBAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,CAAS,EAAEC,IAA0B,EAAiB;IAChE;IACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACN,OAAO,CAACO,OAAO,CAAC;MAAEC,IAAI,EAAE;IAAc,CAAC,CAAC;IACtE,IAAIF,UAAU,CAACG,MAAM,CAAC,CAAC,EAAE;MACrB,MAAM,IAAIC,KAAK,CAAC,mCAAmCJ,UAAU,CAACK,KAAK,CAACC,OAAO,EAAE,CAAC;IAClF;IAEA,MAAMC,IAAI,GAAGP,UAAU,CAACQ,KAAK;;IAE7B;IACA,MAAMC,mBAA4C,GAAG;MACjD,GAAGV,IAAI;MACPW,WAAW,EAAE,GAAGX,IAAI,CAACY,SAAS,IAAIZ,IAAI,CAACa,QAAQ,EAAE;MACjDC,KAAK,EAAE,CAACN,IAAI,CAACO,EAAE,CAAC;MAChBC,KAAK,EAAE;IACX,CAAC;IAED,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACrB,iBAAiB,CAACM,OAAO,CAACQ,mBAAmB,CAAC;IAC9E,IAAIO,YAAY,CAACb,MAAM,CAAC,CAAC,EAAE;MACvB,MAAM,IAAIC,KAAK,CAAC,gCAAgCY,YAAY,CAACX,KAAK,CAACC,OAAO,EAAE,CAAC;IACjF;IAEA,IAAI,CAACW,WAAW,GAAGD,YAAY,CAACR,KAAK;EACzC;EAEA,MAAMU,SAASA,CAAA,EAAkB;IAC7B,IAAI,IAAI,CAACD,WAAW,EAAE;MAClB,MAAM,IAAI,CAACrB,iBAAiB,CAACK,OAAO,CAAC,IAAI,CAACgB,WAAW,CAACH,EAAE,CAAC;IAC7D;EACJ;AACJ;AAEA,OAAO,MAAMK,aAAa,GAAGlC,YAAY,CAACmC,oBAAoB,CAAC;EAC3DC,cAAc,EAAEhC,kBAAkB;EAClCiC,YAAY,EAAE,CAACpC,cAAc,EAAEE,iBAAiB,EAAED,iBAAiB;AACvE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["AppInstaller","GetRoleUseCase","DeleteUserUseCase","CreateUserUseCase","UsersInstallerImpl","alwaysRun","appName","dependsOn","constructor","getRole","createUserUseCase","deleteUserUseCase","install","_","data","roleResult","execute","slug","isFail","Error","error","message","role","value","userWithDisplayName","displayName","firstName","lastName","roles","id","teams","createResult","createdUser","uninstall","UserInstaller","createImplementation","implementation","dependencies"],"sources":["UserInstaller.ts"],"sourcesContent":["import type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport { AppInstaller } from \"@webiny/api-core/features/tenancy/InstallTenant/index.js\";\nimport { GetRoleUseCase } from \"@webiny/api-core/features/security/roles/GetRole/index.js\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\n\ninterface UserInstallationData {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n}\n\nclass UsersInstallerImpl implements AppInstaller.Interface<UserInstallationData> {\n readonly alwaysRun = false;\n readonly appName = \"Cognito\";\n readonly dependsOn = [\"Security\"];\n private createdUser: AdminUser | undefined;\n\n constructor(\n private getRole: GetRoleUseCase.Interface,\n private createUserUseCase: CreateUserUseCase.Interface,\n private deleteUserUseCase: DeleteUserUseCase.Interface\n ) {}\n\n async install(_: Tenant, data: UserInstallationData): Promise<void> {\n // Load `full-access` role and assign it to the new user\n const roleResult = await this.getRole.execute({ slug: \"full-access\" });\n if (roleResult.isFail()) {\n throw new Error(`Failed to get full-access role: ${roleResult.error.message}`);\n }\n\n const role = roleResult.value;\n\n // Create user with displayName and full-access role\n const userWithDisplayName: CreateUserUseCase.Input = {\n ...data,\n displayName: `${data.firstName} ${data.lastName}`,\n roles: [role.id],\n teams: []\n };\n\n const createResult = await this.createUserUseCase.execute(userWithDisplayName);\n if (createResult.isFail()) {\n throw new Error(`Failed to create admin user: ${createResult.error.message}`);\n }\n\n this.createdUser = createResult.value;\n }\n\n async uninstall(): Promise<void> {\n if (this.createdUser) {\n await this.deleteUserUseCase.execute(this.createdUser.id);\n }\n }\n}\n\nexport const UserInstaller = AppInstaller.createImplementation({\n implementation: UsersInstallerImpl,\n dependencies: [GetRoleUseCase, CreateUserUseCase, DeleteUserUseCase]\n});\n"],"mappings":"AAEA,SAASA,YAAY,QAAQ,0DAA0D;AACvF,SAASC,cAAc,QAAQ,2DAA2D;AAC1F,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAS1B,MAAMC,kBAAkB,CAAyD;EACpEC,SAAS,GAAG,KAAK;EACjBC,OAAO,GAAG,SAAS;EACnBC,SAAS,GAAG,CAAC,UAAU,CAAC;EAGjCC,WAAWA,CACCC,OAAiC,EACjCC,iBAA8C,EAC9CC,iBAA8C,EACxD;IAAA,KAHUF,OAAiC,GAAjCA,OAAiC;IAAA,KACjCC,iBAA8C,GAA9CA,iBAA8C;IAAA,KAC9CC,iBAA8C,GAA9CA,iBAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,CAAS,EAAEC,IAA0B,EAAiB;IAChE;IACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACN,OAAO,CAACO,OAAO,CAAC;MAAEC,IAAI,EAAE;IAAc,CAAC,CAAC;IACtE,IAAIF,UAAU,CAACG,MAAM,CAAC,CAAC,EAAE;MACrB,MAAM,IAAIC,KAAK,CAAC,mCAAmCJ,UAAU,CAACK,KAAK,CAACC,OAAO,EAAE,CAAC;IAClF;IAEA,MAAMC,IAAI,GAAGP,UAAU,CAACQ,KAAK;;IAE7B;IACA,MAAMC,mBAA4C,GAAG;MACjD,GAAGV,IAAI;MACPW,WAAW,EAAE,GAAGX,IAAI,CAACY,SAAS,IAAIZ,IAAI,CAACa,QAAQ,EAAE;MACjDC,KAAK,EAAE,CAACN,IAAI,CAACO,EAAE,CAAC;MAChBC,KAAK,EAAE;IACX,CAAC;IAED,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACrB,iBAAiB,CAACM,OAAO,CAACQ,mBAAmB,CAAC;IAC9E,IAAIO,YAAY,CAACb,MAAM,CAAC,CAAC,EAAE;MACvB,MAAM,IAAIC,KAAK,CAAC,gCAAgCY,YAAY,CAACX,KAAK,CAACC,OAAO,EAAE,CAAC;IACjF;IAEA,IAAI,CAACW,WAAW,GAAGD,YAAY,CAACR,KAAK;EACzC;EAEA,MAAMU,SAASA,CAAA,EAAkB;IAC7B,IAAI,IAAI,CAACD,WAAW,EAAE;MAClB,MAAM,IAAI,CAACrB,iBAAiB,CAACK,OAAO,CAAC,IAAI,CAACgB,WAAW,CAACH,EAAE,CAAC;IAC7D;EACJ;AACJ;AAEA,OAAO,MAAMK,aAAa,GAAGlC,YAAY,CAACmC,oBAAoB,CAAC;EAC3DC,cAAc,EAAEhC,kBAAkB;EAClCiC,YAAY,EAAE,CAACpC,cAAc,EAAEE,iBAAiB,EAAED,iBAAiB;AACvE,CAAC,CAAC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { ErrorResponse, NotFoundResponse, Response } from "@webiny/handler-graphql/responses.js";
2
2
  import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
3
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
4
- import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
3
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
4
+ import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
5
5
  import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
6
6
  import { CreateUserUseCase } from "../features/CreateUser/index.js";
7
7
  import { UpdateUserUseCase } from "../features/UpdateUser/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["ErrorResponse","NotFoundResponse","Response","CoreGraphQLSchemaFactory","IdentityContext","GetUserUseCase","NotAuthorizedResponse","CreateUserUseCase","UpdateUserUseCase","DeleteUserUseCase","AdminUserSchemaImpl","execute","builder","addTypeDefs","addResolver","path","dependencies","resolver","identityContext","getUserUseCase","updateUserUseCase","args","identity","getIdentity","isAdmin","withoutAuthorization","getUserResult","id","isFail","user","value","updateResult","data","message","error","code","createUserUseCase","result","deleteUserUseCase","AdminUsersSchema","createImplementation","implementation"],"sources":["user.gql.ts"],"sourcesContent":["import { ErrorResponse, NotFoundResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/GetUser\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/api/features/UpdateUser/index.js\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\n\nclass AdminUserSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n \"\"\"\n This input type is used by administrators to create other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersCreateInput {\n email: String!\n firstName: String!\n lastName: String!\n password: String!\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by administrators to update other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersUpdateInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by the user who is updating his own account\n \"\"\"\n input AdminUsersCurrentUserInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n }\n\n extend type AdminUsersMutation {\n updateCurrentUser(data: AdminUsersCurrentUserInput!): AdminUsersResponse\n\n createUser(data: AdminUsersCreateInput!): AdminUsersResponse\n\n updateUser(id: ID!, data: AdminUsersUpdateInput!): AdminUsersResponse\n\n deleteUser(id: ID!): AdminUsersBooleanResponse\n }\n `);\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateCurrentUser\",\n dependencies: [IdentityContext, GetUserUseCase, UpdateUserUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n getUserUseCase: GetUserUseCase.Interface,\n updateUserUseCase: UpdateUserUseCase.Interface\n ) => {\n return async ({ args }) => {\n const identity = identityContext.getIdentity();\n if (!identity.isAdmin()) {\n return new NotAuthorizedResponse();\n }\n\n // Current user might not have permissions for `adminUsers`.\n return await identityContext.withoutAuthorization(async () => {\n const getUserResult = await getUserUseCase.execute({ id: identity.id });\n if (getUserResult.isFail()) {\n // TODO: check if current identity belongs to a different tenant.\n // TODO: If so, switch to that other tenant, and update his profile there.\n return new NotFoundResponse(\"User not found!\");\n }\n\n const user = getUserResult.value;\n\n // TODO: UpdateCurrentUser should be a dedicated use case\n const updateResult = await updateUserUseCase.execute(user.id, args.data);\n if (updateResult.isFail()) {\n return new ErrorResponse({\n message: updateResult.error.message,\n code: updateResult.error.code,\n data: updateResult.error.data\n });\n }\n\n return new Response(updateResult.value);\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.createUser\",\n dependencies: [CreateUserUseCase],\n resolver: (createUserUseCase: CreateUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createUserUseCase.execute(args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateUser\",\n dependencies: [UpdateUserUseCase, IdentityContext],\n resolver: (\n updateUserUseCase: UpdateUserUseCase.Interface,\n identityContext: IdentityContext.Interface\n ) => {\n return async ({ args }) => {\n if (args.id === identityContext.getIdentity().id) {\n return new ErrorResponse({\n message:\n \"You're not allowed to update your own account using this API.\",\n code: \"AdminUser/GraphQL/UpdateSelf\"\n });\n }\n\n const result = await updateUserUseCase.execute(args.id, args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.deleteUser\",\n dependencies: [DeleteUserUseCase],\n resolver: (deleteUserUseCase: DeleteUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteUserUseCase.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const AdminUsersSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: AdminUserSchemaImpl,\n dependencies: []\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ErrorResponse","NotFoundResponse","Response","CoreGraphQLSchemaFactory","IdentityContext","GetUserUseCase","NotAuthorizedResponse","CreateUserUseCase","UpdateUserUseCase","DeleteUserUseCase","AdminUserSchemaImpl","execute","builder","addTypeDefs","addResolver","path","dependencies","resolver","identityContext","getUserUseCase","updateUserUseCase","args","identity","getIdentity","isAdmin","withoutAuthorization","getUserResult","id","isFail","user","value","updateResult","data","message","error","code","createUserUseCase","result","deleteUserUseCase","AdminUsersSchema","createImplementation","implementation"],"sources":["user.gql.ts"],"sourcesContent":["import { ErrorResponse, NotFoundResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/api/features/UpdateUser/index.js\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\n\nclass AdminUserSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n \"\"\"\n This input type is used by administrators to create other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersCreateInput {\n email: String!\n firstName: String!\n lastName: String!\n password: String!\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by administrators to update other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersUpdateInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by the user who is updating his own account\n \"\"\"\n input AdminUsersCurrentUserInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n }\n\n extend type AdminUsersMutation {\n updateCurrentUser(data: AdminUsersCurrentUserInput!): AdminUsersResponse\n\n createUser(data: AdminUsersCreateInput!): AdminUsersResponse\n\n updateUser(id: ID!, data: AdminUsersUpdateInput!): AdminUsersResponse\n\n deleteUser(id: ID!): AdminUsersBooleanResponse\n }\n `);\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateCurrentUser\",\n dependencies: [IdentityContext, GetUserUseCase, UpdateUserUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n getUserUseCase: GetUserUseCase.Interface,\n updateUserUseCase: UpdateUserUseCase.Interface\n ) => {\n return async ({ args }) => {\n const identity = identityContext.getIdentity();\n if (!identity.isAdmin()) {\n return new NotAuthorizedResponse();\n }\n\n // Current user might not have permissions for `adminUsers`.\n return await identityContext.withoutAuthorization(async () => {\n const getUserResult = await getUserUseCase.execute({ id: identity.id });\n if (getUserResult.isFail()) {\n // TODO: check if current identity belongs to a different tenant.\n // TODO: If so, switch to that other tenant, and update his profile there.\n return new NotFoundResponse(\"User not found!\");\n }\n\n const user = getUserResult.value;\n\n // TODO: UpdateCurrentUser should be a dedicated use case\n const updateResult = await updateUserUseCase.execute(user.id, args.data);\n if (updateResult.isFail()) {\n return new ErrorResponse({\n message: updateResult.error.message,\n code: updateResult.error.code,\n data: updateResult.error.data\n });\n }\n\n return new Response(updateResult.value);\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.createUser\",\n dependencies: [CreateUserUseCase],\n resolver: (createUserUseCase: CreateUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createUserUseCase.execute(args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateUser\",\n dependencies: [UpdateUserUseCase, IdentityContext],\n resolver: (\n updateUserUseCase: UpdateUserUseCase.Interface,\n identityContext: IdentityContext.Interface\n ) => {\n return async ({ args }) => {\n if (args.id === identityContext.getIdentity().id) {\n return new ErrorResponse({\n message:\n \"You're not allowed to update your own account using this API.\",\n code: \"AdminUser/GraphQL/UpdateSelf\"\n });\n }\n\n const result = await updateUserUseCase.execute(args.id, args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.deleteUser\",\n dependencies: [DeleteUserUseCase],\n resolver: (deleteUserUseCase: DeleteUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteUserUseCase.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const AdminUsersSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: AdminUserSchemaImpl,\n dependencies: []\n});\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/cognito",
3
- "version": "6.1.0",
3
+ "version": "6.2.0-beta.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -9,40 +9,40 @@
9
9
  "author": "Webiny Ltd.",
10
10
  "dependencies": {
11
11
  "@apollo/react-hooks": "3.1.5",
12
- "@aws-amplify/auth": "5.6.19",
13
- "@webiny/admin-ui": "6.1.0",
14
- "@webiny/api-core": "6.1.0",
15
- "@webiny/app": "6.1.0",
16
- "@webiny/app-admin": "6.1.0",
17
- "@webiny/aws-sdk": "6.1.0",
12
+ "@webiny/admin-ui": "6.2.0-beta.0",
13
+ "@webiny/api-core": "6.2.0-beta.0",
14
+ "@webiny/app": "6.2.0-beta.0",
15
+ "@webiny/app-admin": "6.2.0-beta.0",
16
+ "@webiny/aws-sdk": "6.2.0-beta.0",
18
17
  "@webiny/di": "0.2.3",
19
- "@webiny/feature": "6.1.0",
20
- "@webiny/form": "6.1.0",
21
- "@webiny/handler-graphql": "6.1.0",
22
- "@webiny/icons": "6.1.0",
23
- "@webiny/project": "6.1.0",
24
- "@webiny/project-aws": "6.1.0",
25
- "@webiny/ui": "6.1.0",
26
- "@webiny/validation": "6.1.0",
18
+ "@webiny/feature": "6.2.0-beta.0",
19
+ "@webiny/form": "6.2.0-beta.0",
20
+ "@webiny/handler-graphql": "6.2.0-beta.0",
21
+ "@webiny/icons": "6.2.0-beta.0",
22
+ "@webiny/project": "6.2.0-beta.0",
23
+ "@webiny/project-aws": "6.2.0-beta.0",
24
+ "@webiny/ui": "6.2.0-beta.0",
25
+ "@webiny/validation": "6.2.0-beta.0",
26
+ "aws-amplify": "6.16.3",
27
27
  "graphql": "16.13.2",
28
28
  "graphql-tag": "2.12.6",
29
29
  "jsonwebtoken": "9.0.3",
30
- "lodash": "4.17.23",
30
+ "lodash": "4.18.1",
31
31
  "mobx": "6.15.0",
32
32
  "mobx-react-lite": "4.1.1",
33
- "react": "18.2.0",
33
+ "react": "18.3.1",
34
34
  "zod": "4.3.6"
35
35
  },
36
36
  "devDependencies": {
37
- "@types/react": "18.2.79",
38
- "@webiny/build-tools": "6.1.0",
39
- "@webiny/project-utils": "6.1.0",
40
- "@webiny/wcp": "6.1.0",
41
- "vitest": "4.1.2"
37
+ "@types/react": "18.3.28",
38
+ "@webiny/build-tools": "6.2.0-beta.0",
39
+ "@webiny/project-utils": "6.2.0-beta.0",
40
+ "@webiny/wcp": "6.2.0-beta.0",
41
+ "vitest": "4.1.4"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
45
45
  "directory": "dist"
46
46
  },
47
- "gitHead": "65e0ac1889b3392c99b8cac6cde508e1e831c715"
47
+ "gitHead": "3d3148358b6febbc857371930871743bec3b3939"
48
48
  }
@@ -1,3 +0,0 @@
1
- export declare enum Permission {
2
- Users = "adminUsers.user"
3
- }
@@ -1,6 +0,0 @@
1
- export let Permission = /*#__PURE__*/function (Permission) {
2
- Permission["Users"] = "adminUsers.user";
3
- return Permission;
4
- }({});
5
-
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
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":[]}