Name

global.GlideOneTimePasswordGenerator

Description

No description available

Script

var GlideOneTimePasswordGenerator = Class.create();
GlideOneTimePasswordGenerator.prototype = Object.extendsObject(AbstractAjaxProcessor, {

  isPublic: function() {
      return true;
  },

  generateOneTimePassword: function() {
      var userSysId = GlideSession.get().getProperty("mfa.code.needed.user.id");
  	var factor = this.getParameter("sysparm_factor");
      var emailOtpEnabled = GlideProperties.get("glide.authenticate.multifactor.email.otp.enabled", "true");
      GlideSession.get().putProperty("authenticator_type", "emailOtp");
      var result = this.newItem("result");
      if(GlideStringUtil.nil(userSysId)) 
      	result.setAttribute("msg", gs.getMessage("Failed to generate 6-digit verification code. Please contact your administrator to login"));
      if(emailOtpEnabled == "false" && factor == "mfa_EMAIL_div")
      	result.setAttribute("msg", gs.getMessage("Failed to generate 6-digit verification code. Please contact your administrator to login"));
      else {
  		var success = false;
  		if(factor == "mfa_EMAIL_div" && emailOtpEnabled)
  			success = SNC.MultifactorAuthUtil.generateSecureOneTimePasswordForEmail(userSysId);
  		else if(factor == "mfa_SMS_div")
  			success = SNC.MultifactorAuthUtil.generateSecureOneTimePasswordForSMS(userSysId);
  		
  		if (success) {
  		    var resend = this.getParameter("sysparm_resend");
              if (resend) {
                  SNC.SecurityEventSender.sendMfaGCFEvent("resend_mfa_otp", "true", (factor == "mfa_EMAIL_div") ? "email" : "sms");
              }

  			var factorValue = (factor == "mfa_EMAIL_div") ? "email address" : "mobile number";
  			var validity = new GlideBoundedIntProperty("glide.multifactor.onetime.code.validity", 5, 3, 10).getInt();
  			result.setAttribute("msg", gs.getMessage("The 6-digit verification code was sent to your {0} and is valid for the next {1} minutes.", [factorValue, validity]));
  		} else {
  			result.setAttribute("msg", gs.getMessage("Failed to generate 6-digit verification code. Please contact your administrator to login"));
  		}
  	}
  },
  
  isMaxRetryReached: function() {
  	return GlideSession.get().getProperty("user_mfa_otp_max_retry_reached");
  },

  type: 'GlideOneTimePasswordGenerator'
});

Sys ID

946eb101d733310091204187ed6103a4

Offical Documentation

Official Docs: