./ct_report/coverage/mongoose_graphql_account_admin_mutation.COVER.html

1 -module(mongoose_graphql_account_admin_mutation).
2
3 -export([execute/4]).
4
5 -ignore_xref([execute/4]).
6
7 -include("../mongoose_graphql_types.hrl").
8
9 -import(mongoose_graphql_account_helper, [format_result/2, make_error/2]).
10
11 execute(_Ctx, _Obj, <<"registerUser">>, Args) ->
12 3 register_user(Args);
13 execute(_Ctx, _Obj, <<"removeUser">>, Args) ->
14 2 remove_user(Args);
15 execute(_Ctx, _Obj, <<"removeOldUsers">>, Args) ->
16 2 remove_old_users(Args);
17 execute(_Ctx, _Obj, <<"banUser">>, Args) ->
18 2 ban_user(Args);
19 execute(_Ctx, _Obj, <<"changeUserPassword">>, Args) ->
20 3 change_user_password(Args).
21
22 % Internal
23
24 -spec register_user(map()) -> {ok, map()} | {error, resolver_error()}.
25 register_user(#{<<"domain">> := Domain, <<"username">> := null,
26 <<"password">> := Password}) ->
27 1 case mongoose_account_api:register_generated_user(Domain, Password) of
28 {{ok, Msg}, JID} ->
29 1 {ok, make_user_payload(Msg, JID)};
30 {Result, JID} ->
31
:-(
format_result(Result, #{jid => JID})
32 end;
33 register_user(#{<<"domain">> := Domain, <<"username">> := Username,
34 <<"password">> := Password}) ->
35 2 Result = mongoose_account_api:register_user(Username, Domain, Password),
36 2 format_user_payload(Result, jid:make(Username, Domain, <<>>)).
37
38 -spec remove_user(map()) -> {ok, map()} | {error, resolver_error()}.
39 remove_user(#{<<"user">> := JID}) ->
40 2 Result = mongoose_account_api:unregister_user(JID),
41 2 format_user_payload(Result, JID).
42
43 -spec remove_old_users(map()) -> {ok, map()} | {error, resolver_error()}.
44 remove_old_users(#{<<"domain">> := null, <<"days">> := Days}) ->
45 1 {{ok, Msg}, JIDs} = mongoose_account_api:delete_old_users(Days),
46 1 {ok, make_old_users_payload(Msg, JIDs)};
47 remove_old_users(#{<<"domain">> := Domain, <<"days">> := Days}) ->
48 1 {{ok, Msg}, JIDs} = mongoose_account_api:delete_old_users_for_domain(Domain, Days),
49 1 {ok, make_old_users_payload(Msg, JIDs)}.
50
51 -spec ban_user(map()) -> {ok, map()} | {error, resolver_error()}.
52 ban_user(#{<<"user">> := JID, <<"reason">> := Reason}) ->
53 2 Result = mongoose_account_api:ban_account(JID, Reason),
54 2 format_user_payload(Result, JID).
55
56 -spec change_user_password(map()) -> {ok, map()} | {error, resolver_error()}.
57 change_user_password(#{<<"user">> := JID, <<"newPassword">> := Password}) ->
58 3 Result = mongoose_account_api:change_password(JID, Password),
59 3 format_user_payload(Result, JID).
60
61 -spec format_user_payload({atom(), string()}, jid:jid()) -> {ok, map()} | {error, resolver_error()}.
62 format_user_payload(InResult, JID) ->
63 9 case InResult of
64 {ok, Msg} ->
65 4 {ok, make_user_payload(Msg, jid:to_binary(JID))};
66 Result ->
67 5 make_error(Result, #{jid => JID})
68 end.
69
70 -spec make_user_payload(string(), jid:literal_jid()) -> map().
71 make_user_payload(Msg, JID) ->
72 5 #{<<"message">> => iolist_to_binary(Msg), <<"jid">> => JID}.
73
74 -spec make_old_users_payload(string(), [jid:literal_jid()]) -> map().
75 make_old_users_payload(Msg, JIDs) ->
76 2 Users = lists:map(fun(U) -> {ok, U} end, JIDs),
77 2 #{<<"message">> => iolist_to_binary(Msg), <<"users">> => Users}.
Line Hits Source