Skip to content

Commit 59f5621

Browse files
committed
mod_muc: Run new hooks: registering_nickmuc and registered_nickmuc (#4478)
1 parent c4d9e53 commit 59f5621

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

src/mod_muc.erl

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,14 +1141,37 @@ iq_get_register_info(ServerHost, Host, From, Lang) ->
11411141
xdata = X}.
11421142

11431143
set_nick(ServerHost, Host, From, Nick) ->
1144-
LServer = jid:nameprep(ServerHost),
1145-
Mod = gen_mod:db_mod(LServer, ?MODULE),
1146-
Mod:set_nick(LServer, Host, From, Nick).
1144+
case ejabberd_hooks:run_fold(registering_nickmuc,
1145+
ServerHost,
1146+
true,
1147+
[ServerHost, Host, From, Nick]) of
1148+
false ->
1149+
{atomic, false};
1150+
true ->
1151+
LServer = jid:nameprep(ServerHost),
1152+
Mod = gen_mod:db_mod(LServer, ?MODULE),
1153+
Mod:set_nick(LServer, Host, From, Nick)
1154+
end.
1155+
1156+
set_nick(ServerHost, From, Nick) ->
1157+
lists:foreach(
1158+
fun(MucHost) ->
1159+
set_nick(ServerHost, MucHost, From, Nick)
1160+
end,
1161+
gen_mod:get_module_opt_hosts(ServerHost, mod_muc)).
11471162

11481163
iq_set_register_info(ServerHost, Host, From, Nick,
11491164
Lang) ->
1165+
OldNick = case mod_muc:get_register_nick(ServerHost, Host, From) of
1166+
error -> <<"">>;
1167+
ON when is_binary(ON) -> ON
1168+
end,
11501169
case set_nick(ServerHost, Host, From, Nick) of
1151-
{atomic, ok} -> {result, undefined};
1170+
{atomic, ok} ->
1171+
ejabberd_hooks:run(registered_nickmuc,
1172+
ServerHost,
1173+
[ServerHost, Host, From, Nick, OldNick]),
1174+
{result, undefined};
11521175
{atomic, false} ->
11531176
ErrText = ?T("That nickname is registered by another person"),
11541177
{error, xmpp:err_conflict(ErrText, Lang)};

0 commit comments

Comments
 (0)