setUserMFAPreference method

Future<void> setUserMFAPreference({
  1. required String accessToken,
  2. SMSMfaSettingsType? sMSMfaSettings,
  3. SoftwareTokenMfaSettingsType? softwareTokenMfaSettings,
})

Set the user's multi-factor authentication (MFA) method preference, including which MFA factors are enabled and if any are preferred. Only one factor can be set as preferred. The preferred MFA factor will be used to authenticate a user if multiple factors are enabled. If multiple options are enabled and no preference is set, a challenge to choose an MFA option will be returned during sign in. If an MFA type is enabled for a user, the user will be prompted for MFA during all sign in attempts, unless device tracking is turned on and the device has been trusted. If you would like MFA to be applied selectively based on the assessed risk level of sign in attempts, disable MFA for users and turn on Adaptive Authentication for the user pool.

May throw ResourceNotFoundException. May throw InvalidParameterException. May throw NotAuthorizedException. May throw PasswordResetRequiredException. May throw UserNotFoundException. May throw UserNotConfirmedException. May throw InternalErrorException.

Parameter accessToken : The access token for the user.

Parameter sMSMfaSettings : The SMS text message multi-factor authentication (MFA) settings.

Parameter softwareTokenMfaSettings : The time-based one-time password software token MFA settings.

Implementation

Future<void> setUserMFAPreference({
  required String accessToken,
  SMSMfaSettingsType? sMSMfaSettings,
  SoftwareTokenMfaSettingsType? softwareTokenMfaSettings,
}) async {
  ArgumentError.checkNotNull(accessToken, 'accessToken');
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSCognitoIdentityProviderService.SetUserMFAPreference'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'AccessToken': accessToken,
      if (sMSMfaSettings != null) 'SMSMfaSettings': sMSMfaSettings,
      if (softwareTokenMfaSettings != null)
        'SoftwareTokenMfaSettings': softwareTokenMfaSettings,
    },
  );
}