diff options
author | Badlop <badlop@process-one.net> | 2022-04-05 13:28:54 +0200 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2022-04-06 11:11:21 +0200 |
commit | 170ea134d64cd8de887afd417868e5e5a4503778 (patch) | |
tree | c824269d2a37a93462d06abfa9be6c52055e9406 /src | |
parent | Fix compilation with Erlang 19 (diff) |
Set Converse auth and register options based on ejabberd configuration
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_conversejs.erl | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/mod_conversejs.erl b/src/mod_conversejs.erl index ce943b330..5be937ad4 100644 --- a/src/mod_conversejs.erl +++ b/src/mod_conversejs.erl @@ -51,7 +51,9 @@ depends(_Host, _Opts) -> []. process([], #request{method = 'GET', host = Host, raw_path = RawPath}) -> - ExtraOptions = get_extra_options(Host), + ExtraOptions = get_auth_options(Host) + ++ get_register_options(Host) + ++ get_extra_options(Host), DomainRaw = gen_mod:get_module_opt(Host, ?MODULE, default_domain), Domain = misc:expand_keyword(<<"@HOST@">>, DomainRaw, Host), Script = get_file_url(Host, conversejs_script, @@ -61,7 +63,6 @@ process([], #request{method = 'GET', host = Host, raw_path = RawPath}) -> <<RawPath/binary, "/converse.min.css">>, <<"https://cdn.conversejs.org/dist/converse.min.css">>), Init = [{<<"discover_connection_methods">>, false}, - {<<"jid">>, Domain}, {<<"default_domain">>, Domain}, {<<"domain_placeholder">>, Domain}, {<<"registration_domain">>, Domain}, @@ -161,6 +162,31 @@ content_type(Filename) -> %% Options parsing %%---------------------------------------------------------------------- +get_auth_options(Domain) -> + case {ejabberd_auth_anonymous:is_login_anonymous_enabled(Domain), + ejabberd_auth_anonymous:is_sasl_anonymous_enabled(Domain)} of + {false, false} -> + [{<<"authentication">>, <<"login">>}]; + {true, false} -> + [{<<"authentication">>, <<"external">>}]; + {_, true} -> + [{<<"authentication">>, <<"anonymous">>}, + {<<"jid">>, Domain}] + end. + +get_register_options(Server) -> + AuthSupportsRegister = + lists:any( + fun(ejabberd_auth_mnesia) -> true; + (ejabberd_auth_external) -> true; + (ejabberd_auth_sql) -> true; + (_) -> false + end, + ejabberd_auth:auth_modules(Server)), + Modules = mod_register_opt:allow_modules(Server), + ModRegisterAllowsMe = (Modules == all) orelse lists:member(?MODULE, Modules), + [{<<"allow_registration">>, AuthSupportsRegister and ModRegisterAllowsMe}]. + get_extra_options(Host) -> RawOpts = gen_mod:get_module_opt(Host, ?MODULE, conversejs_options), lists:map(fun({Name, <<"true">>}) -> {Name, true}; |