janl commented on code in PR #4139:
URL: https://github.com/apache/couchdb/pull/4139#discussion_r939533237
##########
src/chttpd/src/chttpd_db.erl:
##########
@@ -1037,16 +1037,18 @@ view_cb(Msg, Acc) ->
couch_mrview_http:view_cb(Msg, Acc).
db_doc_req(#httpd{method = 'DELETE'} = Req, Db, DocId) ->
- % check for the existence of the doc to handle the 404 case.
- couch_doc_open(Db, DocId, nil, []),
- case chttpd:qs_value(Req, "rev") of
+ % fetch the old doc revision, so we can compare access control
+ % in send_update_doc() later.
+ Doc0 = couch_doc_open(Db, DocId, nil, [{user_ctx, Req#httpd.user_ctx}]),
Review Comment:
Original Comment:
> If this fails (due to access restrictions) how does the 403 bubble back up
to the user? I followed `chttpd_db:couch_doc_open/4` to `fabric:open_doc/3` to
`fabric_doc_open:go/3` through to `couch_db:get_doc_info/2` but I couldn't work
out where the access restriction is enforced.
>
> I presume we end up at some point in `couch_db:validate_access` or
`check_access` which throws a `{forbidden, "something"}` but I couldn't see how
this translates into a 403.
https://github.com/apache/couchdb/pull/3038#discussion_r475011886
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]