Name

global.PwdResetHelper

Description

Generic helper methods related to password reset

Script

var PwdResetHelper = Class.create();

// @return {boolean} specifying if the new password is strong or not
PwdResetHelper.validateNewPasswordComplexity = function(processId, newPasswd) {
  var credMgr = new SNC.PwdCredentialStoreManager();
  var credId = credMgr.getCredentialStoreIdByProcessId(processId);

  var credGr = new GlideRecord('pwd_cred_store');
  if (credGr.get(credId)) {
      var pwdRule = credGr.getValue('pwd_rule');
      var pwdRuleCall = pwdRule + '\nisPasswordValid(password);';
      credGr.setValue('pwd_rule', pwdRuleCall);
      var vars = {
          'password': newPasswd
      };

      var evaluator = new GlideScopedEvaluator();
      var pwdValid = evaluator.evaluateScript(credGr, 'pwd_rule', vars);
      if (pwdValid) {
          return true;
      }
  }
  return false;
};

/**
  Execute the post processor script include
  @param {String} requestId
  @param {String} processId
  @param {boolean} wfSuccess
  @return {"status":, "message":, "value":}
*/
PwdResetHelper.executePostProcessorScript = function(requestId, processId, wfSuccess) {

  if (gs.nil(processId) || gs.nil(requestId))
      return {
          status: 'failure',
          message: 'Either process id or request id is null',
          value: ''
      };

  // If wfSuccess is null, we will consider it as false
  wfSuccess = !gs.nil(wfSuccess);

  var LOG_ID = "[PwdAjaxWFRequestProcessor:runPostProcessor] ";
  var trackingMgr = new SNC.PwdTrackingManager();

  var gr = new GlideRecord('pwd_process');
  if (!gr.get(processId)) {
      var errorMsg = "Cannot load the process: " + processId;
      trackingMgr.createActivity(PwdConstants.TYPE_WARNING, PwdConstants.STAGE_RESET, errorMsg, requestId);
      var responseErrorMsg = gs.getMessage("{0} Cannot load the process: {1}", [LOG_ID, processId]);
      return {
          status: 'failure',
          message: responseErrorMsg,
          value: ''
      };
  }

  if (!gs.nil(gr.post_processor)) {
      var postProcessorId = gr.post_processor;
      var postProcessorName = gr.post_processor.name;

      try {
          // Invoke the post process script include selected on the process    
          // published interface for the password_reset.extension.post_rest_script extensions (see pwd_extension_type) is:
          //
          // @param params.resetRequestId The sys-id of the current password-reset request (table: pwd_reset_request)
          // @param params.wfSuccess      A flag indicating if workflow completed sucessfully. True if (and only if) sucessful.
          // @return no return value
          var params = new SNC.PwdExtensionScriptParameter();
          params.resetRequestId = requestId;
          params.wfSuccess = wfSuccess;
          var postResetExtension = new SNC.PwdExtensionScript(postProcessorId);

          var infoMsg = "Starting post-processor script: " + postProcessorName;
          trackingMgr.createActivity(PwdConstants.TYPE_INFO, PwdConstants.STAGE_RESET, infoMsg, requestId);
          postResetExtension.process(params);
      } catch (error) {
          var exceptionMsg = gs.getMessage("Error while executing post-processor script: {0}. Error:{1}", [postProcessorName, error]);
          trackingMgr.createActivity(PwdConstants.TYPE_INFO, PwdConstants.STAGE_RESET, exceptionMsg, requestId);
          var responseExceptionMsg = gs.getMessage("{0} Error while executing post-processor script {1}. Error: {2}",
              [LOG_ID, postProcessorName, error]);
          return {
              status: 'failure',
              message: responseExceptionMsg,
              value: ''
          };
      }

      var successMsg = gs.getMessage("Completed post-processor script: {0}", postProcessorName);
      trackingMgr.createActivity(PwdConstants.TYPE_INFO, PwdConstants.STAGE_RESET, successMsg, requestId);
      var responseSuccessMsg = gs.getMessage("{0} Completed post-processor script: {1}", [LOG_ID, postProcessorName]);
      return {
          status: 'success',
          message: responseSuccessMsg,
          value: ''
      };
  }
};
//Check if midserver is running.
PwdResetHelper.IsMidRunning = function(procId) {

  // Check if midserver is runnign if process uses Active directory
  var procGr = new GlideRecord('pwd_process');
  procGr.get(procId);
  var credStoreId = procGr.getValue('cred_store');
  var pwdCredStor = new GlideRecord('pwd_cred_store');
  pwdCredStor.get(credStoreId);
  var credStoreType = pwdCredStor.getValue('type');

  //Active Directory credential store type.
  var pwdCredStoreType = '94d5b6debf440100710071a7bf0739d9';
  var midServerRunning = true;

  if (credStoreType == pwdCredStoreType) {
      midServerRunning = false;
      var eccAgent = new GlideRecord('ecc_agent');
      eccAgent.query();
      while (eccAgent.next()) {
          var agentId = eccAgent.getUniqueValue();
          var agentCapability = new GlideRecord('ecc_agent_capability_m2m');
          agentCapability.addQuery('agent', agentId);
          var reqCapabilities = agentCapability.addQuery('capability', '427709a60a0006bc7d2904e99132532d');
          reqCapabilities.addOrCondition('capability', 'eeab973fd7802200bdbaee5b5e610381');
          agentCapability.query();
          if (agentCapability.hasNext()) {
              var midServerStatus = eccAgent.getValue('status');
              var midServervalidated = eccAgent.getValue('validated');
              if ((midServerStatus == 'Up') && (midServervalidated == 'true')) {
                  midServerRunning = true;
                  break;
              }
          }
      }
  }
  return midServerRunning;
};

//check if the cred store type record has test connection subflow mapping
PwdResetHelper.connectionSubflowMapped = function(credStoreTypeSysId) {
  var gr = new GlideRecord("pwd_cred_store_type");
  gr.get(credStoreTypeSysId);

  return (!gr.use_flow || (gr.use_flow && !gs.nil(gr.conn_test_flow)));
};

Sys ID

3a189a5187020300635fe54ea6cb0bc1

Offical Documentation

Official Docs: