summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2009-06-03 17:00:56 +0100
committerMatthias Radestock <matthias@lshift.net>2009-06-03 17:00:56 +0100
commit56a9d55dcafc160671ffe7c27b72cfb0c53e69a5 (patch)
tree2ab9d5f4b0f90f2cf52ffb9384c3e1a4b32c5870 /src
parentc73554779aa309e576f88cad973484b72e0c2302 (diff)
parent1deab24d6ea3c7ea7efa6708f08caa30eecfd14e (diff)
downloadrabbitmq-server-git-56a9d55dcafc160671ffe7c27b72cfb0c53e69a5.tar.gz
merge bug20877 into default
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_access_control.erl10
-rw-r--r--src/rabbit_channel.erl6
2 files changed, 11 insertions, 5 deletions
diff --git a/src/rabbit_access_control.erl b/src/rabbit_access_control.erl
index 54348d9a1c..99b912ec09 100644
--- a/src/rabbit_access_control.erl
+++ b/src/rabbit_access_control.erl
@@ -45,11 +45,13 @@
-ifdef(use_specs).
+-type(permission_atom() :: 'configure' | 'read' | 'write').
+
-spec(check_login/2 :: (binary(), binary()) -> user()).
-spec(user_pass_login/2 :: (username(), password()) -> user()).
-spec(check_vhost_access/2 :: (user(), vhost()) -> 'ok').
-spec(check_resource_access/3 ::
- (username(), r(atom()), non_neg_integer()) -> 'ok').
+ (username(), r(atom()), permission_atom()) -> 'ok').
-spec(add_user/2 :: (username(), password()) -> 'ok').
-spec(delete_user/1 :: (username()) -> 'ok').
-spec(change_password/2 :: (username(), password()) -> 'ok').
@@ -137,6 +139,10 @@ check_vhost_access(#user{username = Username}, VHostPath) ->
[VHostPath, Username])
end.
+permission_index(configure) -> #permission.configure;
+permission_index(write) -> #permission.write;
+permission_index(read) -> #permission.read.
+
check_resource_access(Username,
R = #resource{kind = exchange, name = <<"">>},
Permission) ->
@@ -158,7 +164,7 @@ check_resource_access(Username,
[#user_permission{permission = P}] ->
case regexp:match(
binary_to_list(Name),
- binary_to_list(element(Permission, P))) of
+ binary_to_list(element(permission_index(Permission), P))) of
{match, _, _} -> true;
nomatch -> false
end
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 738e901712..84b414fd7d 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -231,13 +231,13 @@ clear_permission_cache() ->
ok.
check_configure_permitted(Resource, #ch{ username = Username}) ->
- check_resource_access(Username, Resource, #permission.configure).
+ check_resource_access(Username, Resource, configure).
check_write_permitted(Resource, #ch{ username = Username}) ->
- check_resource_access(Username, Resource, #permission.write).
+ check_resource_access(Username, Resource, write).
check_read_permitted(Resource, #ch{ username = Username}) ->
- check_resource_access(Username, Resource, #permission.read).
+ check_resource_access(Username, Resource, read).
expand_queue_name_shortcut(<<>>, #ch{ most_recently_declared_queue = <<>> }) ->
rabbit_misc:protocol_error(