mirror of
https://github.com/donl/slouch.git
synced 2026-05-26 06:12:11 -06:00
* doc(readme): clean up reasons * doc(motto) * test(db-and-doc): more coverage * test(create-or-update-ignore-conflict) * test(upsert) * test(ignore-missing) * test(post-and-ignore-conflict) * test(get-merge-put) * refactor(all): rename post and put * test(get-merge-create-or-update) * test(get-merge-update-ignore-conflict) * test(get-merge-upsert) * test(get-modify-upsert) * refactor(doc): redundant code * test(destroy-ignore-conflict) * test(get-and-destroy) * test(mark-as-destroyed) * test(set-destroyed) * refactor(attachment) * test(doc): 100% coverage * test(attachment): create with base 64 * test(attachment): clean up binary code * test(attachment): get * test(attachment): destroy * test(system): is couchdb 1 * test(system): get * test(system): reset * test(updates) * test(updates) * test(all): unique DB names * test(system): reactivate tests * test(user): add role * test(user): downsert role * feat(stream-iterator): indefinite * test(user): 100% coverage * test(request-class) * test(request-class): 100% coverage * test(config) * test(config): more coverage * test(config): more coverage * test(config): 100% coverage * test(all): 100% coverage * refactor(beautify) * test(coverage): enforce 100% * test(system): fix race condition * test(user): shortcut for browser * test(updates): test continuous stream in phantomjs * test(updates): test continuous stream in phantomjs * test(continuous): mock for phantomjs * test(system): abort iterators * test(system): fake abort
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
var promisedRequest = require('./request');
|
|
|
|
var Security = function (slouch) {
|
|
this._slouch = slouch;
|
|
};
|
|
|
|
// For example:
|
|
// {
|
|
// "admins" : {
|
|
// "names" : ["joe", "phil"],
|
|
// "roles" : ["boss"]
|
|
// },
|
|
// "members" : {
|
|
// "names" : ["dave"],
|
|
// "roles" : ["producer", "consumer"]
|
|
// }
|
|
// }
|
|
Security.prototype.set = function (dbName, security) {
|
|
return promisedRequest.request({
|
|
uri: this._slouch._url + '/' + dbName + '/_security',
|
|
method: 'PUT',
|
|
body: JSON.stringify(security)
|
|
});
|
|
};
|
|
|
|
Security.prototype.get = function (dbName) {
|
|
return promisedRequest.request({
|
|
uri: this._slouch._url + '/' + dbName + '/_security',
|
|
method: 'GET'
|
|
}, true);
|
|
};
|
|
|
|
Security.prototype.onlyRoleCanView = function (dbName, role) {
|
|
return this.set(dbName, {
|
|
admins: {
|
|
names: ['_admin'],
|
|
roles: []
|
|
},
|
|
members: {
|
|
names: [],
|
|
roles: [role]
|
|
}
|
|
});
|
|
};
|
|
|
|
Security.prototype.onlyAdminCanView = function (dbName) {
|
|
return this.onlyRoleCanView(dbName, '_admin');
|
|
};
|
|
|
|
module.exports = Security;
|