@oneblink/apps-react 10.3.1 → 11.0.0-beta.10

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 (69) hide show
  1. package/dist/apps/auth-service.d.ts +15 -7
  2. package/dist/apps/auth-service.js +18 -8
  3. package/dist/apps/auth-service.js.map +1 -1
  4. package/dist/apps/index.d.ts +10 -0
  5. package/dist/apps/index.js +10 -0
  6. package/dist/apps/index.js.map +1 -1
  7. package/dist/apps/mfa-service.d.ts +29 -0
  8. package/dist/apps/mfa-service.js +30 -0
  9. package/dist/apps/mfa-service.js.map +1 -0
  10. package/dist/apps/services/AWSCognitoClient.d.ts +43 -5
  11. package/dist/apps/services/AWSCognitoClient.js +249 -26
  12. package/dist/apps/services/AWSCognitoClient.js.map +1 -1
  13. package/dist/apps/services/cognito.d.ts +42 -52
  14. package/dist/apps/services/cognito.js +68 -60
  15. package/dist/apps/services/cognito.js.map +1 -1
  16. package/dist/components/mfa/MfaAuthenticatorAppDialog.d.ts +12 -0
  17. package/dist/components/mfa/MfaAuthenticatorAppDialog.js +64 -0
  18. package/dist/components/mfa/MfaAuthenticatorAppDialog.js.map +1 -0
  19. package/dist/components/mfa/MfaDisableDialog.d.ts +10 -0
  20. package/dist/components/mfa/MfaDisableDialog.js +31 -0
  21. package/dist/components/mfa/MfaDisableDialog.js.map +1 -0
  22. package/dist/components/mfa/MfaErrorSnackbar.d.ts +10 -0
  23. package/dist/components/mfa/MfaErrorSnackbar.js +17 -0
  24. package/dist/components/mfa/MfaErrorSnackbar.js.map +1 -0
  25. package/dist/components/mfa/MfaMethodRow.d.ts +20 -0
  26. package/dist/components/mfa/MfaMethodRow.js +10 -0
  27. package/dist/components/mfa/MfaMethodRow.js.map +1 -0
  28. package/dist/components/mfa/MfaPhoneNumberDialog.d.ts +11 -0
  29. package/dist/components/mfa/MfaPhoneNumberDialog.js +95 -0
  30. package/dist/components/mfa/MfaPhoneNumberDialog.js.map +1 -0
  31. package/dist/components/mfa/MfaRemovePhoneNumberDialog.d.ts +10 -0
  32. package/dist/components/mfa/MfaRemovePhoneNumberDialog.js +24 -0
  33. package/dist/components/mfa/MfaRemovePhoneNumberDialog.js.map +1 -0
  34. package/dist/components/mfa/MfaStatusChip.d.ts +10 -0
  35. package/dist/components/mfa/MfaStatusChip.js +29 -0
  36. package/dist/components/mfa/MfaStatusChip.js.map +1 -0
  37. package/dist/components/mfa/MfaSuccessSnackbar.d.ts +10 -0
  38. package/dist/components/mfa/MfaSuccessSnackbar.js +17 -0
  39. package/dist/components/mfa/MfaSuccessSnackbar.js.map +1 -0
  40. package/dist/components/mfa/MultiFactorAuthentication.d.ts +10 -10
  41. package/dist/components/mfa/MultiFactorAuthentication.js +46 -40
  42. package/dist/components/mfa/MultiFactorAuthentication.js.map +1 -1
  43. package/dist/form-elements/FormElementBarcodeScanner.js +66 -18
  44. package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
  45. package/dist/hooks/useLogin.d.ts +28 -8
  46. package/dist/hooks/useLogin.js +67 -7
  47. package/dist/hooks/useLogin.js.map +1 -1
  48. package/dist/hooks/useMfa.d.ts +98 -31
  49. package/dist/hooks/useMfa.js +436 -68
  50. package/dist/hooks/useMfa.js.map +1 -1
  51. package/dist/hooks/useResendCoolDown.d.ts +5 -0
  52. package/dist/hooks/useResendCoolDown.js +27 -0
  53. package/dist/hooks/useResendCoolDown.js.map +1 -0
  54. package/dist/index.d.ts +9 -0
  55. package/dist/index.js +9 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/styles/barcode-scanner.scss +4 -0
  58. package/dist/styles.css +5 -0
  59. package/dist/styles.scss +1 -0
  60. package/dist/utils/joinArray.d.ts +1 -0
  61. package/dist/utils/joinArray.js +7 -0
  62. package/dist/utils/joinArray.js.map +1 -0
  63. package/dist/utils/mfa-requirement.d.ts +12 -0
  64. package/dist/utils/mfa-requirement.js +100 -0
  65. package/dist/utils/mfa-requirement.js.map +1 -0
  66. package/package.json +4 -4
  67. package/dist/components/mfa/MfaDialog.d.ts +0 -9
  68. package/dist/components/mfa/MfaDialog.js +0 -47
  69. package/dist/components/mfa/MfaDialog.js.map +0 -1
@@ -1,22 +1,42 @@
1
1
  import * as React from 'react';
2
- import { authService } from '../apps';
2
+ import { mfaService } from '../apps';
3
+ import { MiscTypes } from '@oneblink/types';
3
4
  type MfaState = {
4
5
  isExternalIdentityProviderUser: boolean;
5
6
  isLoading: boolean;
6
7
  isMfaEnabled: boolean;
8
+ mfaSettings: mfaService.MfaSettings;
9
+ isSetupSuccessOpen: boolean;
7
10
  loadingError?: Error;
8
11
  isSettingUpMfa: boolean;
9
- isDisablingMfa: boolean;
12
+ settingUpMfaMethod?: mfaService.MfaMethod;
13
+ isSetupMethodDialogOpen: boolean;
14
+ disablingMfaMethod?: mfaService.MfaMethod;
15
+ isSettingPreferredMfaMethod: boolean;
10
16
  setupError?: Error;
11
- mfaSetup?: Awaited<ReturnType<typeof authService.setupMfa>>;
17
+ mfaAuthenticatorAppSetup?: Awaited<ReturnType<typeof mfaService.setupMfaAuthenticatorApp>>;
18
+ isPhoneNumberDialogOpen: boolean;
19
+ phoneVerificationCodeSentAt?: number;
20
+ isRemovePhoneNumberDialogOpen: boolean;
12
21
  };
13
22
  export declare const MfaContext: React.Context<MfaState & {
14
- beginMfaSetup: () => void;
15
- cancelMfaSetup: () => void;
16
- completeMfaSetup: () => void;
17
- beginDisablingMfa: () => void;
23
+ beginMfaSetup: (mfaMethod: mfaService.MfaMethod) => Promise<void>;
24
+ openMfaSetupMethodDialog: () => void;
25
+ closeMfaSetupMethodDialog: () => void;
26
+ beginDisablingMfaMethod: (mfaMethod: mfaService.MfaMethod) => void;
27
+ setPreferredMfaMethod: (mfaMethod: mfaService.MfaMethod) => Promise<void>;
28
+ openPhoneNumberDialog: () => void;
29
+ closePhoneNumberDialog: () => void;
30
+ savePhoneNumber: (phoneNumber: string) => Promise<void>;
31
+ verifyPhoneNumber: (code: string) => Promise<void>;
32
+ beginRemovingPhoneNumber: () => void;
33
+ cancelRemovingPhoneNumber: () => void;
34
+ completeRemovingPhoneNumber: () => Promise<void>;
35
+ hideSetupSuccess: () => void;
36
+ cancelMfaAuthenticatorAppSetup: () => void;
37
+ completeMfaAuthenticatorAppSetup: () => Promise<void>;
18
38
  cancelDisablingMfa: () => void;
19
- completeDisablingMfa: () => void;
39
+ completeDisablingMfa: () => Promise<void>;
20
40
  clearMfaSetupError: () => void;
21
41
  loadMfa: () => void;
22
42
  }>;
@@ -36,23 +56,36 @@ export declare const MfaContext: React.Context<MfaState & {
36
56
  * useUserMeetsMfaRequirement,
37
57
  * } from '@oneblink/apps-react'
38
58
  *
39
- * function Component() {
40
- * const { isLoading, userMeetsMfaRequirement } =
41
- * useUserMeetsMfaRequirement(true)
42
- * // use MFA Requirement details here
59
+ * function Component({ teamMemberMfaRequirement }) {
60
+ * const { mfaSetupRequired, isLoading, loadingError, refreshMfa } =
61
+ * useUserMeetsMfaRequirement(teamMemberMfaRequirement)
62
+ *
63
+ * if (isLoading) {
64
+ * return <Loading />
65
+ * }
66
+ *
67
+ * if (loadingError) {
68
+ * return <Error onRetry={refreshMfa} />
69
+ * }
70
+ *
71
+ * if (mfaSetupRequired) {
72
+ * return <ConfigureMfa />
73
+ * }
74
+ *
75
+ * return <Application />
43
76
  * }
44
77
  *
45
- * function App() {
78
+ * function App({ teamMemberMfaRequirement }) {
46
79
  * return (
47
80
  * <MfaProvider isExternalIdentityProviderUser={false}>
48
- * <Component />
81
+ * <Component teamMemberMfaRequirement={teamMemberMfaRequirement} />
49
82
  * </MfaProvider>
50
83
  * )
51
84
  * }
52
85
  *
53
86
  * const root = document.getElementById('root')
54
87
  * if (root) {
55
- * ReactDOM.render(<App />, root)
88
+ * ReactDOM.render(<App teamMemberMfaRequirement={mfaRequirement} />, root)
56
89
  * }
57
90
  * ```
58
91
  *
@@ -65,35 +98,69 @@ export declare function MfaProvider({ children, isExternalIdentityProviderUser,
65
98
  isExternalIdentityProviderUser: boolean;
66
99
  }): import("react/jsx-runtime").JSX.Element;
67
100
  export default function useMfa(): MfaState & {
68
- beginMfaSetup: () => void;
69
- cancelMfaSetup: () => void;
70
- completeMfaSetup: () => void;
71
- beginDisablingMfa: () => void;
101
+ beginMfaSetup: (mfaMethod: mfaService.MfaMethod) => Promise<void>;
102
+ openMfaSetupMethodDialog: () => void;
103
+ closeMfaSetupMethodDialog: () => void;
104
+ beginDisablingMfaMethod: (mfaMethod: mfaService.MfaMethod) => void;
105
+ setPreferredMfaMethod: (mfaMethod: mfaService.MfaMethod) => Promise<void>;
106
+ openPhoneNumberDialog: () => void;
107
+ closePhoneNumberDialog: () => void;
108
+ savePhoneNumber: (phoneNumber: string) => Promise<void>;
109
+ verifyPhoneNumber: (code: string) => Promise<void>;
110
+ beginRemovingPhoneNumber: () => void;
111
+ cancelRemovingPhoneNumber: () => void;
112
+ completeRemovingPhoneNumber: () => Promise<void>;
113
+ hideSetupSuccess: () => void;
114
+ cancelMfaAuthenticatorAppSetup: () => void;
115
+ completeMfaAuthenticatorAppSetup: () => Promise<void>;
72
116
  cancelDisablingMfa: () => void;
73
- completeDisablingMfa: () => void;
117
+ completeDisablingMfa: () => Promise<void>;
74
118
  clearMfaSetupError: () => void;
75
119
  loadMfa: () => void;
76
120
  };
77
121
  /**
78
- * React hook to check if the logged in user meets the MFA requirement of your
79
- * application. Will throw an Error if used outside of the `<MfaProvider />`
80
- * component.
122
+ * React hook to determine whether the logged in user must set up MFA before
123
+ * accessing your application. Reads MFA settings from the `<MfaProvider />`
124
+ * context. Will throw an Error if used outside of `<MfaProvider />`.
125
+ *
126
+ * Users signed in via an external identity provider are not required to set up
127
+ * MFA.
81
128
  *
82
- * Example
129
+ * #### Example
83
130
  *
84
131
  * ```js
85
- * import { useUserMeetsMfaRequirement } from '@oneblink/apps-react'
132
+ * import { MfaProvider, useUserMeetsMfaRequirement } from '@oneblink/apps-react'
86
133
  *
87
- * const isMfaRequired = true
134
+ * function Component({ teamMemberMfaRequirement }) {
135
+ * const { mfaSetupRequired, isLoading, loadingError, refreshMfa } =
136
+ * useUserMeetsMfaRequirement(teamMemberMfaRequirement)
88
137
  *
89
- * function Component() {
90
- * const userMeetsMfaRequirement =
91
- * useUserMeetsMfaRequirement(isMfaRequired)
138
+ * if (isLoading) {
139
+ * return <Loading />
140
+ * }
141
+ *
142
+ * if (loadingError) {
143
+ * return <Error onRetry={refreshMfa} />
144
+ * }
145
+ *
146
+ * if (mfaSetupRequired) {
147
+ * return <ConfigureMfa />
148
+ * }
149
+ *
150
+ * return <Application />
92
151
  * }
93
152
  * ```
94
153
  *
95
- * @returns
154
+ * @param mfaRequirement - The MFA requirement to enforce, e.g. from your
155
+ * organisation or app settings.
156
+ * @returns Whether MFA setup is required, along with loading state from the MFA
157
+ * provider.
96
158
  * @group Hooks
97
159
  */
98
- export declare function useUserMeetsMfaRequirement(isMfaRequired: boolean): boolean;
160
+ export declare function useUserMeetsMfaRequirement(mfaRequirement: MiscTypes.MfaRequirement | undefined): {
161
+ mfaSetupRequired: boolean;
162
+ isLoading: boolean;
163
+ loadingError: Error | undefined;
164
+ refreshMfa: () => void;
165
+ };
99
166
  export {};