summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAyanda Dube <ayanda.dube@erlang-solutions.com>2015-10-07 16:42:10 +0100
committerAyanda Dube <ayanda.dube@erlang-solutions.com>2015-10-07 16:42:10 +0100
commit9f8db9d54e0f568f56aa198e7aaea247f8b1df8f (patch)
tree946d3ff0fc2d3ee736ecc4d73744b121de419b0a /src
parentd410cb6c5cea6e4f89032dc2dddffba8bddda101 (diff)
downloadrabbitmq-server-git-9f8db9d54e0f568f56aa198e7aaea247f8b1df8f.tar.gz
Update to use abstraction function rabbit_control_main:emitting_map/4.
Updates list_permissions/2 to use user_permission_filter/2. Updates list_users/0 to use internal_user_filter/1. References #62
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_auth_backend_internal.erl63
1 files changed, 29 insertions, 34 deletions
diff --git a/src/rabbit_auth_backend_internal.erl b/src/rabbit_auth_backend_internal.erl
index 2f42aa1437..93a004f67c 100644
--- a/src/rabbit_auth_backend_internal.erl
+++ b/src/rabbit_auth_backend_internal.erl
@@ -311,49 +311,27 @@ user_perms_info_keys() -> [vhost | ?PERMS_INFO_KEYS].
user_vhost_perms_info_keys() -> ?PERMS_INFO_KEYS.
list_users() ->
- [[{user, Username}, {tags, Tags}] ||
- #internal_user{username = Username, tags = Tags} <-
- mnesia:dirty_match_object(rabbit_user, #internal_user{_ = '_'})].
+ [internal_user_filter(U) ||
+ U <- mnesia:dirty_match_object(rabbit_user, #internal_user{_ = '_'})].
list_users(Ref, AggregatorPid) ->
- [AggregatorPid ! {Ref, [{user, Username}, {tags, Tags}]} ||
- #internal_user{username = Username, tags = Tags} <-
- mnesia:dirty_match_object(rabbit_user, #internal_user{_ = '_'})],
- AggregatorPid ! {Ref, finished},
- ok.
+ rabbit_control_main:emitting_map(
+ AggregatorPid, Ref,
+ fun(U) -> internal_user_filter(U) end,
+ mnesia:dirty_match_object(rabbit_user, #internal_user{_ = '_'})).
list_permissions() ->
list_permissions(perms_info_keys(), match_user_vhost('_', '_')).
list_permissions(Keys, QueryThunk) ->
- [filter_props(Keys, [{user, Username},
- {vhost, VHostPath},
- {configure, ConfigurePerm},
- {write, WritePerm},
- {read, ReadPerm}]) ||
- #user_permission{user_vhost = #user_vhost{username = Username,
- virtual_host = VHostPath},
- permission = #permission{ configure = ConfigurePerm,
- write = WritePerm,
- read = ReadPerm}} <-
- %% TODO: use dirty ops instead
- rabbit_misc:execute_mnesia_transaction(QueryThunk)].
+ [user_permission_filter(Keys, U) ||
+ %% TODO: use dirty ops instead
+ U <- rabbit_misc:execute_mnesia_transaction(QueryThunk)].
list_permissions(Keys, QueryThunk, Ref, AggregatorPid) ->
- [AggregatorPid ! {Ref, filter_props(Keys, [{user, Username},
- {vhost, VHostPath},
- {configure, ConfigurePerm},
- {write, WritePerm},
- {read, ReadPerm}])} ||
- #user_permission{user_vhost =
- #user_vhost{username = Username,
- virtual_host = VHostPath},
- permission = #permission{
- configure = ConfigurePerm,
- write = WritePerm,
- read = ReadPerm}} <-
- rabbit_misc:execute_mnesia_transaction(QueryThunk)],
- AggregatorPid ! {Ref, finished},
+ rabbit_control_main:emitting_map(
+ AggregatorPid, Ref, fun(U) -> user_permission_filter(Keys, U) end,
+ rabbit_misc:execute_mnesia_transaction(QueryThunk)),
ok.
filter_props(Keys, Props) -> [T || T = {K, _} <- Props, lists:member(K, Keys)].
@@ -386,6 +364,23 @@ list_user_vhost_permissions(Username, VHostPath) ->
rabbit_misc:with_user_and_vhost(
Username, VHostPath, match_user_vhost(Username, VHostPath))).
+user_permission_filter(Keys, #user_permission{
+ user_vhost =
+ #user_vhost{username = Username,
+ virtual_host = VHostPath},
+ permission = #permission{
+ configure = ConfigurePerm,
+ write = WritePerm,
+ read = ReadPerm}}) ->
+ filter_props(Keys, [{user, Username},
+ {vhost, VHostPath},
+ {configure, ConfigurePerm},
+ {write, WritePerm},
+ {read, ReadPerm}]).
+
+internal_user_filter(#internal_user{username = Username, tags = Tags}) ->
+ [{user, Username}, {tags, Tags}].
+
match_user_vhost(Username, VHostPath) ->
fun () -> mnesia:match_object(
rabbit_user_permission,