summaryrefslogtreecommitdiff
path: root/src/rabbit_direct.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rabbit_direct.erl')
-rw-r--r--src/rabbit_direct.erl20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/rabbit_direct.erl b/src/rabbit_direct.erl
index f6140f09..9756dd49 100644
--- a/src/rabbit_direct.erl
+++ b/src/rabbit_direct.erl
@@ -83,14 +83,30 @@ connect({Username, Password}, VHost, Protocol, Pid, Infos) ->
connect0(AuthFun, VHost, Protocol, Pid, Infos) ->
case rabbit:is_running() of
true -> case AuthFun() of
- {ok, User} ->
+ {ok, User = #user{username = Username}} ->
+ notify_auth_result(Username,
+ user_authentication_success, "", []),
connect1(User, VHost, Protocol, Pid, Infos);
- {refused, _M, _A} ->
+ {refused, Username, Msg, Args} ->
+ notify_auth_result(Username,
+ user_authentication_failure, Msg, Args),
{error, {auth_failure, "Refused"}}
end;
false -> {error, broker_not_found_on_node}
end.
+notify_auth_result(Username, AuthResult, Msg, Args) ->
+ EventProps0 = [{connection_type, direct}],
+ EventProps1 = case Username of
+ none -> [{name, ''} | EventProps0];
+ _ -> [{name, Username} | EventProps0]
+ end,
+ EventProps = case Msg of
+ "" -> EventProps1;
+ _ -> [{error, lists:flatten(io_lib:format(Msg, Args))} | EventProps1]
+ end,
+ rabbit_event:notify(AuthResult, EventProps).
+
connect1(User, VHost, Protocol, Pid, Infos) ->
try rabbit_access_control:check_vhost_access(User, VHost, undefined) of
ok -> ok = pg_local:join(rabbit_direct, Pid),