Name

global.KBScopedKnowledgeSNC

Description

This is a helper class for scoped ACLs to evaluate access to knowledge base and articles.

Script

var KBScopedKnowledgeSNC = Class.create();
KBScopedKnowledgeSNC.prototype = Object.extendsObject(KBCommon, {
  
  initialize: function() {
  },

  /**
   * Can the logged in user create knowledge base.
   *
   * @param GlideRecord: kb_knowledge_base
   * @return Boolean: true if logged in user can create knowledge base
   */
  canCreateKnowledgeBase: function(knowledgeBaseGr) {
  	var kbKnowledgeBase = new global.KBKnowledgeBase();
  	return kbKnowledgeBase.canCreate(knowledgeBaseGr);
  },

  /**
   * Can the logged in user read knowledge base contents.
   *
   * @param GlideRecord: kb_knowledge_base
   * @return Boolean: true if logged in user can read knowledge base
   */
  canReadKnowledgeBase: function(knowledgeBaseGr) {
  	var kbKnowledgeBase = new global.KBKnowledgeBase();
  	return kbKnowledgeBase.canRead(knowledgeBaseGr);
  },

  /**
   * Only manager and owner of the knowledge base is allowed to update knowledge base
   *
   * @param GlideRecord: kb_knowledge_base
   * @return Boolean: true if logged in user update knowledge base
   */
  canWriteKnowledgeBase: function(knowledgeBaseGr) {
  	var kbKnowledgeBase = new global.KBKnowledgeBase();
  	return kbKnowledgeBase.canWrite(knowledgeBaseGr);
  },

  /**
   * No one is allowed to allowed to delete a knowledge base.
   *
   * @param GlideRecord: kb_knowledge_base
   * @return Boolean: true if logged in user can delete knowledge base
   */
  canDeleteKnowledgeBase: function(knowledgeBaseGr) {
  	var kbKnowledgeBase = new global.KBKnowledgeBase();
  	return kbKnowledgeBase.canDelete(knowledgeBaseGr);
  },
  
  /**
   * Determine if the logged in user has manager right to the knowledge base
   *
   * @param GlideRecord kb_knowledge_base or kb_knowledge
   *
   * @return boolean
   */
  canManageKnowledgeBase: function(knowledgeBaseGr) {
  	return new global.KnowledgeAccess().managerRights(knowledgeBaseGr);
  },

  /**
   * Can the logged in user create article.
   *
   * @param GlideRecord: kb_knowledge
   * @return Boolean: true if logged in user can create article
   */
  canCreateArticle: function(knowledgeGr) {
  	var kbKnowledge = new global.KBKnowledge();
  	return kbKnowledge.canCreate(knowledgeGr);
  },

  /**
   * Can the logged in user read article.
   *
   * @param GlideRecord: kb_knowledge
   * @return Boolean: true if logged in user can read article
   */
  canReadArticle: function(knowledgeGr) {
  	var kbKnowledge = new global.KBKnowledge();
  	if(kbKnowledge.isMultipleKnowledgeUpdate())
  		return true;
  	else if (knowledgeGr.isNewRecord()) 
  		return true;
  	else if (!this.isPartialRecord(knowledgeGr))
  		return kbKnowledge.canRead(knowledgeGr);
  	else if(!gs.nil(knowledgeGr.sys_id)) {
  		var article = new GlideRecord("kb_knowledge");
  		if(article.get(knowledgeGr.sys_id))
  			return kbKnowledge.canRead(article);
  	}
  	return false;
  },

  /**
   * Can the logged in user update article.
   *
   * @param GlideRecord: kb_knowledge
   * @return Boolean: true if logged in can user update article
   */
  canWriteArticle: function(knowledgeGr) {
  	var kbKnowledge = new global.KBKnowledge();
  	if(kbKnowledge.isMultipleKnowledgeUpdate())
  		return true;
  	else 
  		return kbKnowledge.canWrite(knowledgeGr);
  },

  /**
   * Can the logged in user update article based on the user criteria configuration.
   *
   * @param GlideRecord: kb_knowledge_base
   * @return Boolean: can logged in user update the kb_knowledge_base
   */
  canDeleteArticle: function(knowledgeGr) {
  	var kbKnowledge = new global.KBKnowledge();
  	return kbKnowledge.canDelete(knowledgeGr);
  },
  
  type: 'KBScopedKnowledgeSNC'
});

Sys ID

49a98ae33b1323006fa0870044efc4d2

Offical Documentation

Official Docs: