plugins/mod_auth_cyrus.lua
changeset 3468 d50e2c937717
parent 3425 26751c628207
child 4159 52eaa2590bfb
equal deleted inserted replaced
3467:c9f4c3aa14a1 3468:d50e2c937717
     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