./ct_report/coverage/mongoose_graphql_account_admin_mutation.COVER.html

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