adminResetUserPassword method

Future<void> adminResetUserPassword({
  1. required String userPoolId,
  2. required String username,
  3. Map<String, String>? clientMetadata,
})

Resets the specified user's password in a user pool as an administrator. Works on any user.

When a developer calls this API, the current password is invalidated, so it must be changed. If a user tries to sign in after the API is called, the app will get a PasswordResetRequiredException exception back and should direct the user down the flow to reset the password, which is the same as the forgot password flow. In addition, if the user pool has phone verification selected and a verified phone number exists for the user, or if email verification is selected and a verified email exists for the user, calling this API will also result in sending a message to the end user with the code to change their password.

Calling this action requires developer credentials.

May throw ResourceNotFoundException. May throw InvalidParameterException. May throw UnexpectedLambdaException. May throw UserLambdaValidationException. May throw NotAuthorizedException. May throw InvalidLambdaResponseException. May throw TooManyRequestsException. May throw LimitExceededException. May throw UserNotFoundException. May throw InvalidSmsRoleAccessPolicyException. May throw InvalidEmailRoleAccessPolicyException. May throw InvalidSmsRoleTrustRelationshipException. May throw InternalErrorException.

Parameter userPoolId : The user pool ID for the user pool where you want to reset the user's password.

Parameter username : The user name of the user whose password you wish to reset.

Parameter clientMetadata : A map of custom key-value pairs that you can provide as input for any custom workflows that this action triggers.

You create custom workflows by assigning AWS Lambda functions to user pool triggers. When you use the AdminResetUserPassword API action, Amazon Cognito invokes the function that is assigned to the custom message trigger. When Amazon Cognito invokes this function, it passes a JSON payload, which the function receives as input. This payload contains a clientMetadata attribute, which provides the data that you assigned to the ClientMetadata parameter in your AdminResetUserPassword request. In your function code in AWS Lambda, you can process the clientMetadata value to enhance your workflow for your specific needs.

For more information, see Customizing User Pool Workflows with Lambda Triggers in the Amazon Cognito Developer Guide.

  • Amazon Cognito does not store the ClientMetadata value. This data is available only to AWS Lambda triggers that are assigned to a user pool to support custom workflows. If your user pool configuration does not include triggers, the ClientMetadata parameter serves no purpose.
  • Amazon Cognito does not validate the ClientMetadata value.
  • Amazon Cognito does not encrypt the the ClientMetadata value, so don't use it to provide sensitive information.

Implementation

Future<void> adminResetUserPassword({
  required String userPoolId,
  required String username,
  Map<String, String>? clientMetadata,
}) async {
  ArgumentError.checkNotNull(userPoolId, 'userPoolId');
  _s.validateStringLength(
    'userPoolId',
    userPoolId,
    1,
    55,
    isRequired: true,
  );
  ArgumentError.checkNotNull(username, 'username');
  _s.validateStringLength(
    'username',
    username,
    1,
    128,
    isRequired: true,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSCognitoIdentityProviderService.AdminResetUserPassword'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'UserPoolId': userPoolId,
      'Username': username,
      if (clientMetadata != null) 'ClientMetadata': clientMetadata,
    },
  );
}