Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

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