./ct_report/coverage/mongoose_session_api.COVER.html

1 %% @doc Provide an interface for frontends (like graphql or ctl) to manage sessions.
2 -module(mongoose_session_api).
3
4 -export([prepare_reason/1,
5 kick_session/2,
6 kick_session/4,
7 kick_sessions/2]).
8
9 -spec kick_sessions(jid:jid(), binary()) -> [ok].
10 kick_sessions(JID, Reason) ->
11 3 lists:map(
12 fun(Resource) ->
13 2 service_admin_extra_sessions:kick_session(
14 jid:replace_resource(JID, Resource), Reason)
15 end,
16 ejabberd_sm:get_user_resources(JID)).
17
18 -spec kick_session(jid:user(), jid:server(), jid:resource(), list() | binary()) -> ok.
19 kick_session(User, Server, Resource, ReasonText) ->
20 1 kick_session(jid:make(User, Server, Resource), prepare_reason(ReasonText)).
21
22 -spec kick_session(jid:jid(), binary() | list()) -> ok.
23 kick_session(JID, ReasonText) ->
24 3 ejabberd_c2s:terminate_session(JID, prepare_reason(ReasonText)),
25 3 ok.
26
27 -spec prepare_reason(binary() | string()) -> binary().
28 prepare_reason(<<>>) ->
29
:-(
<<"Kicked by administrator">>;
30 prepare_reason([Reason]) ->
31
:-(
prepare_reason(Reason);
32 prepare_reason(Reason) when is_list(Reason) ->
33
:-(
list_to_binary(Reason);
34 prepare_reason(Reason) when is_binary(Reason) ->
35 7 Reason.
Line Hits Source