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