equal
deleted
inserted
replaced
6 -- COPYING file in the source package for more information. |
6 -- COPYING file in the source package for more information. |
7 -- |
7 -- |
8 |
8 |
9 local log = require "util.logger".init("auth_cyrus"); |
9 local log = require "util.logger".init("auth_cyrus"); |
10 |
10 |
|
11 local usermanager_user_exists = require "core.usermanager".user_exists; |
|
12 |
11 local cyrus_service_realm = module:get_option("cyrus_service_realm"); |
13 local cyrus_service_realm = module:get_option("cyrus_service_realm"); |
12 local cyrus_service_name = module:get_option("cyrus_service_name"); |
14 local cyrus_service_name = module:get_option("cyrus_service_name"); |
13 local cyrus_application_name = module:get_option("cyrus_application_name"); |
15 local cyrus_application_name = module:get_option("cyrus_application_name"); |
|
16 local require_provisioning = module:get_option("cyrus_require_provisioning") or false; |
14 |
17 |
15 prosody.unlock_globals(); --FIXME: Figure out why this is needed and |
18 prosody.unlock_globals(); --FIXME: Figure out why this is needed and |
16 -- why cyrussasl isn't caught by the sandbox |
19 -- why cyrussasl isn't caught by the sandbox |
17 local cyrus_new = require "util.sasl_cyrus".new; |
20 local cyrus_new = require "util.sasl_cyrus".new; |
18 prosody.lock_globals(); |
21 prosody.lock_globals(); |
39 function provider.set_password(username, password) |
42 function provider.set_password(username, password) |
40 return nil, "Passwords unavailable for Cyrus SASL."; |
43 return nil, "Passwords unavailable for Cyrus SASL."; |
41 end |
44 end |
42 |
45 |
43 function provider.user_exists(username) |
46 function provider.user_exists(username) |
|
47 if require_provisioning then |
|
48 return usermanager_user_exists(username, module.host); |
|
49 end |
44 return true; |
50 return true; |
45 end |
51 end |
46 |
52 |
47 function provider.create_user(username, password) |
53 function provider.create_user(username, password) |
48 return nil, "Account creation/modification not available with Cyrus SASL."; |
54 return nil, "Account creation/modification not available with Cyrus SASL."; |
49 end |
55 end |
50 |
56 |
51 function provider.get_sasl_handler() |
57 function provider.get_sasl_handler() |
52 local realm = module:get_option("sasl_realm") or module.host; |
58 local realm = module:get_option("sasl_realm") or module.host; |
53 return new_sasl(realm); |
59 local handler = new_sasl(realm); |
|
60 if require_provisioning then |
|
61 function handler.require_provisioning(username) |
|
62 return usermanager_user_exists(username, module.host); |
|
63 end |
|
64 end |
|
65 return handler; |
54 end |
66 end |
55 |
67 |
56 return provider; |
68 return provider; |
57 end |
69 end |
58 |
70 |