You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2017/09/19 19:15:44 UTC

[5/5] couchdb-cassim git commit: Remove public db record

Remove public db record

COUCHDB-3288


Project: http://git-wip-us.apache.org/repos/asf/couchdb-cassim/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-cassim/commit/86bf25f9
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-cassim/tree/86bf25f9
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-cassim/diff/86bf25f9

Branch: refs/heads/COUCHDB-3288-remove-public-db-record
Commit: 86bf25f9b4485fe5aa76661d43a0ebb5c620e8cb
Parents: 7f03449
Author: Paul J. Davis <pa...@gmail.com>
Authored: Thu Feb 16 09:57:26 2017 -0600
Committer: Paul J. Davis <pa...@gmail.com>
Committed: Tue Sep 19 14:14:18 2017 -0500

----------------------------------------------------------------------
 src/cassim_security.erl | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-cassim/blob/86bf25f9/src/cassim_security.erl
----------------------------------------------------------------------
diff --git a/src/cassim_security.erl b/src/cassim_security.erl
index 08fe791..93c19f5 100644
--- a/src/cassim_security.erl
+++ b/src/cassim_security.erl
@@ -38,9 +38,7 @@ get_security(DbName) ->
     get_security(DbName, [?ADMIN_CTX]).
 
 
-get_security(#db{name=DbName}, Options) ->
-    get_security(DbName, Options);
-get_security(DbName, Options) ->
+get_security(DbName, Options) when is_binary(DbName) ->
     case cassim:is_active() of
         true ->
             UserCtx = couch_util:get_value(user_ctx, Options, #user_ctx{}),
@@ -50,7 +48,9 @@ get_security(DbName, Options) ->
             {proplists:delete(<<"_id">>, SecProps)};
         false ->
             fabric:get_security(DbName, Options)
-    end.
+    end;
+get_security(Db, Options) ->
+    get_security(couch_db:name(Db), Options).
 
 
 get_security_doc(DbName) when is_binary(DbName) ->
@@ -90,20 +90,22 @@ set_security(DbName, SecProps) ->
     set_security(DbName, SecProps, [?ADMIN_CTX]).
 
 
-set_security(#db{name=DbName0}, #doc{}=SecDoc0, Options) ->
+set_security(DbName0, #doc{}=SecDoc0, Options) when is_binary(DbName0) ->
     DbName = mem3:dbname(DbName0),
     MetaId = cassim_metadata_cache:security_meta_id(DbName),
     SecDoc = SecDoc0#doc{id=MetaId},
     UserCtx = couch_util:get_value(user_ctx, Options, #user_ctx{}),
     MetaDbName = cassim_metadata_cache:metadata_db(),
-    MetaDb = #db{name=MetaDbName, user_ctx=?ADMIN_USER},
+    MetaDb = couch_db:clustered_db(MetaDbName, ?ADMIN_USER),
     cassim:verify_admin_role(UserCtx),
     ok = validate_security_doc(SecDoc),
     {Status, Etag, {Body0}} =
         chttpd_db:update_doc(MetaDb, MetaId, SecDoc, Options),
     Body = {proplists:delete(<<"_id">>, Body0)},
     ok = cassim_metadata_cache:cleanup_old_docs(MetaId),
-    {Status, Etag, Body}.
+    {Status, Etag, Body};
+set_security(Db, SecDoc, Options) ->
+    set_security(couch_db:name(Db), SecDoc, Options).
 
 
 migrate_security_props(DbName0, {SecProps}) ->
@@ -111,7 +113,7 @@ migrate_security_props(DbName0, {SecProps}) ->
     MetaId = cassim_metadata_cache:security_meta_id(DbName),
     SecDoc = #doc{id=MetaId, body={SecProps}},
     MetaDbName = cassim_metadata_cache:metadata_db(),
-    MetaDb = #db{name=MetaDbName, user_ctx=?ADMIN_USER},
+    MetaDb = couch_db:clustered_db(MetaDbName, ?ADMIN_USER),
     %% Better way to construct a new #doc{} with the rev?
     {_, _, {Body}} = chttpd_db:update_doc(MetaDb, MetaId, SecDoc, [?ADMIN_CTX]),
     Rev = proplists:get_value(rev, Body),
@@ -149,8 +151,5 @@ validate_roles_list(Field, _Roles) ->
 
 
 check_is_member(UserCtx, SecProps) ->
-    FakeDb = #db{
-        security = SecProps,
-        user_ctx = UserCtx
-    },
+    {ok, FakeDb} = couch_db:clustered_db(<<"foo">>, UserCtx, SecProps),
     couch_db:check_is_member(FakeDb).