summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lehnardt <jan@apache.org>2020-06-14 20:39:11 +0200
committerJan Lehnardt <jan@apache.org>2020-07-10 19:08:52 +0200
commit762fbf6f806ea19e262cdd291998d1d5fcb2172b (patch)
tree595df958e6b463460d1e8831833546b23b1a7013
parentb5acade6cc79d2fe0a4aab805806bb7ce331a643 (diff)
downloadcouchdb-762fbf6f806ea19e262cdd291998d1d5fcb2172b.tar.gz
feat: re-add access query server
-rw-r--r--src/couch/src/couch_db.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl
index 602b0bc08..40f6f87e2 100644
--- a/src/couch/src/couch_db.erl
+++ b/src/couch/src/couch_db.erl
@@ -747,6 +747,11 @@ security_error_type(#user_ctx{name=null}) ->
security_error_type(#user_ctx{name=_}) ->
forbidden.
+is_per_user_ddoc(#doc{access=[]}) -> false;
+is_per_user_ddoc(#doc{access=[<<"_users">>]}) -> false;
+is_per_user_ddoc(_) -> true;
+
+
validate_access(Db, Doc) ->
validate_access(Db, Doc, []).
@@ -757,7 +762,7 @@ validate_access1(false, _Db, _Doc, _Options) -> ok;
validate_access1(true, Db, #doc{meta=Meta}=Doc, Options) ->
case proplists:get_value(conflicts, Meta) of
undefined -> % no conflicts
- case is_read_from_ddoc_cache(Options) of
+ case is_read_from_ddoc_cache(Options) andalso is_per_user_ddoc(Doc) of
true -> throw({not_found, missing});
_False -> validate_access2(Db, Doc)
end;