Checking logged in user in server script in widget

-Andrew-
Kilo Sage

Hi guys.

I'm trying to get the current logged in user in an if statement within the server script of my widget, i've tried the below and other ways but i'm stumped:

data.user = gs.getUserID();

	if(record.requester == data.user){
		data.showMyDelegated = true;
	}

//Have also tried:

	if(record.requester == gs.getUserID()){
		data.showMyDelegated = true;
	}
12 REPLIES 12

Mohith Devatte
Tera Sage
Tera Sage

Hello Andrew ,

what is stored in record ?

i am assuming it must be a json 

try to put info ('My record'+JSON.stringify(record));

and see if the requestor element is present in that JSON .

if yes use the correct JSON element which must be "requestor"

PLEASE MARK MY ANSWER CORRECT IF IT HELP YOU

Hello!

the record.requester is as follow:

record.requester = gr.getDisplayValue('caller_id');

OKAY I THINK WE NEED TO see the full script can you post the script here please ?

also you are trying to get the name of the caller and comparing with used sys_id which might be the issue .

Replace with below and try comparing now

record.requester = gr.getValue('caller_id');

PLEASE MARK MY ANSWER CORRECT IF IT HELPS YOU

 

no problem - here's the full script:

 

(function() {
	
	var localInput = input; //to safeguard pullution of "input" via BR or other scripts
	
	var alsoRequest = false;
	
	data.filterMsg = gs.getMessage("Search active shares");
	
	if (localInput && localInput.view === 'open')
		data.filterMsg = gs.getMessage("Search active shares");
	else if (localInput && localInput.view === 'close')
		data.filterMsg = gs.getMessage("Search inactive shares");

	function getField(gr, name) {
			var f = {};
			var id = gr.getUniqueValue();
			gr = new GlideRecord(gr.getRecordClassName());
			gr.get(id);
			f.display_value = gr.getDisplayValue(name);
			f.value = gr.getValue(name);
			var ge = gr.getElement(name);
		  if (ge) {
				var ed = ge.getED();
				if (ed)
					f.type = ed.getInternalType();
				f.label = ge.getLabel();
			}
			return f;
	}
	//get the filter record 
	function getMyRequestSysIds() {
		var ids = {};
		var rq_filter = new GlideRecord('request_filter');
		rq_filter.addActiveQuery();
		if (rq_filter.isValidField('applies_to'))
			rq_filter.addQuery('applies_to', 23);
		rq_filter.query();
		while(rq_filter.next()) {
			var tableName = rq_filter.table_name;
			if (rq_filter.isValidField('table'))
				tableName = rq_filter.table;
			var gr = new GlideRecord(tableName);
			gr.addQuery(rq_filter.filter);
			gr.query();
			if (tableName == 'sc_request')
				alsoRequest = true;
			while(gr.next()) {
				var portalSettings = {};
				portalSettings.page = rq_filter.portal_page.nil()? '' : rq_filter.portal_page.getDisplayValue() + '';
				portalSettings.primary_display = rq_filter.primary_display.nil()? '': rq_filter.primary_display + '';
				portalSettings.secondary_displays = rq_filter.secondary_display.nil()? '': rq_filter.secondary_display + '';
				ids[gr.sys_id + ''] = portalSettings;
			}
		}
		return ids;
	}
	
	// retrieve the request's
	var myRequestMap = getMyRequestSysIds();
	var taskIDs = Object.keys(myRequestMap);

	var gr = new GlideRecordSecure('incident');
	if (localInput && localInput.view === 'open') 
		gr.addQuery('u_share_active', true);
	else if (localInput && localInput.view === 'close')
		gr.addQuery('u_share_active', false);
	else
		gr.addQuery('u_share_active', true);

	gr.orderByDesc('sys_updated_on');
	if (localInput && localInput.search_text) {
			var req = [];
			var task = new GlideRecordSecure('task');
			task.addQuery('123TEXTQUERY321', localInput.search_text);
			if (localInput && localInput.view === 'open') 
				task.addEncodedQuery("u_share_active=true");
				
			else if (localInput && localInput.view === 'close')
				task.addEncodedQuery("u_share_active=false");
			else
				task.addEncodedQuery("u_share_active=true");
			task.addQuery('sys_id', taskIDs);
			task.query();

			while(task.next())
				req.push(task.getUniqueValue());
		
			if (alsoRequest) {
				var ritmGR = new GlideRecord('sc_req_item');
				if (localInput && localInput.view === 'open') 
					ritmGR.addQuery('request.u_share_active', true);
				else if (localInput && localInput.view === 'close')
					ritmGR.addQuery('request.u_share_active', false);
				else
					ritmGR.addQuery('request.u_share_active', true);
				ritmGR.addQuery('123TEXTQUERY321', localInput.search_text);
				ritmGR.addQuery('request.sys_id', taskIDs);
				ritmGR.query();
				while(ritmGR.next())
					req.push(ritmGR.getValue('request'));
			}
			gr.addQuery('sys_id', req);
		}
		else 
			gr.addQuery('sys_id', taskIDs);
	gr.query();

	data.request = {};

	data.request.req_list = [];
	var recordIdx = 0;	
	var limit = options.items_per_page? options.items_per_page : 15;
	if (localInput && localInput.action == 'fetch_more')
		data.lastLimit = localInput.lastLimit + limit;
	else
		data.lastLimit = limit;

	data.hasMore = false;
	while (recordIdx != data.lastLimit && gr.next()) {
		var portalSettings = myRequestMap[gr.getUniqueValue()];
		if (typeof portalSettings == 'undefined')
			portalSettings = {};

		var record = {};
		record.sys_id = gr.getValue('sys_id');

		if (gr.getRecordClassName() == 'sc_request') {
				var ritm = new GlideRecord("sc_req_item");
				ritm.addQuery("request", gr.getUniqueValue());
				ritm.query();
				if (ritm.getRowCount() == 0)
					continue;
				if (ritm.getRowCount() > 1)
					record.display_field = gs.getMessage("{0} requested items", ritm.getRowCount());
				else {
					ritm.next();
					record.display_field = ritm.cat_item.getDisplayValue() || ritm.getDisplayValue("short_description");
				}
				record.url = { id: portalSettings.page? portalSettings.page: 'sc_request', table: 'sc_request', sys_id: record.sys_id};
		} else {
				record.display_field = portalSettings.primary_display ? getField(gr, portalSettings.primary_display).display_value : getField(gr, 'number').display_value;
				record.url = { id: portalSettings.page? portalSettings.page :'ticket', table: gr.getRecordClassName(), sys_id: record.sys_id};
		}
		if (portalSettings.secondary_displays) {
			record.secondary_displays = [];
			portalSettings.secondary_displays.split(",").forEach(function (sDisplay){
				record.secondary_displays.push(getField(gr, sDisplay));
			});
		}
		else 
		record.secondary_displays = getField(gr, 'short_description');
		record.updated_on = gr.getValue('sys_updated_on');
		record.state = gr.getDisplayValue('state');
		record.matter_num = gr.getDisplayValue('u_client_matter_number');
		record.share_size = gr.getDisplayValue('u_folder_size');
		record.partner = gr.getDisplayValue('u_matter_partner');
		record.expiry = gr.getDisplayValue('u_share_expiry');
		record.link = gr.getDisplayValue('u_share_link');
		record.requester = gr.getDisplayValue('caller_id');
		record.table = gr.getTableName();
		record.sys_id = gr.getUniqueValue();
		if((recordIdx !== 0) && (data.lastLimit - limit === recordIdx))
			record.highlight = true;

		data.request.req_list.push(record);
		recordIdx++;
		
		
		data.user = gs.getUserID();
		if(record.requester == data.user){
			data.showMyDelegated = true;
	}
		
		
	}

	
	if (gr.next())
			data.hasMore = true;
})();