Skip to content

Instantly share code, notes, and snippets.

@adamski
Last active March 8, 2019 12:00
Show Gist options
  • Save adamski/b22a024272c359a5a96434b0dbbf3312 to your computer and use it in GitHub Desktop.
Save adamski/b22a024272c359a5a96434b0dbbf3312 to your computer and use it in GitHub Desktop.
CouchDB validation docs
curl -g -X PUT http://username:password@127.0.0.1:5984/dbname/_design/validate_read_only -d \'{\"validate_doc_update\": \""$(tr -d '\n' < validate_doc_update.js | sed 's/"/\\"/g')"\"}\'
curl -g -X PUT http://username:password@127.0.0.1:5984/dbname/_design/validate_read_only -d '{"validate_doc_update": "function(newDoc, oldDoc, userCtx, secObj) { var ddoc = this; secObj.admins = secObj.admins || {}; secObj.admins.names = secObj.admins.names || []; secObj.admins.roles = secObj.admins.roles || []; var IS_DB_ADMIN = false; if(~ userCtx.roles.indexOf(\"_admin\")) IS_DB_ADMIN = true; if(~ secObj.admins.names.indexOf(userCtx.name)) IS_DB_ADMIN = true; for(var i = 0; i < userCtx.roles; i++) if(~ secObj.admins.roles.indexOf(userCtx.roles[i])) IS_DB_ADMIN = true; if(ddoc.access && ddoc.access.read_only) if(IS_DB_ADMIN) log(\"Admin change on read-only db: \" + newDoc._id); else throw {\"forbidden\":\"This database is read-only\"};}"}'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment