Using amazon-cognito-identity-js how do I setup MFA (SMS) setUserMfaPreference on demand after login

183 Views Asked by At

I am really in need of help and hit the road block . Please help me out.

Using amazon-cognito-identity-js how do I setup MFA (SMS) setUserMfaPreference on demand after login in angular.

After I login , a customer can enable / disable mfa based on their preferences. But all references I see are during the login or while registering a user. My problem is , user is already logged in and I don't want to use authenticateUser method like I did below. Can I use any id token to validate or some session token to say that it is valid request .Please let me know if you have any leads.


`
`import { 
    CognitoUser, 
    CognitoUserPool, 
    AuthenticationDetails, 
    CognitoUserSession, 
    CognitoUserAttribute 
  } from 'amazon-cognito-identity-js';

 setUserMfaPreference(request:any): Promise<any> {

  return new Promise((resolve,reject) => {
    const params = {
      UserPoolId: environment.cognitoUserPoolId,
      Username: request['username'],
      SMSMfaSettings: {
        Enabled: true,
        PreferredMfa: true,
      },
    };
    let userPool = new CognitoUserPool(CognitoAuthService.POOL_DATA);
    console.log("userPool"+userPool);
   
  var userData = {
    Username: request.userName,
    Pool: userPool,
  };
  
  let cognitoUser = new CognitoUser(userData);
  return new Promise((resolve,reject) => {
    let authenticationData = {
      Username : request.userName,
      Password : "XXXXXXX",
  };
  const authenticationDetails = new AuthenticationDetails(authenticationData);
    cognitoUser.authenticateUser(authenticationDetails, {
      onSuccess: (session) => {
        // Step 2: User is authenticated. Set the MFA preference.
        const smsMfaSettings = {
          PreferredMfa: true,
          Enabled: true,
        };
        
        cognitoUser.setUserMfaPreference(smsMfaSettings, null, function(err, result) {
          if (err) {
            alert(err.message || JSON.stringify(err));
          } else {
            console.log('MFA preference set successfully:', result);
          }
        });
      },
      onFailure: (err) => {
        console.log('Error authenticating user:', err);
      },
    });
  });
  });
}`
0

There are 0 best solutions below