Help me implement my custom registration

Hi All,
Id like to implement a change to my websites login to flow as follows:

  1. user signs up using my custom form.

  2. verification email triggers.

  3. when user clicks link in email a field in the users contact info gets updated.

  4. I then manually approve the user.

Ive been using the following code however i dont have the experience and knowledge to change to have i want it.
Can this be done?
Thanks

/*******************************
 * backend code - register.jsw *
 *******************************/
import wixUsersBackend from 'wix-users-backend';

export function doRegistration(email, password, firstName, lastName) {
  // register the user
  return wixUsersBackend.register(email, password, {
    "contactInfo": {
      "firstName": firstName,
      "lastName": lastName
    }
  } )
  .then( (results) => {
    // user is now registered and pending approval
    // send a registration verification email
    wixUsersBackend.emailUser('verifyRegistration', results.user.id, {
      "variables": {
        "name": firstName,
        "verifyLink": `http://yourdomain.com/post-register?token=${results.approvalToken}`
      }
    } );
  } );
}

export function doApproval(token) {
  // approve the user
  return wixUsersBackend.approveByToken(token)
  // user is now active, but not logged in
  // return the session token to log in the user client-side
    .then( (sessionToken) => {
      return {sessionToken, "approved": true};
    } )
    .catch( (error) => {
      return {"approved": false, "reason": error};
    } );
}

/*********************************
 * client-side registration code *
 *********************************/
import wixUsersBackend from 'wix-users';
import {doRegistration} from 'backend/register';

export function button_click(event) {
  let email = // the user's email address
  let password = // the user's password
  let firstName = // the user's first name
  let lastName = // the user's last name

  doRegistration(email, password, firstName, lastName)
    .then( () => {
      console.log("Confirmation email sent.");
    } );
}

/**************************************
 * client-side post-registration code *
 **************************************/
import wixLocation from 'wix-location';
import wixUsersBackend from 'wix-users';
import {doApproval} from 'backend/register';

$w.onReady( () => {
  // get the token from the URL
  let token = wixLocation.query.token;

  doApproval(token)
    .then( (result) => {
      if (result.approved){
        // log the user in
        wixUsersBackend.applySessionToken(result.sessionToken);
          console.log("Approved");
      }
      else {
        console.log("Not approved!");
      }
    } );
} );

To start with, you can read the three posts that are in the related posts box on this forum post, they should help you to start off with.

Also, note that there are three types of member signup, Default, Custom and Corvid.
https://support.wix.com/en/article/about-the-member-signup-form

Default and Custom are Wix windows, whereas the Corvid one is where you can make your own signup and login lightboxes.

If you use another option, then make sure that you change the member signup settings.
https://support.wix.com/en/article/corvid-enabling-custom-site-registration

Also, make sure you read the Wix Usrs Backend API and the register function.
https://www.wix.com/corvid/reference/wix-users-backend.html#register