@nauth-toolkit/core 0.1.0 → 0.1.3
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.
- package/LICENSE +90 -0
- package/README.md +30 -0
- package/package.json +7 -2
- package/jest.config.js +0 -15
- package/jest.setup.ts +0 -6
- package/src/adapters/database-columns.ts +0 -165
- package/src/adapters/express.adapter.ts +0 -385
- package/src/adapters/fastify.adapter.ts +0 -416
- package/src/adapters/index.ts +0 -16
- package/src/adapters/storage.factory.ts +0 -143
- package/src/bootstrap.ts +0 -374
- package/src/dto/auth-challenge.dto.ts +0 -231
- package/src/dto/auth-response.dto.ts +0 -253
- package/src/dto/challenge-response.dto.ts +0 -234
- package/src/dto/change-password-request.dto.ts +0 -50
- package/src/dto/change-password-response.dto.ts +0 -29
- package/src/dto/change-password.dto.ts +0 -57
- package/src/dto/error-response.dto.ts +0 -136
- package/src/dto/get-available-methods.dto.ts +0 -55
- package/src/dto/get-challenge-data-response.dto.ts +0 -28
- package/src/dto/get-challenge-data.dto.ts +0 -69
- package/src/dto/get-client-info.dto.ts +0 -104
- package/src/dto/get-device-token-response.dto.ts +0 -25
- package/src/dto/get-events-by-type.dto.ts +0 -76
- package/src/dto/get-ip-address-response.dto.ts +0 -24
- package/src/dto/get-mfa-status.dto.ts +0 -94
- package/src/dto/get-risk-assessment-history.dto.ts +0 -39
- package/src/dto/get-session-id-response.dto.ts +0 -25
- package/src/dto/get-setup-data-response.dto.ts +0 -31
- package/src/dto/get-setup-data.dto.ts +0 -75
- package/src/dto/get-suspicious-activity.dto.ts +0 -42
- package/src/dto/get-user-agent-response.dto.ts +0 -23
- package/src/dto/get-user-auth-history.dto.ts +0 -95
- package/src/dto/get-user-by-email.dto.ts +0 -61
- package/src/dto/get-user-by-id.dto.ts +0 -46
- package/src/dto/get-user-devices.dto.ts +0 -53
- package/src/dto/get-user-response.dto.ts +0 -17
- package/src/dto/has-provider.dto.ts +0 -56
- package/src/dto/index.ts +0 -57
- package/src/dto/is-trusted-device-response.dto.ts +0 -34
- package/src/dto/list-providers-response.dto.ts +0 -23
- package/src/dto/login.dto.ts +0 -95
- package/src/dto/logout-all-response.dto.ts +0 -24
- package/src/dto/logout-all.dto.ts +0 -65
- package/src/dto/logout-response.dto.ts +0 -25
- package/src/dto/logout.dto.ts +0 -64
- package/src/dto/refresh-token.dto.ts +0 -36
- package/src/dto/remove-devices.dto.ts +0 -85
- package/src/dto/resend-code-response.dto.ts +0 -32
- package/src/dto/resend-code.dto.ts +0 -51
- package/src/dto/reset-password.dto.ts +0 -115
- package/src/dto/respond-challenge.dto.ts +0 -272
- package/src/dto/set-mfa-exemption.dto.ts +0 -112
- package/src/dto/set-must-change-password-response.dto.ts +0 -27
- package/src/dto/set-must-change-password.dto.ts +0 -46
- package/src/dto/set-preferred-method.dto.ts +0 -80
- package/src/dto/setup-mfa.dto.ts +0 -98
- package/src/dto/signup.dto.ts +0 -174
- package/src/dto/social-auth.dto.ts +0 -422
- package/src/dto/trust-device-response.dto.ts +0 -30
- package/src/dto/trust-device.dto.ts +0 -9
- package/src/dto/update-user-attributes-request.dto.ts +0 -51
- package/src/dto/user-response.dto.ts +0 -138
- package/src/dto/user-update.dto.ts +0 -222
- package/src/dto/verify-email.dto.ts +0 -313
- package/src/dto/verify-mfa-code.dto.ts +0 -103
- package/src/dto/verify-phone-by-sub.dto.ts +0 -78
- package/src/dto/verify-phone.dto.ts +0 -245
- package/src/entities/auth-audit.entity.ts +0 -232
- package/src/entities/challenge-session.entity.ts +0 -116
- package/src/entities/index.ts +0 -29
- package/src/entities/login-attempt.entity.ts +0 -64
- package/src/entities/mfa-device.entity.ts +0 -151
- package/src/entities/rate-limit.entity.ts +0 -44
- package/src/entities/session.entity.ts +0 -180
- package/src/entities/social-account.entity.ts +0 -96
- package/src/entities/storage-lock.entity.ts +0 -39
- package/src/entities/trusted-device.entity.ts +0 -112
- package/src/entities/user.entity.ts +0 -243
- package/src/entities/verification-token.entity.ts +0 -141
- package/src/enums/auth-audit-event-type.enum.ts +0 -360
- package/src/enums/error-codes.enum.ts +0 -420
- package/src/enums/mfa-method.enum.ts +0 -97
- package/src/enums/risk-factor.enum.ts +0 -111
- package/src/exceptions/nauth.exception.ts +0 -231
- package/src/handlers/auth.handler.ts +0 -260
- package/src/handlers/client-info.handler.ts +0 -101
- package/src/handlers/csrf.handler.ts +0 -156
- package/src/handlers/token-delivery.handler.ts +0 -118
- package/src/index.ts +0 -118
- package/src/interfaces/client-info.interface.ts +0 -85
- package/src/interfaces/config.interface.ts +0 -2135
- package/src/interfaces/entities.interface.ts +0 -226
- package/src/interfaces/index.ts +0 -15
- package/src/interfaces/logger.interface.ts +0 -283
- package/src/interfaces/mfa-provider.interface.ts +0 -154
- package/src/interfaces/oauth.interface.ts +0 -148
- package/src/interfaces/provider.interface.ts +0 -47
- package/src/interfaces/social-auth-provider.interface.ts +0 -131
- package/src/interfaces/storage-adapter.interface.ts +0 -82
- package/src/interfaces/template.interface.ts +0 -510
- package/src/interfaces/token-verifier.interface.ts +0 -110
- package/src/internal.ts +0 -178
- package/src/platform/interfaces.ts +0 -299
- package/src/schemas/auth-config.schema.ts +0 -646
- package/src/services/adaptive-mfa-decision.service.spec.ts +0 -1058
- package/src/services/adaptive-mfa-decision.service.ts +0 -457
- package/src/services/auth-audit.service.spec.ts +0 -675
- package/src/services/auth-audit.service.ts +0 -558
- package/src/services/auth-challenge-helper.service.spec.ts +0 -3227
- package/src/services/auth-challenge-helper.service.ts +0 -825
- package/src/services/auth-flow-context-builder.service.ts +0 -520
- package/src/services/auth-flow-rules.ts +0 -202
- package/src/services/auth-flow-state-definitions.ts +0 -190
- package/src/services/auth-flow-state-machine.service.ts +0 -207
- package/src/services/auth-flow-state-machine.types.ts +0 -316
- package/src/services/auth.service.spec.ts +0 -4195
- package/src/services/auth.service.ts +0 -3727
- package/src/services/challenge.service.spec.ts +0 -1363
- package/src/services/challenge.service.ts +0 -696
- package/src/services/client-info.service.spec.ts +0 -572
- package/src/services/client-info.service.ts +0 -374
- package/src/services/csrf.service.ts +0 -54
- package/src/services/email-verification.service.spec.ts +0 -1229
- package/src/services/email-verification.service.ts +0 -578
- package/src/services/geo-location.service.spec.ts +0 -603
- package/src/services/geo-location.service.ts +0 -599
- package/src/services/index.ts +0 -13
- package/src/services/jwt.service.spec.ts +0 -882
- package/src/services/jwt.service.ts +0 -621
- package/src/services/mfa-base.service.spec.ts +0 -246
- package/src/services/mfa-base.service.ts +0 -611
- package/src/services/mfa.service.spec.ts +0 -693
- package/src/services/mfa.service.ts +0 -960
- package/src/services/password.service.spec.ts +0 -166
- package/src/services/password.service.ts +0 -309
- package/src/services/phone-verification.service.spec.ts +0 -1120
- package/src/services/phone-verification.service.ts +0 -751
- package/src/services/risk-detection.service.spec.ts +0 -1292
- package/src/services/risk-detection.service.ts +0 -1012
- package/src/services/risk-scoring.service.spec.ts +0 -204
- package/src/services/risk-scoring.service.ts +0 -131
- package/src/services/session.service.spec.ts +0 -1293
- package/src/services/session.service.ts +0 -803
- package/src/services/social-account.service.spec.ts +0 -725
- package/src/services/social-auth-base.service.spec.ts +0 -418
- package/src/services/social-auth-base.service.ts +0 -581
- package/src/services/social-auth.service.spec.ts +0 -238
- package/src/services/social-auth.service.ts +0 -436
- package/src/services/social-provider-registry.service.spec.ts +0 -238
- package/src/services/social-provider-registry.service.ts +0 -122
- package/src/services/trusted-device.service.spec.ts +0 -505
- package/src/services/trusted-device.service.ts +0 -339
- package/src/storage/account-lockout-storage.service.spec.ts +0 -310
- package/src/storage/account-lockout-storage.service.ts +0 -89
- package/src/storage/index.ts +0 -3
- package/src/storage/memory-storage.adapter.ts +0 -443
- package/src/storage/rate-limit-storage.service.spec.ts +0 -247
- package/src/storage/rate-limit-storage.service.ts +0 -38
- package/src/templates/html-template.engine.spec.ts +0 -161
- package/src/templates/html-template.engine.ts +0 -688
- package/src/templates/index.ts +0 -7
- package/src/utils/common-passwords.spec.ts +0 -230
- package/src/utils/common-passwords.ts +0 -170
- package/src/utils/context-storage.ts +0 -188
- package/src/utils/cookie-names.util.ts +0 -67
- package/src/utils/cookies.util.ts +0 -94
- package/src/utils/index.ts +0 -12
- package/src/utils/ip-extractor.spec.ts +0 -330
- package/src/utils/ip-extractor.ts +0 -220
- package/src/utils/nauth-logger.spec.ts +0 -388
- package/src/utils/nauth-logger.ts +0 -215
- package/src/utils/pii-redactor.spec.ts +0 -130
- package/src/utils/pii-redactor.ts +0 -288
- package/src/utils/setup/get-repositories.ts +0 -140
- package/src/utils/setup/init-services.ts +0 -422
- package/src/utils/setup/init-social.ts +0 -189
- package/src/utils/setup/init-storage.ts +0 -94
- package/src/utils/setup/register-mfa.ts +0 -165
- package/src/utils/setup/run-nauth-migrations.ts +0 -61
- package/src/utils/token-delivery-policy.ts +0 -38
- package/src/validators/template.validator.ts +0 -219
- package/tsconfig.json +0 -37
- package/tsconfig.lint.json +0 -6
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
import { IUser } from '../interfaces/entities.interface';
|
|
2
|
-
import { NAuthConfig } from '../interfaces/config.interface';
|
|
3
|
-
import { AuthChallenge } from '../dto/auth-challenge.dto';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Authentication flow states
|
|
7
|
-
*
|
|
8
|
-
* Represents the current state of the authentication flow.
|
|
9
|
-
* States are evaluated in priority order (1-9).
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const state = AuthFlowState.PENDING_EMAIL_VERIFICATION;
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
export enum AuthFlowState {
|
|
17
|
-
/**
|
|
18
|
-
* User must change password before continuing
|
|
19
|
-
* Priority: 1 (highest)
|
|
20
|
-
*/
|
|
21
|
-
PENDING_PASSWORD_CHANGE = 'PENDING_PASSWORD_CHANGE',
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* User must verify email address
|
|
25
|
-
* Priority: 2
|
|
26
|
-
*/
|
|
27
|
-
PENDING_EMAIL_VERIFICATION = 'PENDING_EMAIL_VERIFICATION',
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* User must provide phone number
|
|
31
|
-
* Priority: 3
|
|
32
|
-
*/
|
|
33
|
-
PENDING_PHONE_COLLECTION = 'PENDING_PHONE_COLLECTION',
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* User must verify phone number
|
|
37
|
-
* Priority: 4
|
|
38
|
-
*/
|
|
39
|
-
PENDING_PHONE_VERIFICATION = 'PENDING_PHONE_VERIFICATION',
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* User must set up MFA
|
|
43
|
-
* Priority: 5
|
|
44
|
-
*/
|
|
45
|
-
PENDING_MFA_SETUP = 'PENDING_MFA_SETUP',
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* User must verify MFA
|
|
49
|
-
* Priority: 6
|
|
50
|
-
*/
|
|
51
|
-
PENDING_MFA_VERIFICATION = 'PENDING_MFA_VERIFICATION',
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Grace period is active (MFA setup optional)
|
|
55
|
-
* Priority: 7
|
|
56
|
-
*/
|
|
57
|
-
GRACE_PERIOD_ACTIVE = 'GRACE_PERIOD_ACTIVE',
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* User is blocked from signing in
|
|
61
|
-
* Priority: 8
|
|
62
|
-
*/
|
|
63
|
-
BLOCKED = 'BLOCKED',
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Authentication complete - user is fully authenticated
|
|
67
|
-
* Priority: 9 (lowest - default state)
|
|
68
|
-
*/
|
|
69
|
-
AUTHENTICATED = 'AUTHENTICATED',
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Authentication flow context
|
|
74
|
-
*
|
|
75
|
-
* Contains all data needed to evaluate authentication flow state.
|
|
76
|
-
* Pre-computed values are stored in the `computed` property to optimize rule evaluation.
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```typescript
|
|
80
|
-
* const context: AuthFlowContext = {
|
|
81
|
-
* user,
|
|
82
|
-
* config,
|
|
83
|
-
* authMethod: 'password',
|
|
84
|
-
* computed: {
|
|
85
|
-
* isEmailVerificationRequired: true,
|
|
86
|
-
* isPhoneVerificationRequired: false,
|
|
87
|
-
* isMFAExempt: false,
|
|
88
|
-
* // ... other computed values
|
|
89
|
-
* }
|
|
90
|
-
* };
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
export interface AuthFlowContext {
|
|
94
|
-
/**
|
|
95
|
-
* User attempting authentication
|
|
96
|
-
*/
|
|
97
|
-
user: IUser;
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Authentication configuration
|
|
101
|
-
*/
|
|
102
|
-
config: NAuthConfig;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Authentication method ('password' or 'social')
|
|
106
|
-
*/
|
|
107
|
-
authMethod?: 'password' | 'social';
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Social auth provider name (e.g., 'google', 'apple', 'facebook')
|
|
111
|
-
*/
|
|
112
|
-
authProvider?: string;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Device token for trusted device check
|
|
116
|
-
*/
|
|
117
|
-
deviceToken?: string;
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Skip MFA verification flag (used for special cases like phone auto-complete)
|
|
121
|
-
*/
|
|
122
|
-
skipMFAVerification?: boolean;
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Pre-computed values for rule evaluation
|
|
126
|
-
* These are calculated once at the beginning of the flow to optimize performance.
|
|
127
|
-
*/
|
|
128
|
-
computed: {
|
|
129
|
-
/**
|
|
130
|
-
* Whether email verification is required
|
|
131
|
-
*/
|
|
132
|
-
isEmailVerificationRequired: boolean;
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Whether phone verification is required
|
|
136
|
-
*/
|
|
137
|
-
isPhoneVerificationRequired: boolean;
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Whether phone collection is needed (user has no phone)
|
|
141
|
-
*/
|
|
142
|
-
isPhoneCollectionNeeded: boolean;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Whether user is exempt from MFA
|
|
146
|
-
*/
|
|
147
|
-
isMFAExempt: boolean;
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Whether MFA setup is required
|
|
151
|
-
*/
|
|
152
|
-
isMFASetupRequired: boolean;
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Whether MFA verification is required
|
|
156
|
-
*/
|
|
157
|
-
isMFAVerificationRequired: boolean;
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Whether device is trusted
|
|
161
|
-
*/
|
|
162
|
-
isDeviceTrusted: boolean;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Whether grace period is active
|
|
166
|
-
*/
|
|
167
|
-
isGracePeriodActive: boolean;
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Grace period end timestamp (if active)
|
|
171
|
-
*/
|
|
172
|
-
gracePeriodEndsAt?: Date;
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Whether user is blocked
|
|
176
|
-
*/
|
|
177
|
-
isBlocked: boolean;
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Block expiration timestamp (if blocked)
|
|
181
|
-
*/
|
|
182
|
-
blockedUntil?: Date;
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Block reason (if blocked)
|
|
186
|
-
*/
|
|
187
|
-
blockReason?: string;
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Risk score (0-100) for adaptive MFA
|
|
191
|
-
*/
|
|
192
|
-
riskScore?: number;
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Risk level ('low' | 'medium' | 'high')
|
|
196
|
-
*/
|
|
197
|
-
riskLevel?: 'low' | 'medium' | 'high';
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Rule function type
|
|
203
|
-
*
|
|
204
|
-
* A rule is a function that evaluates to true or false based on the context.
|
|
205
|
-
* Rules can be combined using RuleBuilder combinators (all, any, not).
|
|
206
|
-
*
|
|
207
|
-
* @param context - Authentication flow context
|
|
208
|
-
* @returns True if rule condition is met, false otherwise
|
|
209
|
-
*
|
|
210
|
-
* @example
|
|
211
|
-
* ```typescript
|
|
212
|
-
* const mustChangePassword: Rule = (context) => {
|
|
213
|
-
* return context.user.mustChangePassword === true;
|
|
214
|
-
* };
|
|
215
|
-
* ```
|
|
216
|
-
*/
|
|
217
|
-
export type Rule = (context: AuthFlowContext) => boolean;
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Response metadata
|
|
221
|
-
*
|
|
222
|
-
* Additional information to include in the authentication response.
|
|
223
|
-
* Used for special states like grace period and blocked state.
|
|
224
|
-
*
|
|
225
|
-
* @example
|
|
226
|
-
* ```typescript
|
|
227
|
-
* const metadata: ResponseMetadata = {
|
|
228
|
-
* gracePeriodEndsAt: new Date('2024-01-15'),
|
|
229
|
-
* riskScore: 45,
|
|
230
|
-
* riskLevel: 'medium'
|
|
231
|
-
* };
|
|
232
|
-
* ```
|
|
233
|
-
*/
|
|
234
|
-
export interface ResponseMetadata {
|
|
235
|
-
/**
|
|
236
|
-
* Grace period end timestamp
|
|
237
|
-
*/
|
|
238
|
-
gracePeriodEndsAt?: Date;
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Risk score (0-100)
|
|
242
|
-
*/
|
|
243
|
-
riskScore?: number;
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Risk level
|
|
247
|
-
*/
|
|
248
|
-
riskLevel?: 'low' | 'medium' | 'high';
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Block expiration timestamp
|
|
252
|
-
*/
|
|
253
|
-
blockedUntil?: Date;
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Block reason
|
|
257
|
-
*/
|
|
258
|
-
reason?: string;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* State definition
|
|
263
|
-
*
|
|
264
|
-
* Defines a state in the authentication flow, including:
|
|
265
|
-
* - Priority (evaluation order)
|
|
266
|
-
* - Condition rule (when this state applies)
|
|
267
|
-
* - Challenge mapping (which AuthChallenge this state maps to)
|
|
268
|
-
* - Metadata builder (optional additional response data)
|
|
269
|
-
* - OnEnter hook (optional action when state is entered)
|
|
270
|
-
*
|
|
271
|
-
* @example
|
|
272
|
-
* ```typescript
|
|
273
|
-
* const stateDef: StateDefinition = {
|
|
274
|
-
* state: AuthFlowState.PENDING_EMAIL_VERIFICATION,
|
|
275
|
-
* priority: 2,
|
|
276
|
-
* condition: Rules.emailVerificationPending,
|
|
277
|
-
* challenge: AuthChallenge.VERIFY_EMAIL,
|
|
278
|
-
* };
|
|
279
|
-
* ```
|
|
280
|
-
*/
|
|
281
|
-
export interface StateDefinition {
|
|
282
|
-
/**
|
|
283
|
-
* State identifier
|
|
284
|
-
*/
|
|
285
|
-
state: AuthFlowState;
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Priority (1-9, lower = higher priority)
|
|
289
|
-
* States are evaluated in priority order
|
|
290
|
-
*/
|
|
291
|
-
priority: number;
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Condition rule that determines if this state applies
|
|
295
|
-
*/
|
|
296
|
-
condition: Rule;
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* Challenge type this state maps to (if applicable)
|
|
300
|
-
* Undefined for AUTHENTICATED and GRACE_PERIOD_ACTIVE states
|
|
301
|
-
*/
|
|
302
|
-
challenge?: AuthChallenge;
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Build metadata for response (optional)
|
|
306
|
-
* Used for states that need to include additional information
|
|
307
|
-
*/
|
|
308
|
-
buildMetadata?: (context: AuthFlowContext) => ResponseMetadata | undefined;
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* OnEnter hook (optional)
|
|
312
|
-
* Executed when this state is entered
|
|
313
|
-
* Can modify context (e.g., set skipMFAVerification flag)
|
|
314
|
-
*/
|
|
315
|
-
onEnter?: (context: AuthFlowContext) => Promise<void> | void;
|
|
316
|
-
}
|