verify method

Future<AuthMFAVerifyResponse> verify({
  1. required String factorId,
  2. required String challengeId,
  3. required String code,
})

Verifies a code against a challengeId.

The verification code is provided by the user by entering a code seen in their authenticator app.

Implementation

Future<AuthMFAVerifyResponse> verify({
  required String factorId,
  required String challengeId,
  required String code,
}) async {
  final session = _client.currentSession;

  final data = await _fetch.request(
    '${_client._url}/factors/$factorId/verify',
    RequestMethodType.post,
    options: GotrueRequestOptions(
      headers: _client._headers,
      body: {
        'challenge_id': challengeId,
        'code': code,
      },
      jwt: session?.accessToken,
    ),
  );

  final response = AuthMFAVerifyResponse.fromJson(data);
  _client._saveSession(
    Session(
      accessToken: response.accessToken,
      tokenType: response.tokenType,
      user: response.user,
      expiresIn: response.expiresIn.inSeconds,
      refreshToken: response.refreshToken,
    ),
  );
  _client.notifyAllSubscribers(AuthChangeEvent.mfaChallengeVerified);
  return response;
}