summaryrefslogtreecommitdiff
path: root/deps/rabbitmq_auth_backend_cache/priv/schema/rabbitmq_auth_backend_cache.schema
blob: 383931f20a0483176ec5eddc9b213bd4f1407b54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

%% ==========================================================================
%% ----------------------------------------------------------------------------
%% RabbitMQ Authorization cache
%%
%% ----------------------------------------------------------------------------

{mapping, "auth_cache.cached_backend", "rabbitmq_auth_backend_cache.cached_backend",[
    {datatype, atom}
]}.

{mapping, "auth_cache.cached_backend.authn", "rabbitmq_auth_backend_cache.cached_backend",[
    {datatype, atom}
]}.

{mapping, "auth_cache.cached_backend.authz", "rabbitmq_auth_backend_cache.cached_backend",[
    {datatype, atom}
]}.


{translation, "rabbitmq_auth_backend_cache.cached_backend",
fun(Conf) ->
    BackendModule = fun
        (internal)  -> rabbit_auth_backend_internal;
        (ldap)      -> rabbit_auth_backend_ldap;
        (http)      -> rabbit_auth_backend_http;
        (amqp)      -> rabbit_auth_backend_amqp;
        (dummy)     -> rabbit_auth_backend_dummy;
        (undefined) -> undefined;
        (Other) when is_atom(Other) -> Other;
        (_) -> cuttlefish:invalid("Unknown/unsupported auth backend")
    end,
    AuthN = BackendModule(cuttlefish:conf_get("auth_cache.cached_backend.authn", Conf, undefined)),
    AuthZ = BackendModule(cuttlefish:conf_get("auth_cache.cached_backend.authz", Conf, undefined)),
    Common = BackendModule(cuttlefish:conf_get("auth_cache.cached_backend", Conf, undefined)),
    case {Common, AuthN, AuthZ} of
        {undefined, V, undefined} when V =/= undefined ->
            cuttlefish:warn(io_lib:format("Cached authZ backend undefined. Using ~p", [AuthN])),
            {AuthN, AuthN};
        {undefined, undefined, V} when V =/= undefined ->
            cuttlefish:warn(io_lib:format("Cached authN backend undefined. Using ~p", [AuthZ])),
            {AuthZ, AuthZ};
        {V, undefined, undefined} when V =/= undefined ->
            Common;
        {undefined, V, V1} when V =/= undefined, V1 =/= undefined ->
            {AuthN, AuthZ};
        _ ->
            cuttlefish:invalid(iolist_to_binary(io_lib:format("Cached auth backend already defined", [])))
    end
end}.

{mapping, "auth_cache.cache_ttl", "rabbitmq_auth_backend_cache.cache_ttl", [
    {datatype, integer}, {validators, ["non_negative_integer"]}
]}.

{mapping, "auth_cache.cache_module", "rabbitmq_auth_backend_cache.cache_module", [
    {datatype, atom}
]}.

{mapping, "auth_cache.cache_refusals", "rabbitmq_auth_backend_cache.cache_refusals", [
    {datatype, {enum, [true, false]}}
]}.