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