Mercurial > dovecot > core-2.2
annotate src/auth/passdb-oauth2.c @ 22656:1789bf2a1e01
director: Make sure HOST-RESET-USERS isn't used with max_moving_users=0
The reset command would just hang in that case. doveadm would never have
sent this, so this is just an extra sanity check.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 05 Nov 2017 23:51:56 +0200 |
parents | 036d9f649c8b |
children | cb108f786fb4 |
rev | line source |
---|---|
21579 | 1 /* Copyright (c) 2017 Dovecot authors, see the included COPYING file */ |
2 | |
3 #include "auth-common.h" | |
4 #include "passdb.h" | |
5 #include "db-oauth2.h" | |
6 | |
7 struct oauth2_passdb_module { | |
8 struct passdb_module module; | |
9 struct db_oauth2 *db; | |
10 }; | |
11 | |
12 static void | |
21737
036d9f649c8b
auth: oauth2 - cleanup db_oauth2_lookup_callback_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21734
diff
changeset
|
13 oauth2_verify_plain_continue(struct db_oauth2_request *req, |
036d9f649c8b
auth: oauth2 - cleanup db_oauth2_lookup_callback_t
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21734
diff
changeset
|
14 enum passdb_result result, const char *error, |
21579 | 15 struct auth_request *request) |
16 { | |
21734
8b5f6e2ff4a6
auth: oauth2 - remove db_oauth2_request.failed
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21733
diff
changeset
|
17 if (result == PASSDB_RESULT_INTERNAL_FAILURE) |
21579 | 18 auth_request_log_error(request, AUTH_SUBSYS_DB, "oauth2 failed: %s", |
19 error); | |
21734
8b5f6e2ff4a6
auth: oauth2 - remove db_oauth2_request.failed
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21733
diff
changeset
|
20 else if (result != PASSDB_RESULT_OK) |
21579 | 21 auth_request_log_info(request, AUTH_SUBSYS_DB, "oauth2 failed: %s", |
22 error); | |
21733
01ffe59436af
auth: oauth2 - remove db_oauth2_request.result
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21579
diff
changeset
|
23 req->verify_callback(result, request); |
21579 | 24 auth_request_unref(&request); |
25 } | |
26 | |
27 static void | |
28 oauth2_verify_plain(struct auth_request *request, const char *password, | |
29 verify_plain_callback_t *callback) | |
30 { | |
31 struct oauth2_passdb_module *module = | |
32 (struct oauth2_passdb_module *)request->passdb->passdb; | |
33 struct db_oauth2_request *req = | |
34 p_new(request->pool, struct db_oauth2_request, 1); | |
35 req->pool = request->pool; | |
36 req->verify_callback = callback; | |
37 | |
38 auth_request_ref(request); | |
39 | |
40 db_oauth2_lookup(module->db, req, password, request, oauth2_verify_plain_continue, request); | |
41 } | |
42 | |
43 static struct passdb_module * | |
44 oauth2_preinit(pool_t pool, const char *args) | |
45 { | |
46 struct oauth2_passdb_module *module; | |
47 | |
48 module = p_new(pool, struct oauth2_passdb_module, 1); | |
49 module->db = db_oauth2_init(args); | |
50 return &module->module; | |
51 } | |
52 | |
53 static void oauth2_deinit(struct passdb_module *passdb) | |
54 { | |
55 struct oauth2_passdb_module *module = (struct oauth2_passdb_module *)passdb; | |
56 db_oauth2_unref(&module->db); | |
57 } | |
58 | |
59 struct passdb_module_interface passdb_oauth2 = { | |
60 "oauth2", | |
61 | |
62 oauth2_preinit, | |
63 NULL, | |
64 oauth2_deinit, | |
65 | |
66 oauth2_verify_plain, | |
67 NULL, | |
68 NULL | |
69 }; |