]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: passdb-imap - Add support for passdb_fields
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Wed, 28 Feb 2024 16:49:50 +0000 (17:49 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:13 +0000 (12:34 +0200)
src/auth/passdb-imap.c

index a68903486ea69d3afd011086d1676100a0293917..7ed72ea4c1585d0106a1241ee7d5578f05a57f59 100644 (file)
@@ -9,6 +9,25 @@
 
 #define DNS_CLIENT_SOCKET_NAME "dns-client"
 
+struct passdb_imap_settings {
+       pool_t pool;
+};
+
+static const struct setting_define passdb_imap_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "passdb_imapc" },
+
+       SETTING_DEFINE_LIST_END,
+};
+
+const struct setting_parser_info passdb_imap_setting_parser_info = {
+       .name = "auth_imapc",
+
+       .defines = passdb_imap_setting_defines,
+
+       .struct_size = sizeof(struct passdb_imap_settings),
+       .pool_offset1 = 1 + offsetof(struct passdb_imap_settings, pool),
+};
+
 struct imap_auth_request {
        struct imapc_client *client;
        struct auth_request *auth_request;
@@ -79,6 +98,11 @@ passdb_imap_verify_plain(struct auth_request *auth_request,
                .override_password = password,
        };
 
+       if (auth_request_set_passdb_fields(auth_request, NULL) < 0) {
+               callback(PASSDB_RESULT_INTERNAL_FAILURE, auth_request);
+               return;
+       }
+
        request = p_new(auth_request->pool, struct imap_auth_request, 1);
        request->client = imapc_client_init(&params, authdb_event(auth_request));
        request->auth_request = auth_request;
@@ -91,6 +115,7 @@ passdb_imap_verify_plain(struct auth_request *auth_request,
 
 static struct passdb_module_interface passdb_imap_plugin = {
        .name = "imap",
+       .fields_supported = TRUE,
        .verify_plain = passdb_imap_verify_plain,
 };