[
https://issues.apache.org/jira/browse/COUCHDB-912?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12928962#action_12928962
]
Filipe Manana commented on COUCHDB-912:
---------------------------------------
Hi,
I have a few remarks:
1) A test is needed. Probably the right place for it will be in
share/www/script/test/design_docs.js;
2) No need to change couch_db:open/2. Just use couch_db:open_int/2;
3) I agree with Adam. No need to "cache" the value. A couch_config:get/3
doesn't go through a gen_server, it does direct lookups to a protected
(readable by any process) ets table, therefore it's very fast. I also don't
think that couch_httpd.erl should be touched at all;
4) That to_bool/1 function is very unerlangish. Just do something like:
Whatever =:= "true";
5) Also that is_design_attachment function seems redundant. I would suggest
restricting all the change in couch_http_db.erl to the do_db_req/2 function.
Something like the following:
diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl
index 87fc15d..9e68c08 100644
--- a/src/couchdb/couch_httpd_db.erl
+++ b/src/couchdb/couch_httpd_db.erl
@@ -188,7 +188,7 @@ delete_db_req(#httpd{user_ctx=UserCtx}=Req, DbName) ->
throw(Error)
end.
-do_db_req(#httpd{user_ctx=UserCtx,path_parts=[DbName|_]}=Req, Fun) ->
+do_db_req(#httpd{user_ctx=UserCtx,path_parts=[DbName|RestParts]}=Req, Fun) ->
LDbName = ?b2l(DbName),
% I hope this lookup is cheap.
case couch_config:get("couch_httpd_auth", "authentication_db") of
@@ -198,7 +198,13 @@
do_db_req(#httpd{user_ctx=UserCtx,path_parts=[DbName|_]}=Req, Fun) ->
couch_db:close(ADb);
_Else -> ok
end,
- case couch_db:open(DbName, [{user_ctx, UserCtx}]) of
+ OpenDbFun = case RestParts of
+ [<<"_design">> | _] ->
+ fun couch_db:open_int/2;
+ _ ->
+ fun couch_db:open/2
+ end,
+ case OpenDbFun(DbName, [{user_ctx, UserCtx}]) of
{ok, Db} ->
try
Fun(Req, Db)
All the rest seems ok to me. Good work.
cheers
> Anonymous Access to Design Docs on private DB's
> -----------------------------------------------
>
> Key: COUCHDB-912
> URL: https://issues.apache.org/jira/browse/COUCHDB-912
> Project: CouchDB
> Issue Type: New Feature
> Components: HTTP Interface
> Reporter: Dale Harvey
> Attachments: anon.patch, anon.patch
>
>
> Right now people need to go through futon in order to login to couchapps
> running on private databases, this is a pretty big limitation on the type of
> couchapps that can be built
> Propose adding the ability for users to flag the design docs as readable for
> anonymous users, could be implemented though an attribute on the design doc?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.