Name

sn_docs.DocsACL

Description

No description available

Script

var DocsACL = Class.create();
DocsACL.prototype = {
  initialize: function() {},
  checkForRecordAccess: function(gr) {
  	if(!gr.source_table) {
  		return true;
  	}
  	if(!gr.source_id) {
  		return false;
  	}
      var record = new GlideRecord(gr.source_table);
      if (record.get(gr.source_id + "")) {
          if (record.canRead()) {
              return true;
          }
      }
      return false;
  },
  checkForDocAccess: function(docSysid) {
      if (!docSysid)
          return false;
      var gr = new GlideRecord("sn_doc_m2m");
      gr.addQuery('sn_doc_id', docSysid);
      gr.query();
      if (gr.getRowCount() === 0)
          return true;
      while (gr.next()) {
          var record = new GlideRecord(gr.source_table);
          if (record.get(gr.source_id + "")) {
              if (record.canRead()) {
                  return true;
              }
          }
      }
      return false;
  },
  checkForFieldAccess: function(record) {
      if (!record.source_table) {
          return false;
      }
      var gr = new GlideRecord(record.source_table);
      if (gr.get(record.source_id + "")) {
          if (record.getValue("source_field")) {
              if (gr[record.getValue("source_field")].canRead()) {
                  return true;
              }
          } else {
              if (gr.canRead()) {
                  return true;
              }
          }
      }
      return false;
  },
  checkForCreatedBy: function(current) {
      if (current.sys_created_by && (current.getValue('sys_created_by') === gs.getUserName())) {
          return true;
      }
  },
  getDocFromPage: function(current) {
      var doc = new GlideRecord("sn_doc");
      if (doc.get(current.sn_doc_id + "")) {
          return doc;
      }
      return null;
  },
  canReadDoc: function(current) {
      return this.checkForDocAccess(current.sys_id);
  },
  canWriteDoc: function(current) {
      if (current.isNewRecord()) {
          return true;
      }
      return this.checkForDocAccess(current.sys_id);
  },
  canCreateDoc: function(current) {
      return true;
  },
  canDeleteDoc: function(current) {
      return this.checkForDocAccess(current.sys_id);
  },
  canReadPage: function(current) {
      return this.checkForDocAccess(current.sn_doc_id);
  },
  canWritePage: function(current) {
      if (current.isNewRecord()) {
          return true;
      }
      return this.checkForDocAccess(current.sn_doc_id);
  },
  canCreatePage: function(current) {
      return true;
  },
  canDeletePage: function(current) {
      return this.checkForDocAccess(current.sn_doc_id);
  },
  canReadComment: function(current) {
      return this.checkForFieldAccess(current);
  },
  canWriteComment: function(current) {
      if (current.isNewRecord()) {
          return true;
      }
      return this.checkForCreatedBy(current);
  },
  canCreateComment: function(current) {
      return true;
  },
  canDeleteComment: function(current) {
      return this.checkForCreatedBy(current);
  },
  canReadReaction: function(current) {
      return this.checkForFieldAccess(current);
  },
  canWriteReaction: function(current) {
      if (current.isNewRecord()) {
          return true;
      }
      return this.checkForFieldAccess(current);
  },
  canCreateReaction: function(current) {
      return true;
  },
  canDeleteReaction: function(current) {
      return false;
  },
  canCreateDocM2M: function(current) {
      return true;
  },
  canReadDocM2M: function(current) {
      return this.checkForRecordAccess(current);
  },
  canWriteDocM2M: function(current) {
      if (current.isNewRecord()) {
          return true;
      }
      return this.checkForRecordAccess(current);
  },
  canDeleteDocM2M: function(current) {
      return this.checkForRecordAccess(current);
  },
  canCreateTemplate: function(current) { 
      return true;
  },
  canReadTemplate: function(current) { 
      return true;
  },
  canWriteTemplate: function(current) { 
      return true;
  },
  canDeleteTemplate: function(current) {
      return true;
  },
  canCreateTemplateCategory: function(current) { 
      return true;
  },
  canReadTemplateCategory: function(current) { 
      return true;
  },
  canWriteTemplateCategory: function(current) { 
      return true;
  },
  canDeleteTemplateCategory: function(current) {
      return true;
  },
  type: 'DocsACL'
};

Sys ID

255ec0bc77d72110d4fa1aceca5a99f7

Offical Documentation

Official Docs: