@webiny/app-admin 6.5.0 → 6.5.1-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 (74) hide show
  1. package/base/Base/DefaultFieldRenderers.js +4 -0
  2. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  3. package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
  4. package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
  5. package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
  6. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
  7. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
  8. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
  9. package/base/Base/UserMenu/SwitchTenant.d.ts +20 -0
  10. package/base/Base/UserMenu/SwitchTenant.js +45 -0
  11. package/base/Base/UserMenu/SwitchTenant.js.map +1 -0
  12. package/base/Base/UserMenu.js +4 -0
  13. package/base/Base/UserMenu.js.map +1 -1
  14. package/domain/Identity.d.ts +8 -0
  15. package/domain/Identity.js +6 -0
  16. package/domain/Identity.js.map +1 -1
  17. package/exports/admin/security.d.ts +4 -1
  18. package/exports/admin/security.js +4 -1
  19. package/features/formModel/FieldBuilder.test.js +126 -1
  20. package/features/formModel/FieldBuilder.test.js.map +1 -1
  21. package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +65 -4
  22. package/features/formModel/fieldTypes/DateTimeFieldType.js +70 -8
  23. package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
  24. package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
  25. package/features/formModel/fieldTypes/dateLimits.js +64 -0
  26. package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
  27. package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
  28. package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
  29. package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
  30. package/features/formModel/renderers.d.ts +1 -0
  31. package/features/formModel/renderers.js +1 -0
  32. package/features/security/LogIn/LogInError.d.ts +15 -0
  33. package/features/security/LogIn/LogInError.js +25 -0
  34. package/features/security/LogIn/LogInError.js.map +1 -0
  35. package/features/security/LogIn/LogInGateway.d.ts +2 -2
  36. package/features/security/LogIn/LogInGateway.js +22 -5
  37. package/features/security/LogIn/LogInGateway.js.map +1 -1
  38. package/features/security/LogIn/LogInRepository.d.ts +1 -2
  39. package/features/security/LogIn/LogInRepository.js +6 -2
  40. package/features/security/LogIn/LogInRepository.js.map +1 -1
  41. package/features/security/LogIn/LogInUseCase.d.ts +7 -2
  42. package/features/security/LogIn/LogInUseCase.js +53 -3
  43. package/features/security/LogIn/LogInUseCase.js.map +1 -1
  44. package/features/security/LogIn/LogInUseCase.test.d.ts +1 -0
  45. package/features/security/LogIn/LogInUseCase.test.js +321 -0
  46. package/features/security/LogIn/LogInUseCase.test.js.map +1 -0
  47. package/features/security/LogIn/abstractions.d.ts +48 -3
  48. package/features/security/LogIn/abstractions.js.map +1 -1
  49. package/features/security/LogIn/createLoginMutation.js +40 -27
  50. package/features/security/LogIn/createLoginMutation.js.map +1 -1
  51. package/features/security/LogIn/feature.js +2 -0
  52. package/features/security/LogIn/feature.js.map +1 -1
  53. package/features/security/LogIn/index.d.ts +1 -0
  54. package/features/security/LogIn/index.js +1 -0
  55. package/features/security/LoginTenantResolver/LoginTenantResolver.d.ts +14 -0
  56. package/features/security/LoginTenantResolver/LoginTenantResolver.js +52 -0
  57. package/features/security/LoginTenantResolver/LoginTenantResolver.js.map +1 -0
  58. package/features/security/LoginTenantResolver/abstractions.d.ts +38 -0
  59. package/features/security/LoginTenantResolver/abstractions.js +5 -0
  60. package/features/security/LoginTenantResolver/abstractions.js.map +1 -0
  61. package/features/security/LoginTenantResolver/feature.d.ts +3 -0
  62. package/features/security/LoginTenantResolver/feature.js +17 -0
  63. package/features/security/LoginTenantResolver/feature.js.map +1 -0
  64. package/features/security/LoginTenantResolver/index.d.ts +2 -0
  65. package/features/security/LoginTenantResolver/index.js +2 -0
  66. package/package.json +19 -19
  67. package/presentation/security/components/LoginNoTenantAccess.d.ts +27 -0
  68. package/presentation/security/components/LoginNoTenantAccess.js +22 -0
  69. package/presentation/security/components/LoginNoTenantAccess.js.map +1 -0
  70. package/presentation/security/components/LoginTenantPicker.d.ts +30 -0
  71. package/presentation/security/components/LoginTenantPicker.js +32 -0
  72. package/presentation/security/components/LoginTenantPicker.js.map +1 -0
  73. package/presentation/security/hooks/useAuthentication.d.ts +2 -2
  74. package/presentation/security/hooks/useAuthentication.js.map +1 -1
@@ -0,0 +1,38 @@
1
+ import type { Tenant } from "../../../features/tenancy/abstractions.js";
2
+ import type { LogInError } from "../../../features/security/LogIn/index.js";
3
+ export type LoginTenantResolution =
4
+ /** Log in again on this tenant. */
5
+ {
6
+ type: "switchTenant";
7
+ tenantId: string;
8
+ }
9
+ /** The user has to pick one of these tenants. */
10
+ | {
11
+ type: "selectTenant";
12
+ tenants: Tenant[];
13
+ }
14
+ /** The user can't access any tenant. */
15
+ | {
16
+ type: "noTenantAccess";
17
+ }
18
+ /** Nothing to switch to: the login fails. */
19
+ | {
20
+ type: "unresolved";
21
+ };
22
+ export interface ILoginTenantResolver {
23
+ /**
24
+ * Decide where to log in when the user has no access to the current tenant, but has access
25
+ * to these tenants.
26
+ */
27
+ resolveTenants(tenants: Tenant[]): Promise<LoginTenantResolution>;
28
+ /**
29
+ * Decide what to do when `security.login` fails on the current tenant.
30
+ */
31
+ resolveError(error: LogInError): Promise<LoginTenantResolution>;
32
+ }
33
+ /** Decide which tenant to log into when the user can't log into the current one. */
34
+ export declare const LoginTenantResolver: import("@webiny/di").Abstraction<ILoginTenantResolver>;
35
+ export declare namespace LoginTenantResolver {
36
+ type Interface = ILoginTenantResolver;
37
+ type Resolution = LoginTenantResolution;
38
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const LoginTenantResolver = createAbstraction("LoginTenantResolver");
3
+ export { LoginTenantResolver };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/security/LoginTenantResolver/abstractions.js","sources":["../../../../src/features/security/LoginTenantResolver/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { Tenant } from \"~/features/tenancy/abstractions.js\";\nimport type { LogInError } from \"~/features/security/LogIn/index.js\";\n\nexport type LoginTenantResolution =\n /** Log in again on this tenant. */\n | { type: \"switchTenant\"; tenantId: string }\n /** The user has to pick one of these tenants. */\n | { type: \"selectTenant\"; tenants: Tenant[] }\n /** The user can't access any tenant. */\n | { type: \"noTenantAccess\" }\n /** Nothing to switch to: the login fails. */\n | { type: \"unresolved\" };\n\nexport interface ILoginTenantResolver {\n /**\n * Decide where to log in when the user has no access to the current tenant, but has access\n * to these tenants.\n */\n resolveTenants(tenants: Tenant[]): Promise<LoginTenantResolution>;\n /**\n * Decide what to do when `security.login` fails on the current tenant.\n */\n resolveError(error: LogInError): Promise<LoginTenantResolution>;\n}\n\n/** Decide which tenant to log into when the user can't log into the current one. */\nexport const LoginTenantResolver = createAbstraction<ILoginTenantResolver>(\"LoginTenantResolver\");\n\nexport namespace LoginTenantResolver {\n export type Interface = ILoginTenantResolver;\n export type Resolution = LoginTenantResolution;\n}\n"],"names":["LoginTenantResolver","createAbstraction"],"mappings":";AA2BO,MAAMA,sBAAsBC,kBAAwC"}
@@ -0,0 +1,3 @@
1
+ export declare const LoginTenantResolverFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ resolver: import("./abstractions.js").ILoginTenantResolver;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { LoginTenantResolver } from "./abstractions.js";
3
+ import { LoginTenantResolver as external_LoginTenantResolver_js_LoginTenantResolver } from "./LoginTenantResolver.js";
4
+ const LoginTenantResolverFeature = createFeature({
5
+ name: "LoginTenantResolver",
6
+ register (container) {
7
+ container.register(external_LoginTenantResolver_js_LoginTenantResolver).inSingletonScope();
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ resolver: container.resolve(LoginTenantResolver)
12
+ };
13
+ }
14
+ });
15
+ export { LoginTenantResolverFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/security/LoginTenantResolver/feature.js","sources":["../../../../src/features/security/LoginTenantResolver/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { LoginTenantResolver as LoginTenantResolverAbstraction } from \"./abstractions.js\";\nimport { LoginTenantResolver } from \"./LoginTenantResolver.js\";\n\nexport const LoginTenantResolverFeature = createFeature({\n name: \"LoginTenantResolver\",\n register(container) {\n container.register(LoginTenantResolver).inSingletonScope();\n },\n resolve(container) {\n return {\n resolver: container.resolve(LoginTenantResolverAbstraction)\n };\n }\n});\n"],"names":["LoginTenantResolverFeature","createFeature","container","LoginTenantResolver","LoginTenantResolverAbstraction"],"mappings":";;;AAIO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,qDAAqB,gBAAgB;IAC5D;IACA,SAAQD,SAAS;QACb,OAAO;YACH,UAAUA,UAAU,OAAO,CAACE;QAChC;IACJ;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { LoginTenantResolver } from "./abstractions.js";
2
+ export { LoginTenantResolverFeature } from "./feature.js";
@@ -0,0 +1,2 @@
1
+ export { LoginTenantResolver } from "./abstractions.js";
2
+ export { LoginTenantResolverFeature } from "./feature.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-admin",
3
- "version": "6.5.0",
3
+ "version": "6.5.1-beta.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -26,24 +26,24 @@
26
26
  "@iconify/json": "2.2.544",
