i created one ACL with scripting but it's won't working so please let me know my mistake

mani55
Tera Contributor

i created one Read only ACL for one table and i written below script but it's not working so please let me know my mistake

answer=true;
var ciLink=current.u_ci_link;
var gr= new GlideRecord("u_cmdb_ci_service_vmware_insta");
gr.addQuery('name',ciLink);
gr.query();
if(gr.next()){
	var grd=new GlideRecord('u_alm_service');
	if (grd.get(gr.u_itaas_asset_number))
		answer =grd.getDisplayValue('assigned_to')==gs.getUserID();
		
}
1 ACCEPTED SOLUTION

Anubhav24
Mega Sage
Mega Sage

Hi @mani55 ,

Can you try using Access Analyzer to assess your ACL if you are working on Vancouver

 

Please mark helpful/correct if my response helped you.

 

View solution in original post

14 REPLIES 14

Danish Bhairag2
Tera Sage
Tera Sage

Hi @mani55 ,

 

Try something like below

 

answer=false;
var ciLink=current.u_ci_link;
var gr= new GlideRecord("u_cmdb_ci_service_vmware_insta");
gr.addQuery('name',ciLink);
gr.query();
if(gr.next()){
	var grd=new GlideRecord('u_alm_service');
	if (grd.get(gr.u_itaas_asset_number)){
		if(grd.assigned_to == gs.getUserID()){
answer = true;
}	
}

 

Thanks,

Danish

the ACL is working for me but when i am impernate with others and i'll doing testing on that time it's not working '

answer=true;
var ciLink=current.u_ci_link;
var gr= new GlideRecord("u_cmdb_ci_service_vmware_insta");
gr.addQuery('name',ciLink);
gr.query();
if(gr.next()){
	var grd=new GlideRecord('u_alm_service');
	if (grd.get(gr.u_itaas_asset_number)){

            answer =grd.getValue('assigned_to')==gs.getUserID(); 
}	
}
gs.log('hello i am value of answer'+answer);

Anirudh Pathak
Mega Sage

Hi @mani55 ,

In the below line you are comparing the display value of assigned to with sys_id of current user. So it will never be the same. 

 

answer =grd.getDisplayValue('assigned_to')==gs.getUserID();

 

  Instead use below code -

 

 

answer =grd.getValue('assigned_to')==gs.getUserID();

 

 

Shivambitanwar1
Tera Contributor

Hi @mani55 ,

 

Can you add gs.addInfoMessage to see what is it returning?

 

 

answer=true;
var ciLink=current.u_ci_link;
var gr= new GlideRecord("u_cmdb_ci_service_vmware_insta");
gr.addQuery('name',ciLink);
gr.query();
if(gr.next()){
	var grd=new GlideRecord('u_alm_service');
	if (grd.get(gr.u_itaas_asset_number))
		answer =grd.getDisplayValue('assigned_to')==gs.getUserID();
		
}
// infoMessage
gs.addInfoMessage('hello i am value of answer'+answer);

 

 


If it returns false, only then user will have access . since it returns true in the begining you will anyway get access to edit the record.

 

Alternatively, how @Danish Bhairag2  suggested is the better way to do it.

 

Warm Regards,

Shivambi