]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: auth-request - Add auth_request_set_(pass|user)db_fields_ex()
authorMarco Bettini <marco.bettini@open-xchange.com>
Fri, 14 Jun 2024 15:14:49 +0000 (15:14 +0000)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:13 +0000 (12:34 +0200)
src/auth/auth-request.c
src/auth/auth-request.h

index 02d1462ad1a991845f3f38f23a9cfea08e08bcdc..3db841d3a38049682d61e02fbfd99396edc9e751 100644 (file)
@@ -832,19 +832,28 @@ auth_request_fields_var_expand_lookup(const char *data, void *context,
 int auth_request_set_passdb_fields(struct auth_request *request,
                                   struct auth_fields *fields)
 {
-       struct event *event = event_create(authdb_event(request));
-       const struct auth_passdb_post_settings *post_set;
-       const char *error;
-
        const char *driver_name =
                t_str_replace(request->passdb->passdb->iface.name, '-', '_');
-       struct var_expand_func_table auth_request_fields_funcs[] = {
+       const struct var_expand_func_table fn_table[] = {
                { driver_name, auth_request_fields_var_expand_lookup },
                { NULL, NULL }
        };
+
+       return auth_request_set_passdb_fields_ex(request, fields, STATIC_PASS_SCHEME, fn_table);
+}
+
+int auth_request_set_passdb_fields_ex(struct auth_request *request,
+                                     void *context,
+                                     const char *default_password_scheme,
+                                     const struct var_expand_func_table *fn_table)
+{
+       struct event *event = event_create(authdb_event(request));
+       const struct auth_passdb_post_settings *post_set;
+       const char *error;
+
        struct var_expand_params params = {
-               .func_table = auth_request_fields_funcs,
-               .func_context = fields,
+               .func_table = fn_table,
+               .func_context = context,
        };
        event_set_ptr(event, SETTINGS_EVENT_VAR_EXPAND_PARAMS, &params);
 
@@ -855,28 +864,34 @@ int auth_request_set_passdb_fields(struct auth_request *request,
                return -1;
        }
        auth_request_set_strlist(request, &post_set->fields,
-                                STATIC_PASS_SCHEME);
+                                default_password_scheme);
        settings_free(post_set);
        event_unref(&event);
        return 0;
 }
 
 int auth_request_set_userdb_fields(struct auth_request *request,
-                                  struct auth_fields *fields)
-{
-       struct event *event = event_create(authdb_event(request));
-       const struct auth_userdb_post_settings *post_set;
-       const char *error;
-
+                                  struct auth_fields *fields) {
        const char *driver_name =
                t_str_replace(request->userdb->userdb->iface->name, '-', '_');
-       struct var_expand_func_table auth_request_fields_funcs[] = {
+       const struct var_expand_func_table fn_table[] = {
                { driver_name, auth_request_fields_var_expand_lookup },
                { NULL, NULL }
        };
+
+       return auth_request_set_userdb_fields_ex(request, fields, fn_table);
+}
+
+int auth_request_set_userdb_fields_ex(struct auth_request *request, void *context,
+                                     const struct var_expand_func_table *fn_table)
+{
+       struct event *event = event_create(authdb_event(request));
+       const struct auth_userdb_post_settings *post_set;
+       const char *error;
+
        struct var_expand_params params = {
-               .func_table = auth_request_fields_funcs,
-               .func_context = fields,
+               .func_table = fn_table,
+               .func_context = context,
        };
        event_set_ptr(event, SETTINGS_EVENT_VAR_EXPAND_PARAMS, &params);
 
index 737dda1a917d4f1031d95c00f06c4522b66fd6ae..f82992098147b9035d14e9b17d524f39fc6deab8 100644 (file)
@@ -326,8 +326,14 @@ void auth_request_set_strlist(struct auth_request *request,
 
 int auth_request_set_passdb_fields(struct auth_request *request,
                                   struct auth_fields *fields);
+int auth_request_set_passdb_fields_ex(struct auth_request *request, void *context,
+                                     const char *default_password_scheme,
+                                     const struct var_expand_func_table *fn_table);
+
 int auth_request_set_userdb_fields(struct auth_request *request,
                                   struct auth_fields *fields);
+int auth_request_set_userdb_fields_ex(struct auth_request *request, void *context,
+                                     const struct var_expand_func_table *fn_table);
 
 void auth_request_init_userdb_reply(struct auth_request *request);
 void auth_request_set_userdb_field(struct auth_request *request,