Невозможно добавить пользователя - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь добавить пользователя в CouchDB (3.1.0), установленный на MacOS 10.15.5:

curl -u admin:<pass> -X PUT http://localhost:5984/_users/org.couchdb.user:eiri -d '{"name": "test", "password": "test", "roles": [], "type": "user"}'

Однако я всегда получаю

{
  "error": "unknown_error",
  "reason": "undefined"
}

Журналы не не скажите мне много:

-------- rexi_server: from: couchdb@127.0.0.1 (<0.4835.0>) mfa: fabric_rp c: update_docs / 3 exit: {timeout , {gen_server, call, [couch_proc_manager, {get_pro c, {do c, << "_ design / _auth" >>, {1, [<< 117,58,224,21,122,139,26,34,51,159,60 , 14 244 241 191,25 >>]}, {[{<< "language" >>, << "javascript" >>}, {<< "validate_doc_update" >>, << "\ n function (newDo c, oldDo c, userCtx, secObj) {\ n if (newDo c ._ deleted === true) {\ n // разрешить удаление администраторами и соответствующими пользователями \ n // без проверки других полей \ n if ((userCtx.roles.indexOf ('_ admin')! == -1) || \ n (userCtx.name == oldDo c .name)) {\ n return; \ n} else {\ n throw ({запрещено: 'Только администраторы могут удалять другие пользовательские документы.'}); \ n} \ n} \ n \ n if (newDo c .type! == 'user') {\ n throw ({запрещено: 'do c .type must be user'}); \ n} // сейчас мы разрешаем только пользовательские документы \ n \ n если (! newDo c .name) {\ n throw ({запрещено: 'do c .name is required'}); \ n} \ n \ n if (! newDo c .roles) {\ n throw ({запрещено: 'do c .roles must exist'}); \ n} \ n \ n if (! isArray (newDo c .roles)) {\ n throw ({запрещено: 'do c .roles должны быть массивом '}); \ n} \ n \ n for (var idx = 0; idx <newDo c .roles.length; idx ++) {\ n if (typeof newDo c .roles [idx]! == 'string') {\ n throw ({запрещено: 'do c .roles can only contain strings'}); \ n} \ n} \ n \ n if (newDo c ._ id! == ('org.couchdb.user:' + newDo c .name)) {\ n throw ({\ n запрещено: 'Do c ID должен иметь форму org.couchdb.user: name '\ n}); \ n} \ n \ n if (oldDo c) {// проверять все обновления \ n if (oldDo c .name ! == newDo c .name) {\ n throw ({запрещено: 'Имена пользователей не могут быть изменены.'}); \ n} \ n} \ n \ n if (newDo c .password_sha &&! newDo c .salt) {\ n throw ({\ n запрещено: 'Пользователи с password_sha должны иметь соль.' + \ N 'См. /_Utils/script/couch.js пример кода.' \ N}) ; \ n} \ n \ n var available_schemes = ["simple", "pbkdf2", "bcrypt"]; \ n if (newDo c .password_scheme \ n && available_schemes.indexOf (newDo c .password_scheme) = = -1) {\ n throw ({\ n запрещено: 'Схема пароля <code>' + newDoc.password_scheme\n + ' не поддерживается.' \ N}); \ n} \ n \ n if (newDo c .password_scheme === "pbkdf2" ) {\ n if (typeof (newDo c .iterations)! == "число") {\ n throw ({запретить n: "итерация должна быть числом."}); \ n} \ n if (typeof (newDo c .dehibited_key)! == "строка") {\ n throw ({запрещено: "производный_ключ должен быть строкой . "}); \ n} \ n} \ n \ n var is_server_or_database_admin = function (userCtx, secObj) {\ n // посмотрим, является ли пользователь администратором сервера \ n if (userCtx.roles.indexOf ('_ admin' )! == -1) {\ n return true; // администратор сервера \ n} \ n \ n // смотрим, является ли пользователь администратором базы данных, указанным именем \ n if (secObj && secObj.admins && secObj.admins.names) {\ n if (secObj.admins.names .indexOf (userCtx.name)! == -1) {\ n return true; // администратор базы данных \ n} \ n} \ n \ n // посмотрим, является ли пользователь администратором базы данных, заданным ролью \ n if (secObj && secObj.admins && secObj.admins.roles) {\ n var db_roles = secObj. admins.roles; \ n for (var idx = 0; idx 0) {\ n throw ({запрещено: 'Только администратор может устанавливать роли'}); \ n} \ n} \ n \ n // у пользователей нет системных ролей db \ n for (var i = 0; i metrics') {\ n if (newDo c .roles [i] [0] == = '') {\ n throw ({\ n запрещено: \ n 'У пользователей нет системных ролей (начинающихся с подчеркивания) d b. '\ n}); \ n} \ n} \ n} \ n \ n // имена систем не используются в качестве имен \ n if (newDo c .name [0] ===' ') {\ n throw ({запрещено: 'Имя пользователя не может начинаться с подчеркивания.'}); \ n} \ n \ n var badUserNameChars = [':']; \ n \ n for (var i = 0; я = 0) {\ n throw ({запрещено: 'Символ ' + badUserNameChars[i] +\n ' не допускается в именах пользователей.'}); \ n } \ n} \ n} \ n ">>}]}, [], false, []}, {<<" _ design / _auth ">>, <<" 1-753ae0157a8b1a22339f3c0ef4f1bf19 ">>}}, 5000] }} [{gen_server, call, 3, [{file, "gen_server.erl"}, {line, 223}]}, {couch_query_servers, get_ddoc_process, 2, [{file, "src / couch_query_servers.erl"}, { line, 614}]}, {couch_query_servers, with_ddoc_pro c, 2, [{file, "src / couch_query_servers.erl"}, {line, 513}]}, {couch_query_servers, validate_doc_update, 5, [{file, " src / couch_query_servers.erl "}, {line, 368}]}, {couch_db, '- validate_doc_update_int / 3-lc $ ^ 0 / 1-0 -', 5, [{file," src / couch_db.erl "} , {line, 903}]}, {couch_db, '- validate_doc_update_int / 3-fun-1 -', 3, [{file, "src / couch_db.erl"}, {line, 906}]}, {couch_stats, update_histogram, 2, [{file, "src / couch_stats.erl"}, {line, 102}]}, {couch_db, '- prepare_and_validate_updates / 6-fun-1 -', 3, [{file, "src / couch_db .erl "}, {line, 1003}]}]

Есть идеи, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...