Split rabbit_access_control up.
This commit is contained in:
parent
a32f1193ea
commit
b8cc1a3c55
|
|
@ -241,7 +241,7 @@ handle_call({get_channel, Name}, _From, State = #state{tables = Tables}) ->
|
||||||
|
|
||||||
handle_call({get_overview, Username}, _From, State = #state{tables = Tables}) ->
|
handle_call({get_overview, Username}, _From, State = #state{tables = Tables}) ->
|
||||||
VHosts = case Username of
|
VHosts = case Username of
|
||||||
all -> rabbit_access_control:list_vhosts();
|
all -> rabbit_vhost:list();
|
||||||
_ -> rabbit_mgmt_util:vhosts(Username)
|
_ -> rabbit_mgmt_util:vhosts(Username)
|
||||||
end,
|
end,
|
||||||
Qs0 = [rabbit_mgmt_format:queue(Q) || V <- VHosts,
|
Qs0 = [rabbit_mgmt_format:queue(Q) || V <- VHosts,
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ is_authorized(ReqData, Context, Fun) ->
|
||||||
vhost(ReqData) ->
|
vhost(ReqData) ->
|
||||||
case id(vhost, ReqData) of
|
case id(vhost, ReqData) of
|
||||||
none -> none;
|
none -> none;
|
||||||
VHost -> case rabbit_access_control:vhost_exists(VHost) of
|
VHost -> case rabbit_vhost:exists(VHost) of
|
||||||
true -> VHost;
|
true -> VHost;
|
||||||
false -> not_found
|
false -> not_found
|
||||||
end
|
end
|
||||||
|
|
@ -275,8 +275,7 @@ amqp_request(VHost, ReqData, Context, Method) ->
|
||||||
|
|
||||||
all_or_one_vhost(ReqData, Fun) ->
|
all_or_one_vhost(ReqData, Fun) ->
|
||||||
case rabbit_mgmt_util:vhost(ReqData) of
|
case rabbit_mgmt_util:vhost(ReqData) of
|
||||||
none -> lists:append(
|
none -> lists:append([Fun(V) || V <- rabbit_vhost:list()]);
|
||||||
[Fun(V) || V <- rabbit_access_control:list_vhosts()]);
|
|
||||||
not_found -> vhost_not_found;
|
not_found -> vhost_not_found;
|
||||||
VHost -> Fun(VHost)
|
VHost -> Fun(VHost)
|
||||||
end.
|
end.
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ add_vhost(VHost) ->
|
||||||
rabbit_mgmt_wm_vhost:put_vhost(VHostName).
|
rabbit_mgmt_wm_vhost:put_vhost(VHostName).
|
||||||
|
|
||||||
add_permission(Permission) ->
|
add_permission(Permission) ->
|
||||||
rabbit_access_control:set_permissions(pget(user, Permission),
|
rabbit_auth_backend_internal:set_permissions(pget(user, Permission),
|
||||||
pget(vhost, Permission),
|
pget(vhost, Permission),
|
||||||
pget(configure, Permission),
|
pget(configure, Permission),
|
||||||
pget(write, Permission),
|
pget(write, Permission),
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ accept_content(ReqData, Context) ->
|
||||||
rabbit_mgmt_util:with_decode(
|
rabbit_mgmt_util:with_decode(
|
||||||
[configure, write, read], ReqData, Context,
|
[configure, write, read], ReqData, Context,
|
||||||
fun([Conf, Write, Read]) ->
|
fun([Conf, Write, Read]) ->
|
||||||
rabbit_access_control:set_permissions(
|
rabbit_auth_backend_internal:set_permissions(
|
||||||
User, VHost, Conf, Write, Read),
|
User, VHost, Conf, Write, Read),
|
||||||
{true, ReqData, Context}
|
{true, ReqData, Context}
|
||||||
end)
|
end)
|
||||||
|
|
@ -67,7 +67,7 @@ accept_content(ReqData, Context) ->
|
||||||
delete_resource(ReqData, Context) ->
|
delete_resource(ReqData, Context) ->
|
||||||
User = rabbit_mgmt_util:id(user, ReqData),
|
User = rabbit_mgmt_util:id(user, ReqData),
|
||||||
VHost = rabbit_mgmt_util:id(vhost, ReqData),
|
VHost = rabbit_mgmt_util:id(vhost, ReqData),
|
||||||
rabbit_access_control:clear_permissions(User, VHost),
|
rabbit_auth_backend_internal:clear_permissions(User, VHost),
|
||||||
{true, ReqData, Context}.
|
{true, ReqData, Context}.
|
||||||
|
|
||||||
is_authorized(ReqData, Context) ->
|
is_authorized(ReqData, Context) ->
|
||||||
|
|
@ -77,13 +77,14 @@ is_authorized(ReqData, Context) ->
|
||||||
|
|
||||||
perms(ReqData) ->
|
perms(ReqData) ->
|
||||||
User = rabbit_mgmt_util:id(user, ReqData),
|
User = rabbit_mgmt_util:id(user, ReqData),
|
||||||
case rabbit_access_control:lookup_user(User) of
|
case rabbit_auth_backend_internal:lookup_user(User) of
|
||||||
{ok, _} ->
|
{ok, _} ->
|
||||||
case rabbit_mgmt_util:vhost(ReqData) of
|
case rabbit_mgmt_util:vhost(ReqData) of
|
||||||
not_found ->
|
not_found ->
|
||||||
not_found;
|
not_found;
|
||||||
VHost ->
|
VHost ->
|
||||||
Perms = rabbit_access_control:list_user_vhost_permissions(
|
Perms =
|
||||||
|
rabbit_auth_backend_internal:list_user_vhost_permissions(
|
||||||
User, VHost),
|
User, VHost),
|
||||||
case Perms of
|
case Perms of
|
||||||
[{Configure, Write, Read}] ->
|
[{Configure, Write, Read}] ->
|
||||||
|
|
|
||||||
|
|
@ -39,4 +39,4 @@ is_authorized(ReqData, Context) ->
|
||||||
|
|
||||||
permissions() ->
|
permissions() ->
|
||||||
[rabbit_mgmt_format:permissions(P) ||
|
[rabbit_mgmt_format:permissions(P) ||
|
||||||
P <- rabbit_access_control:list_permissions()].
|
P <- rabbit_auth_backend_internal:list_permissions()].
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ content_types_provided(ReqData, Context) ->
|
||||||
|
|
||||||
to_json(ReqData, Context) ->
|
to_json(ReqData, Context) ->
|
||||||
User = rabbit_mgmt_util:id(user, ReqData),
|
User = rabbit_mgmt_util:id(user, ReqData),
|
||||||
Perms = rabbit_access_control:list_user_permissions(User),
|
Perms = rabbit_auth_backend_internal:list_user_permissions(User),
|
||||||
rabbit_mgmt_util:reply_list(
|
rabbit_mgmt_util:reply_list(
|
||||||
[rabbit_mgmt_format:permissions({User, VHost,
|
[rabbit_mgmt_format:permissions({User, VHost,
|
||||||
Conf, Write, Read}) ||
|
Conf, Write, Read}) ||
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ content_types_provided(ReqData, Context) ->
|
||||||
|
|
||||||
to_json(ReqData, Context) ->
|
to_json(ReqData, Context) ->
|
||||||
VHost = rabbit_mgmt_util:id(vhost, ReqData),
|
VHost = rabbit_mgmt_util:id(vhost, ReqData),
|
||||||
Perms = rabbit_access_control:list_vhost_permissions(VHost),
|
Perms = rabbit_auth_backend_internal:list_vhost_permissions(VHost),
|
||||||
rabbit_mgmt_util:reply_list(
|
rabbit_mgmt_util:reply_list(
|
||||||
[rabbit_mgmt_format:permissions({User, VHost,
|
[rabbit_mgmt_format:permissions({User, VHost,
|
||||||
Conf, Write, Read}) ||
|
Conf, Write, Read}) ||
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ accept_content(ReqData, Context) ->
|
||||||
|
|
||||||
delete_resource(ReqData, Context) ->
|
delete_resource(ReqData, Context) ->
|
||||||
User = rabbit_mgmt_util:id(user, ReqData),
|
User = rabbit_mgmt_util:id(user, ReqData),
|
||||||
rabbit_access_control:delete_user(User),
|
rabbit_auth_backend_internal:delete_user(User),
|
||||||
{true, ReqData, Context}.
|
{true, ReqData, Context}.
|
||||||
|
|
||||||
is_authorized(ReqData, Context) ->
|
is_authorized(ReqData, Context) ->
|
||||||
|
|
@ -66,35 +66,35 @@ is_authorized(ReqData, Context) ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
user(ReqData) ->
|
user(ReqData) ->
|
||||||
rabbit_access_control:lookup_user(rabbit_mgmt_util:id(user, ReqData)).
|
rabbit_auth_backend_internal:lookup_user(rabbit_mgmt_util:id(user, ReqData)).
|
||||||
|
|
||||||
put_user(User) ->
|
put_user(User) ->
|
||||||
case {proplists:is_defined(password, User),
|
case {proplists:is_defined(password, User),
|
||||||
proplists:is_defined(password_hash, User)} of
|
proplists:is_defined(password_hash, User)} of
|
||||||
{true, _} ->
|
{true, _} ->
|
||||||
Pass = proplists:get_value(password, User),
|
Pass = proplists:get_value(password, User),
|
||||||
put_user(User, Pass, fun rabbit_access_control:change_password/2);
|
put_user(User, Pass, fun rabbit_auth_backend_internal:change_password/2);
|
||||||
{_, true} ->
|
{_, true} ->
|
||||||
Hash = base64:decode(proplists:get_value(password_hash, User)),
|
Hash = base64:decode(proplists:get_value(password_hash, User)),
|
||||||
put_user(User, Hash,
|
put_user(User, Hash,
|
||||||
fun rabbit_access_control:change_password_hash/2);
|
fun rabbit_auth_backend_internal:change_password_hash/2);
|
||||||
_ ->
|
_ ->
|
||||||
put_user(User, <<>>,
|
put_user(User, <<>>,
|
||||||
fun rabbit_access_control:change_password_hash/2)
|
fun rabbit_auth_backend_internal:change_password_hash/2)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
put_user(User, PWArg, PWFun) ->
|
put_user(User, PWArg, PWFun) ->
|
||||||
Username = proplists:get_value(name, User),
|
Username = proplists:get_value(name, User),
|
||||||
IsAdmin = proplists:get_value(administrator, User),
|
IsAdmin = proplists:get_value(administrator, User),
|
||||||
case rabbit_access_control:lookup_user(Username) of
|
case rabbit_auth_backend_internal:lookup_user(Username) of
|
||||||
{error, not_found} ->
|
{error, not_found} ->
|
||||||
rabbit_access_control:add_user(
|
rabbit_auth_backend_internal:add_user(
|
||||||
Username, rabbit_guid:binstring_guid("tmp_"));
|
Username, rabbit_guid:binstring_guid("tmp_"));
|
||||||
_ ->
|
_ ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
PWFun(Username, PWArg),
|
PWFun(Username, PWArg),
|
||||||
case rabbit_mgmt_util:parse_bool(IsAdmin) of
|
case rabbit_mgmt_util:parse_bool(IsAdmin) of
|
||||||
true -> rabbit_access_control:set_admin(Username);
|
true -> rabbit_auth_backend_internal:set_admin(Username);
|
||||||
false -> rabbit_access_control:clear_admin(Username)
|
false -> rabbit_auth_backend_internal:clear_admin(Username)
|
||||||
end.
|
end.
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,6 @@ is_authorized(ReqData, Context) ->
|
||||||
|
|
||||||
users() ->
|
users() ->
|
||||||
[begin
|
[begin
|
||||||
{ok, User} = rabbit_access_control:lookup_user(U),
|
{ok, User} = rabbit_auth_backend_internal:lookup_user(U),
|
||||||
rabbit_mgmt_format:internal_user(User)
|
rabbit_mgmt_format:internal_user(User)
|
||||||
end || {U, _} <- rabbit_access_control:list_users()].
|
end || {U, _} <- rabbit_auth_backend_internal:list_users()].
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ allowed_methods(ReqData, Context) ->
|
||||||
{['HEAD', 'GET', 'PUT', 'DELETE'], ReqData, Context}.
|
{['HEAD', 'GET', 'PUT', 'DELETE'], ReqData, Context}.
|
||||||
|
|
||||||
resource_exists(ReqData, Context) ->
|
resource_exists(ReqData, Context) ->
|
||||||
{rabbit_access_control:vhost_exists(id(ReqData)), ReqData, Context}.
|
{rabbit_vhost:exists(id(ReqData)), ReqData, Context}.
|
||||||
|
|
||||||
to_json(ReqData, Context) ->
|
to_json(ReqData, Context) ->
|
||||||
VHost = [{name, id(ReqData)}],
|
VHost = [{name, id(ReqData)}],
|
||||||
|
|
@ -48,7 +48,7 @@ accept_content(ReqData, Context) ->
|
||||||
|
|
||||||
delete_resource(ReqData, Context) ->
|
delete_resource(ReqData, Context) ->
|
||||||
VHost = id(ReqData),
|
VHost = id(ReqData),
|
||||||
rabbit_access_control:delete_vhost(VHost),
|
rabbit_vhost:delete(VHost),
|
||||||
{true, ReqData, Context}.
|
{true, ReqData, Context}.
|
||||||
|
|
||||||
is_authorized(ReqData, Context) ->
|
is_authorized(ReqData, Context) ->
|
||||||
|
|
@ -60,7 +60,7 @@ id(ReqData) ->
|
||||||
rabbit_mgmt_util:id(vhost, ReqData).
|
rabbit_mgmt_util:id(vhost, ReqData).
|
||||||
|
|
||||||
put_vhost(VHost) ->
|
put_vhost(VHost) ->
|
||||||
case rabbit_access_control:vhost_exists(VHost) of
|
case rabbit_vhost:exists(VHost) of
|
||||||
true -> ok;
|
true -> ok;
|
||||||
false -> rabbit_access_control:add_vhost(VHost)
|
false -> rabbit_vhost:add(VHost)
|
||||||
end.
|
end.
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ is_authorized(ReqData, Context) ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
vhosts() ->
|
vhosts() ->
|
||||||
format(rabbit_access_control:list_vhosts()).
|
format(rabbit_vhost:list()).
|
||||||
|
|
||||||
format(Vs) ->
|
format(Vs) ->
|
||||||
[[{name, N}] || N <- Vs].
|
[[{name, N}] || N <- Vs].
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue