verifyOtp method
Verifies an OTP code for identifier, storing the resulting session on success.
Implementation
Future<LoginResult> verifyOtp({
required String identifier,
required String code,
}) async {
final uri = auth.baseUrl.resolve('/auth/otp/verify');
final response = await auth.dio.post<dynamic>(
uri.toString(),
data: {'identifier': identifier, 'code': code},
options: Options(headers: {'Accept': 'application/json'}),
);
final data = response.data;
if (data is Map<String, dynamic>) {
final mfaRequired =
data['mfa_required'] == true || data['requires_mfa'] == true;
final challengeId = (data['challenge_id'] ?? data['challengeId'])
?.toString();
if (mfaRequired && challengeId != null && challengeId.isNotEmpty) {
return SecondFactorRequiredResult(challengeId);
}
}
final session = auth.endpoints.parseSession(data);
await auth.store.write(session);
await auth.restore();
return AuthenticatedResult(session);
}