27
27
  "@lexical/utils": "0.52.0",
28
28
  "@types/react": "18.3.31",
29
- "@webiny/admin-ui": "6.5.0",
30
- "@webiny/app": "6.5.0",
29
+ "@webiny/admin-ui": "6.5.1-beta.0",
30
+ "@webiny/app": "6.5.1-beta.0",
31
31
  "@webiny/di": "1.1.0",
32
- "@webiny/feature": "6.5.0",
33
- "@webiny/form": "6.5.0",
34
- "@webiny/icons": "6.5.0",
35
- "@webiny/lexical-converter": "6.5.0",
36
- "@webiny/lexical-editor": "6.5.0",
37
- "@webiny/lexical-nodes": "6.5.0",
38
- "@webiny/lexical-theme": "6.5.0",
39
- "@webiny/plugins": "6.5.0",
40
- "@webiny/react-composition": "6.5.0",
41
- "@webiny/react-properties": "6.5.0",
42
- "@webiny/sdk": "6.5.0",
43
- "@webiny/telemetry": "6.5.0",
44
- "@webiny/utils": "6.5.0",
45
- "@webiny/validation": "6.5.0",
46
- "@webiny/wcp": "6.5.0",
32
+ "@webiny/feature": "6.5.1-beta.0",
33
+ "@webiny/form": "6.5.1-beta.0",
34
+ "@webiny/icons": "6.5.1-beta.0",
35
+ "@webiny/lexical-converter": "6.5.1-beta.0",
36
+ "@webiny/lexical-editor": "6.5.1-beta.0",
37
+ "@webiny/lexical-nodes": "6.5.1-beta.0",
38
+ "@webiny/lexical-theme": "6.5.1-beta.0",
39
+ "@webiny/plugins": "6.5.1-beta.0",
40
+ "@webiny/react-composition": "6.5.1-beta.0",
41
+ "@webiny/react-properties": "6.5.1-beta.0",
42
+ "@webiny/sdk": "6.5.1-beta.0",
43
+ "@webiny/telemetry": "6.5.1-beta.0",
44
+ "@webiny/utils": "6.5.1-beta.0",
45
+ "@webiny/validation": "6.5.1-beta.0",
46
+ "@webiny/wcp": "6.5.1-beta.0",
47
47
  "apollo-cache": "1.3.5",
