How to identify if userid already exists?

praveenKumar2
Kilo Expert

Hi All,

I have a requirement to check if a userid already exists and if it exists an error should be thrown user id already exists. There is a field on a catalog item and when a user enters the user id like pkmar00 it should check behind the scenes and throw an error and clear out the field value. 

 

Kindly please help me. 

Thanks & Regards.

Praveen.

1 ACCEPTED SOLUTION

Hitoshi Ozawa
Giga Sage
Giga Sage

Try this. Tested it with "abraham.lincoln", "donald.trump"

Script Include:

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

    validateUser: function() {
        var user_id = this.getParameter('user_id');
        var gr = new GlideRecord("sys_user");
        gr.addQuery("user_name", user_id);
        gr.query();
        if (gr.next()) {
            return true;
        } else {
            return false;
        }
    },

    type: 'checkUserExists'
});

UI Script:

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var ga = new GlideAjax('checkUserExists');
    ga.addParam('sysparm_name', "validateUser");
    ga.addParam('user_id', newValue);
    ga.getXMLAnswer(function(answer) {
        if (answer == "true") {
            g_form.clearValue('user_id');
            g_form.showFieldMsg('user_id', 'User already exists.');
        }
    });
}

View solution in original post

11 REPLIES 11

MrMuhammad
Giga Sage

Try this

onChange Client script

Variable Name - < USER ID >

var ga = new GlideAjax('findUser');
ga.addParam('sysparm_name', 'userExist');
ga.addParam('sysparm_user_name', newValue);
ga.getXML(callBack);
 
function callBack(response) {
  var answer = response.responseXML.documentElement.getAttribute("answer");
  if(answer == false){
    g_form.setValue('<USER_ID_FIELD_NAME>', ''); // replace <USER_ID_FIELD_NAME> with actual user_id variable.
    g_form.showFieldMsg('<USER_ID_FIELD_NAME>', 'User Already Exist!'); // replace <USER_ID_FIELD_NAME> with actual user_id variable.
  } else {
    g_form.hideFieldMsg();
  }  
}

Script Include

Name - findUser

Client Callable - true

 

var findUser= Class.create();
findUser.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   userExist:function() { 
      var gr = new GlideRecord("sys_user");
      gr.addQuery("user_name", this.getParameter('sysparm_user_name')); //replace <field_name> with staging table user name field name.
      gr.setLimit(1);
      gr.query();
  
     if(gr.next()){
       return false; 
     }
     
    return true;
    } ,
   

 });
Regards,
Muhammad

Hi Muhammad,

 

I tried the code but it is not working:

 

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('readuserID');
ga.addParam('sysparm_name', 'userExist');
ga.addParam('sysparm_user_name', newValue);
ga.getXML(callBack);

function callBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
if(answer == false || answer == ''){
g_form.setValue('user_id_of_the_new_user', ''); // replace <USER_ID_FIELD_NAME> with actual user_id variable.
g_form.showFieldMsg('user_id_of_the_new_user', 'User Already Exist!'); // replace <USER_ID_FIELD_NAME> with actual user_id variable.
alert('Please check for the user id, it already exists');
return false;
} else {
g_form.hideFieldMsg();
}
//Type appropriate comment here, and begin script below
}
}

 

The answer is returning to null.

 

Can you please check?

 

Thanks,

pK

Can you check if Script include is mark as Client Callable? Also, can you share the screenshot of your script include? 

Regards,
Muhammad

Hi Muhammad,

 

Please find the screenshots. 

 

Thanks,

Praveen.