Access to the Unpublished Knowledge Article only to the KB owner or to users having knowledge_admin role

abhinandanparhi
Kilo Expert

Hi Community,

Please help with the query.

I want to restrict the unpublished knowledge articles to  the knowledge owner or to users having knowledge_admin role. However, i am not able to achieve this with the following script. I modified the script a bit for both ACL's and QueryBR but with no access.

Before Query BR on kb_knowledge table with condition as Workflow is not Published.

var kbsysid = current.sys_id;
var kbknowledgebase = current.getDisplayValue(kbsysid);
var knowledgebase = new GlideRecord('kb_knowledge_base');
knowledgebase.addQuery('title',kbknowledgebase);
knowledgebase.query();
if(knowledgebase.next()){
var kbowner = knowledgebase.owner;

if((gs.getUser().getID() == kbowner) )
return true;                                       // answer = current.canRead() for ACL
else
return false;
}

 

6 REPLIES 6

MrMuhammad
Giga Sage

try this

var kbsysid = current.sys_id;
var kbowner; 

var knowledgebase = new GlideRecord('kb_knowledge_base');
knowledgebase.addQuery('sys_id',kbsysid); //workflow_stateINpublished
knowledgebase.addEncodedQuery('workflow_state!=published');

knowledgebase.query();

if(knowledgebase.next()){
 kbowner = knowledgebase.owner;

  if((gs.getUserID() == kbowner) )
     return true;                                       // answer = current.canRead() for ACL
  else
     return false;
}
Regards,
Muhammad

Chander Bhusha1
Tera Guru

Hi Abhinanda,

Write an before Query BR on knowledge table.

When --before

Query -- True

Filter is contion:

Workflow is not Published

(function executeRule(current, previous /*null when async*/) {

current.addQuery('kb_knowledge_base.owner',gs.getUserID());

})(current, previous);


This will show unpublished article to knowledge base owners only.

 


Mark helpful and correct if it helps.

Thanks,

CB

Hi CB ,

Thanks for your quick reply.

However there is a slight new update where I have to show unpublished articles to either owners or users having knowledge_manager role.

Thanks,

Abhi

Hi Abhinandan,

try this

current.addEncodedQuery('workflow_state!=published^kb_knowledge_base.owner='+gs.getUserID()+'^OR'+gs.hasRole('knowledge_manager'));

 

Thanks & Regards,

Sharjeel

Regards,
Muhammad