48
48
  "apollo-client": "2.6.10",
49
49
  "apollo-link": "1.2.14",
@@ -83,7 +83,7 @@
83
83
  "@types/react-transition-group": "4.4.12",
84
84
  "@types/store": "2.0.5",
85
85
  "@types/tinycolor2": "1.4.6",
86
- "@webiny/build-tools": "6.5.0",
86
+ "@webiny/build-tools": "6.5.1-beta.0",
87
87
  "rimraf": "6.1.3",
88
88
  "typescript": "7.0.2",
89
89
  "vitest": "5.0.5"
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ export interface LoginNoTenantAccessProps {
3
+ onSignOut: () => void;
4
+ }
5
+ /**
6
+ * Shown after sign-in when the user can't access any tenant. It renders only the content:
7
+ * each login screen puts it in its own layout.
8
+ */
9
+ export declare const LoginNoTenantAccess: (({ onSignOut }: LoginNoTenantAccessProps) => React.JSX.Element) & {
10
+ original: ({ onSignOut }: LoginNoTenantAccessProps) => React.JSX.Element;
11
+ originalName: string;
12
+ displayName: string;
13
+ } & {
14
+ original: (({ onSignOut }: LoginNoTenantAccessProps) => React.JSX.Element) & {
15
+ original: ({ onSignOut }: LoginNoTenantAccessProps) => React.JSX.Element;
16
+ originalName: string;
17
+ displayName: string;
18
+ };
19
+ originalName: string;
20
+ displayName: string;
21
+ } & {
22
+ createDecorator: (decorator: import("@webiny/app").ComponentDecorator<(({ onSignOut }: LoginNoTenantAccessProps) => React.JSX.Element) & {
23
+ original: ({ onSignOut }: LoginNoTenantAccessProps) => React.JSX.Element;
24
+ originalName: string;
25
+ displayName: string;
26
+ }>) => (props: unknown) => React.JSX.Element;
27
+ };
@@ -0,0 +1,22 @@
1
+ import react from "react";
2
+ import { makeDecoratable } from "@webiny/app";
3
+ import { Button, Heading, Text } from "@webiny/admin-ui";
4
+ const LoginNoTenantAccess = makeDecoratable("LoginNoTenantAccess", ({ onSignOut })=>/*#__PURE__*/ react.createElement("div", {
5
+ "data-testid": "login-no-tenant-access"
6
+ }, /*#__PURE__*/ react.createElement("div", {
7
+ className: "mb-md"
8
+ }, /*#__PURE__*/ react.createElement(Heading, {
9
+ level: 4
10
+ }, "No access"), /*#__PURE__*/ react.createElement(Text, {
11
+ as: "div",
12
+ size: "sm",
13
+ className: "text-neutral-strong"
14
+ }, "You don't have access to any tenant. Ask an administrator to add you, or sign in with a different account.")), /*#__PURE__*/ react.createElement("div", {
15
+ className: "flex flex-row-reverse"
16
+ }, /*#__PURE__*/ react.createElement(Button, {
17
+ text: "Sign out",
18
+ onClick: onSignOut
19
+ }))));
20
+ export { LoginNoTenantAccess };
21
+
22
+ //# sourceMappingURL=LoginNoTenantAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/security/components/LoginNoTenantAccess.js","sources":["../../../../src/presentation/security/components/LoginNoTenantAccess.tsx"],"sourcesContent":["import React from \"react\";\nimport { makeDecoratable } from \"@webiny/app\";\nimport { Button, Heading, Text } from \"@webiny/admin-ui\";\n\nexport interface LoginNoTenantAccessProps {\n onSignOut: () => void;\n}\n\n/**\n * Shown after sign-in when the user can't access any tenant. It renders only the content:\n * each login screen puts it in its own layout.\n */\nexport const LoginNoTenantAccess = makeDecoratable(\n \"LoginNoTenantAccess\",\n ({ onSignOut }: LoginNoTenantAccessProps) => {\n return (\n <div data-testid={\"login-no-tenant-access\"}>\n <div className={\"mb-md\"}>\n <Heading level={4}>No access</Heading>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong\"}>\n You don&apos;t have access to any tenant. Ask an administrator to add you,\n or sign in with a different account.\n </Text>\n </div>\n <div className={\"flex flex-row-reverse\"}>\n <Button text={\"Sign out\"} onClick={onSignOut} />\n </div>\n </div>\n );\n }\n);\n"],"names":["LoginNoTenantAccess","makeDecoratable","onSignOut","Heading","Text","Button"],"mappings":";;;AAYO,MAAMA,sBAAsBC,gBAC/B,uBACA,CAAC,EAAEC,SAAS,EAA4B,GAC7B,WAAP,GACI,oBAAC;QAAI,eAAa;qBACd,oBAAC;QAAI,WAAW;qBACZ,oBAACC,SAAOA;QAAC,OAAO;OAAG,4BACnB,oBAACC,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OAAuB,8HAKnE,oBAAC;QAAI,WAAW;qBACZ,oBAACC,QAAMA;QAAC,MAAM;QAAY,SAASH"}
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import type { Tenant } from "../../../features/tenancy/abstractions.js";
3
+ export interface LoginTenantPickerProps {
4
+ tenants: Tenant[];
5
+ onSelect: (tenantId: string) => void;
6
+ onSignOut: () => void;
7
+ }
8
+ /**
9
+ * Shown after sign-in when the user can access several tenants. It renders only the content:
10
+ * each login screen puts it in its own layout.
11
+ */
12
+ export declare const LoginTenantPicker: (({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => React.JSX.Element) & {
13
+ original: ({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => React.JSX.Element;
14
+ originalName: string;
15
+ displayName: string;
16
+ } & {
17
+ original: (({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => React.JSX.Element) & {
18
+ original: ({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => React.JSX.Element;
19
+ originalName: string;
20
+ displayName: string;
21
+ };
22
+ originalName: string;
23
+ displayName: string;
24
+ } & {
25
+ createDecorator: (decorator: import("@webiny/app").ComponentDecorator<(({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => React.JSX.Element) & {
26
+ original: ({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => React.JSX.Element;
27
+ originalName: string;
28
+ displayName: string;
29
+ }>) => (props: unknown) => React.JSX.Element;
30
+ };
@@ -0,0 +1,32 @@
1
+ import react from "react";
2
+ import { makeDecoratable } from "@webiny/app";
3
+ import { Button, Heading, Link, Text } from "@webiny/admin-ui";
4
+ const LoginTenantPicker = makeDecoratable("LoginTenantPicker", ({ tenants, onSelect, onSignOut })=>/*#__PURE__*/ react.createElement("div", {
5
+ "data-testid": "login-tenant-picker"
6
+ }, /*#__PURE__*/ react.createElement("div", {
7
+ className: "mb-md"
8
+ }, /*#__PURE__*/ react.createElement(Heading, {
9
+ level: 4
10
+ }, "Select a tenant"), /*#__PURE__*/ react.createElement(Text, {
11
+ as: "div",
12
+ size: "sm",
13
+ className: "text-neutral-strong"
14
+ }, "Your account has access to several tenants. Pick the one to open.")), /*#__PURE__*/ react.createElement("div", {
15
+ className: "flex flex-col gap-sm"
16
+ }, tenants.map((tenant)=>/*#__PURE__*/ react.createElement(Button, {
17
+ key: tenant.id,
18
+ variant: "tertiary",
19
+ text: tenant.name,
20
+ className: "w-full justify-start",
21
+ onClick: ()=>onSelect(tenant.id)
22
+ }))), /*#__PURE__*/ react.createElement(Text, {
23
+ as: "div",
24
+ size: "sm",
25
+ className: "mt-md"
26
+ }, /*#__PURE__*/ react.createElement(Link, {
27
+ to: "#",
28
+ onClick: onSignOut
29
+ }, "Sign out"))));
30
+ export { LoginTenantPicker };
31
+
32
+ //# sourceMappingURL=LoginTenantPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/security/components/LoginTenantPicker.js","sources":["../../../../src/presentation/security/components/LoginTenantPicker.tsx"],"sourcesContent":["import React from \"react\";\nimport { makeDecoratable } from \"@webiny/app\";\nimport { Button, Heading, Link, Text } from \"@webiny/admin-ui\";\nimport type { Tenant } from \"~/features/tenancy/abstractions.js\";\n\nexport interface LoginTenantPickerProps {\n tenants: Tenant[];\n onSelect: (tenantId: string) => void;\n onSignOut: () => void;\n}\n\n/**\n * Shown after sign-in when the user can access several tenants. It renders only the content:\n * each login screen puts it in its own layout.\n */\nexport const LoginTenantPicker = makeDecoratable(\n \"LoginTenantPicker\",\n ({ tenants, onSelect, onSignOut }: LoginTenantPickerProps) => {\n return (\n <div data-testid={\"login-tenant-picker\"}>\n <div className={\"mb-md\"}>\n <Heading level={4}>Select a tenant</Heading>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong\"}>\n Your account has access to several tenants. Pick the one to open.\n </Text>\n </div>\n <div className={\"flex flex-col gap-sm\"}>\n {tenants.map(tenant => (\n <Button\n key={tenant.id}\n variant={\"tertiary\"}\n text={tenant.name}\n className={\"w-full justify-start\"}\n onClick={() => onSelect(tenant.id)}\n />\n ))}\n </div>\n <Text as={\"div\"} size={\"sm\"} className={\"mt-md\"}>\n <Link to=\"#\" onClick={onSignOut}>\n Sign out\n </Link>\n </Text>\n </div>\n );\n }\n);\n"],"names":["LoginTenantPicker","makeDecoratable","tenants","onSelect","onSignOut","Heading","Text","tenant","Button","Link"],"mappings":";;;AAeO,MAAMA,oBAAoBC,gBAC7B,qBACA,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,SAAS,EAA0B,GAC9C,WAAP,GACI,oBAAC;QAAI,eAAa;qBACd,oBAAC;QAAI,WAAW;qBACZ,oBAACC,SAAOA;QAAC,OAAO;OAAG,kCACnB,oBAACC,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OAAuB,qFAInE,oBAAC;QAAI,WAAW;OACXJ,QAAQ,GAAG,CAACK,CAAAA,SAAAA,WAAAA,GACT,oBAACC,QAAMA;YACH,KAAKD,OAAO,EAAE;YACd,SAAS;YACT,MAAMA,OAAO,IAAI;YACjB,WAAW;YACX,SAAS,IAAMJ,SAASI,OAAO,EAAE;4BAI7C,oBAACD,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;qBACpC,oBAACG,MAAIA;QAAC,IAAG;QAAI,SAASL;OAAW"}
@@ -1,9 +1,9 @@
1
- import type { ILoginParams } from "../../../features/security/LogIn/abstractions.js";
1
+ import type { ILoginParams, LogInResult } from "../../../features/security/LogIn/abstractions.js";
2
2
  import type { Identity } from "../../../domain/Identity.js";
3
3
  export interface IUseAuthenticationReturn {
4
4
  identity: Identity;
5
5
  isAuthenticated: boolean;
6
- login: (params: ILoginParams) => Promise<void>;
6
+ login: (params: ILoginParams) => Promise<LogInResult>;
7
7
  logout: () => Promise<void>;
8
8
  }
9
9
  export declare function useAuthentication(): IUseAuthenticationReturn;
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/security/hooks/useAuthentication.js","sources":["../../../../src/presentation/security/hooks/useAuthentication.ts"],"sourcesContent":["import { useFeature } from \"@webiny/app\";\nimport { LogInFeature } from \"~/features/security/LogIn/feature.js\";\nimport { LogOutFeature } from \"~/features/security/LogOut/index.js\";\nimport type { ILoginParams } from \"~/features/security/LogIn/abstractions.js\";\nimport { useIdentity } from \"./useIdentity.js\";\nimport type { Identity } from \"~/domain/Identity.js\";\n\nexport interface IUseAuthenticationReturn {\n identity: Identity;\n isAuthenticated: boolean;\n login: (params: ILoginParams) => Promise<void>;\n logout: () => Promise<void>;\n}\n\nexport function useAuthentication(): IUseAuthenticationReturn {\n const { useCase: logInUseCase } = useFeature(LogInFeature);\n const { useCase: logOutUseCase } = useFeature(LogOutFeature);\n const { identity, isAuthenticated } = useIdentity();\n\n return {\n login: logInUseCase.execute.bind(logInUseCase),\n logout: logOutUseCase.execute.bind(logOutUseCase),\n identity,\n isAuthenticated\n };\n}\n"],"names":["useAuthentication","logInUseCase","useFeature","LogInFeature","logOutUseCase","LogOutFeature","identity","isAuthenticated","useIdentity"],"mappings":";;;;AAcO,SAASA;IACZ,MAAM,EAAE,SAASC,YAAY,EAAE,GAAGC,WAAWC;IAC7C,MAAM,EAAE,SAASC,aAAa,EAAE,GAAGF,WAAWG;IAC9C,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAE,GAAGC;IAEtC,OAAO;QACH,OAAOP,aAAa,OAAO,CAAC,IAAI,CAACA;QACjC,QAAQG,cAAc,OAAO,CAAC,IAAI,CAACA;QACnCE;QACAC;IACJ;AACJ"}
1
+ {"version":3,"file":"presentation/security/hooks/useAuthentication.js","sources":["../../../../src/presentation/security/hooks/useAuthentication.ts"],"sourcesContent":["import { useFeature } from \"@webiny/app\";\nimport { LogInFeature } from \"~/features/security/LogIn/feature.js\";\nimport { LogOutFeature } from \"~/features/security/LogOut/index.js\";\nimport type { ILoginParams, LogInResult } from \"~/features/security/LogIn/abstractions.js\";\nimport { useIdentity } from \"./useIdentity.js\";\nimport type { Identity } from \"~/domain/Identity.js\";\n\nexport interface IUseAuthenticationReturn {\n identity: Identity;\n isAuthenticated: boolean;\n login: (params: ILoginParams) => Promise<LogInResult>;\n logout: () => Promise<void>;\n}\n\nexport function useAuthentication(): IUseAuthenticationReturn {\n const { useCase: logInUseCase } = useFeature(LogInFeature);\n const { useCase: logOutUseCase } = useFeature(LogOutFeature);\n const { identity, isAuthenticated } = useIdentity();\n\n return {\n login: logInUseCase.execute.bind(logInUseCase),\n logout: logOutUseCase.execute.bind(logOutUseCase),\n identity,\n isAuthenticated\n };\n}\n"],"names":["useAuthentication","logInUseCase","useFeature","LogInFeature","logOutUseCase","LogOutFeature","identity","isAuthenticated","useIdentity"],"mappings":";;;;AAcO,SAASA;IACZ,MAAM,EAAE,SAASC,YAAY,EAAE,GAAGC,WAAWC;IAC7C,MAAM,EAAE,SAASC,aAAa,EAAE,GAAGF,WAAWG;IAC9C,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAE,GAAGC;IAEtC,OAAO;QACH,OAAOP,aAAa,OAAO,CAAC,IAAI,CAACA;QACjC,QAAQG,cAAc,OAAO,CAAC,IAAI,CAACA;QACnCE;QACAC;IACJ;AACJ"}