diff --git a/big_tests/tests/ejabberdctl_SUITE.erl b/big_tests/tests/ejabberdctl_SUITE.erl index 3e21aa36786..835e8b5e103 100644 --- a/big_tests/tests/ejabberdctl_SUITE.erl +++ b/big_tests/tests/ejabberdctl_SUITE.erl @@ -243,7 +243,7 @@ end_per_group(Rosters, Config) when (Rosters == roster) or (Rosters == roster_ad SB = string_to_binary(S), UB = string_to_binary(U), Acc = mongoose_helper:new_mongoose_acc(SB), - rpc(mim(), mongoose_hooks, remove_user, [SB, Acc, SB, UB]); + rpc(mim(), mongoose_hooks, remove_user, [Acc, SB, UB]); _ -> ok end diff --git a/big_tests/tests/mam_SUITE.erl b/big_tests/tests/mam_SUITE.erl index 9f9dace7e41..ec96dbcc939 100644 --- a/big_tests/tests/mam_SUITE.erl +++ b/big_tests/tests/mam_SUITE.erl @@ -3046,10 +3046,10 @@ check_user_exist(Config) -> JID = mongoose_helper:make_jid(AdminU, AdminS), ok = rpc(mim(), ejabberd_auth, try_register, [JID, AdminP]), %% admin user already registered - Acc = mongoose_helper:new_mongoose_acc(AdminS), - true = rpc(mim(), mongoose_users, does_user_exist, [Acc, JID]), - false = rpc(mim(), mongoose_users, does_user_exist, [Acc, mongoose_helper:make_jid(<<"fake-user">>, AdminS)]), - false = rpc(mim(), mongoose_users, does_user_exist, [Acc, mongoose_helper:make_jid(AdminU, <<"fake-domain">>)]), + {ok, HostType} = rpc(mim(), mongoose_domain_core, get_host_type, [AdminS]), + true = rpc(mim(), mongoose_users, does_user_exist, [HostType, JID]), + false = rpc(mim(), mongoose_users, does_user_exist, [HostType, mongoose_helper:make_jid(<<"fake-user">>, AdminS)]), + false = rpc(mim(), mongoose_users, does_user_exist, [HostType, mongoose_helper:make_jid(AdminU, <<"fake-domain">>)]), %% cleanup ok = rpc(mim(), ejabberd_auth, remove_user, [JID]). diff --git a/src/auth/ejabberd_auth.erl b/src/auth/ejabberd_auth.erl index 31b8b25ef7b..e4e2eb72e5d 100644 --- a/src/auth/ejabberd_auth.erl +++ b/src/auth/ejabberd_auth.erl @@ -363,7 +363,7 @@ remove_user(#jid{luser = LUser, lserver = LServer}) -> host_type => HostType, lserver => LServer, element => undefined }), - mongoose_hooks:remove_user(HostType, Acc, LServer, LUser), + mongoose_hooks:remove_user(Acc, LServer, LUser), ok; Error -> ?LOG_ERROR(#{what => backend_disallows_user_removal, diff --git a/src/event_pusher/mod_event_pusher_push_plugin_defaults.erl b/src/event_pusher/mod_event_pusher_push_plugin_defaults.erl index 080c5d3fe89..e334496e1b7 100644 --- a/src/event_pusher/mod_event_pusher_push_plugin_defaults.erl +++ b/src/event_pusher/mod_event_pusher_push_plugin_defaults.erl @@ -79,7 +79,8 @@ publish_notification(Acc, _, Payload, Services) -> -spec should_publish(Acc :: mongoose_acc:t(), To :: jid:jid()) -> boolean(). should_publish(Acc, #jid{} = To) -> - try mongoose_users:does_user_exist(Acc, To) of + HostType = mongoose_acc:host_type(Acc), + try mongoose_users:does_user_exist(HostType, To) of false -> false; true -> diff --git a/src/inbox/mod_inbox.erl b/src/inbox/mod_inbox.erl index 65ab7c3b7a8..35af8827595 100644 --- a/src/inbox/mod_inbox.erl +++ b/src/inbox/mod_inbox.erl @@ -300,9 +300,11 @@ maybe_process_message(Acc, Host, From, To, Msg, Dir) -> To :: jid:jid(), Dir :: outgoing | incoming) -> boolean(). inbox_owner_exists(Acc, From, _To, outgoing) -> - mongoose_users:does_user_exist(Acc, From); + HostType = mongoose_acc:host_type(Acc), + mongoose_users:does_user_exist(HostType, From); inbox_owner_exists(Acc, _From, To, incoming) -> - mongoose_users:does_user_exist(Acc, To). + HostType = mongoose_acc:host_type(Acc), + mongoose_users:does_user_exist(HostType, To). maybe_process_acceptable_message(Host, From, To, Msg, Acc, Dir, one2one) -> process_message(Host, From, To, Msg, Acc, Dir, one2one); diff --git a/src/mam/mod_mam.erl b/src/mam/mod_mam.erl index 5d6e8318cb3..97e3c3819c9 100644 --- a/src/mam/mod_mam.erl +++ b/src/mam/mod_mam.erl @@ -281,8 +281,9 @@ filter_packet(drop) -> drop; filter_packet({From, To = #jid{lserver = LServer}, Acc1, Packet}) -> ?LOG_DEBUG(#{what => mam_user_receive_packet, acc => Acc1}), + HostType = mongoose_acc:host_type(Acc1), {AmpEvent, PacketAfterArchive, Acc3} = - case mongoose_users:does_user_exist(Acc1, To) of + case mongoose_users:does_user_exist(HostType, To) of false -> {mam_failed, Packet, Acc1}; true -> diff --git a/src/mongoose_hooks.erl b/src/mongoose_hooks.erl index ab4f89361dc..5650df69ea9 100644 --- a/src/mongoose_hooks.erl +++ b/src/mongoose_hooks.erl @@ -27,7 +27,7 @@ register_command/1, register_subhost/2, register_user/3, - remove_user/4, + remove_user/3, resend_offline_messages_hook/3, rest_user_send_packet/4, session_cleanup/5, @@ -366,13 +366,13 @@ register_user(HostType, LServer, LUser) -> ejabberd_hooks:run_for_host_type(register_user, HostType, ok, [LUser, LServer]). %%% @doc The `remove_user' hook is called when a user is removed. --spec remove_user(HostType, Acc, LServer, LUser) -> Result when - HostType :: mongooseim:host_type(), +-spec remove_user(Acc, LServer, LUser) -> Result when Acc :: mongoose_acc:t(), LServer :: jid:lserver(), LUser :: jid:luser(), Result :: mongoose_acc:t(). -remove_user(HostType, Acc, LServer, LUser) -> +remove_user(Acc, LServer, LUser) -> + HostType = mongoose_acc:host_type(Acc), ejabberd_hooks:run_for_host_type(remove_user, HostType, Acc, [LUser, LServer]). -spec resend_offline_messages_hook(HostType, Acc, JID) -> Result when diff --git a/src/mongoose_users.erl b/src/mongoose_users.erl index 75cb28483df..be124518a2d 100644 --- a/src/mongoose_users.erl +++ b/src/mongoose_users.erl @@ -56,9 +56,8 @@ stop_ets(HostType) -> Tab = tbl_name(HostType), ets:delete(Tab). --spec does_user_exist(Acc :: mongoose_acc:t(), JID :: jid:jid()) -> boolean(). -does_user_exist(Acc, #jid{luser = LUser, lserver = LServer} = JID) -> - HostType = mongoose_acc:host_type(Acc), +-spec does_user_exist(HostType :: mongooseim:host_type(), JID :: jid:jid()) -> boolean(). +does_user_exist(HostType, #jid{luser = LUser, lserver = LServer} = JID) -> case does_cached_user_exist(HostType, LServer, LUser) of true -> true; false ->