validators: [function(doc, val, raw) { if (!permissions.hasRole('_admin')) { // user is not admin, check page _id var restricted = ["TAPIRWIKISETTINGS", "NewPage"]; for (i in restricted) { if (val == restricted[i]) throw new Error("Restricted _id: " + restricted[i] + ". Not allowed to modify."); } } }]
/** * Kanso document types to export */ var Type = require('couchtypes/types').Type, fields = require('couchtypes/fields'), widgets = require('couchtypes/widgets'), permissions = require('couchtypes/permissions'), editorRole = 'wikieditor'; exports.page = new Type('page', { permissions: { add: permissions.hasRole(editorRole), update: permissions.hasRole(editorRole), remove: permissions.hasRole(editorRole) }, fields: { _id: fields.string({ validators: [function(doc, val, raw) { if (!permissions.hasRole('_admin')) { // user is not admin, check page _id var restricted = ["TAPIRWIKISETTINGS", "NewPage"]; for (i in restricted) { if (val == restricted[i]) throw new Error("Restricted _id: " + restricted[i] + ". Not allowed to modify."); } } }] }), body: fields.string(), edited_by: fields.string(), edited_on: fields.string()
usernameNotMatchesField('editableBy') ]); } var canEdit = function() { return permissions.any([ permissions.usernameMatchesField('editableBy'), utils.roleMatchesField('editableBy'), ]); } exports.transaction = new Type('transaction', { permissions: { add: permissions.loggedIn(), update: permissions.loggedIn(), remove: permissions.hasRole('_admin') }, fields: { id: idField(/\w+/), to: fields.string({ permissions: { update: permissions.fieldUneditable(), }, }), editableBy: fields.string({ permissions: { update: permissions.fieldUneditable(), }, }), declaredBy: fields.creator(), from: fields.string({
var permissions = require('couchtypes/permissions'), fields = require('couchtypes/fields'), Type = require('couchtypes/types').Type; exports['duality-contrib-comments:comment'] = new Type( 'duality-contrib-comments:comment', { permissions: { add: permissions.loggedIn(), update: permissions.hasRole('_admin'), delete: permissions.any([ permissions.usernameMatchesField('user'), permissions.hasRole('_admin') ]) }, fields: { user: fields.creator(), text: fields.string(), time: fields.string(), target: fields.string() } } );
var Type = require('couchtypes/types').Type; var fields = require('couchtypes/fields'); var permissions = require('couchtypes/permissions'); var idField = require('../ITS/fields').idField; exports.notification = new Type('notification', { permissions: { add: permissions.hasRole('notification_manager'), update: permissions.hasRole('notification_manager'), remove: permissions.hasRole('notification_manager') }, fields: { id: idField(/\d+\-<subscriber>/), subscriber: fields.string(), message_txt: fields.string({ require: false }), message_html: fields.string({ require: false }), subject: fields.string({ require: false }), created_at: fields.createdTime(), displayed: fields.boolean({ default_value: function (req) { return false; }, permissions: { update: permissions.usernameMatchesField('subscriber'),