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

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