summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/www/script/test/users_db.js7
-rw-r--r--src/couchdb/couch_js_functions.hrl8
2 files changed, 10 insertions, 5 deletions
diff --git a/share/www/script/test/users_db.js b/share/www/script/test/users_db.js
index b85adf08..667ff3c1 100644
--- a/share/www/script/test/users_db.js
+++ b/share/www/script/test/users_db.js
@@ -85,8 +85,13 @@ couchTests.users_db = function(debug) {
T(/conflict/.test(e.reason))
}
+ // you can delete a user doc
+ s = CouchDB.session().userCtx;
+ T(s.name == null);
+ T(s.roles.indexOf("_admin") !== -1);
+ T(usersDb.deleteDoc(jchrisWithConflict).ok);
};
-
+
usersDb.deleteDb();
run_on_modified_server(
[{section: "couch_httpd_auth",
diff --git a/src/couchdb/couch_js_functions.hrl b/src/couchdb/couch_js_functions.hrl
index 3214b1f6..1f314f6e 100644
--- a/src/couchdb/couch_js_functions.hrl
+++ b/src/couchdb/couch_js_functions.hrl
@@ -12,10 +12,6 @@
-define(AUTH_DB_DOC_VALIDATE_FUNCTION, <<"
function(newDoc, oldDoc, userCtx) {
- if ((oldDoc && oldDoc.type !== 'user') || newDoc.type !== 'user') {
- throw({forbidden : 'doc.type must be user'});
- } // we only allow user docs for now
-
if (newDoc._deleted === true) {
// allow deletes by admins and matching users
// without checking the other fields
@@ -27,6 +23,10 @@
}
}
+ if ((oldDoc && oldDoc.type !== 'user') || newDoc.type !== 'user') {
+ throw({forbidden : 'doc.type must be user'});
+ } // we only allow user docs for now
+
if (!newDoc.name) {
throw({forbidden: 'doc.name is required'});
}