Comparison

mod_auth_external/mod_auth_external.lua @ 816:960007b0901e

mod_auth_external, mod_auth_internal_yubikey: Get rid of useless wrapper function around the auth provider.
author Waqas Hussain <waqas20@gmail.com>
date Thu, 13 Sep 2012 00:17:42 +0500
parent 814:881ec9919144
child 846:5ddc43ce8993
comparison
equal deleted inserted replaced
815:b16b291d68c3 816:960007b0901e
91 --proc = nil; 91 --proc = nil;
92 return nil, "internal-server-error"; 92 return nil, "internal-server-error";
93 end 93 end
94 end 94 end
95 95
96 function new_external_provider(host) 96 local host = module.host;
97 local provider = {}; 97 local provider = {};
98 98
99 function provider.test_password(username, password) 99 function provider.test_password(username, password)
100 return do_query("auth", username, password); 100 return do_query("auth", username, password);
101 end
102
103 function provider.set_password(username, password)
104 return do_query("setpass", username, password);
105 end
106
107 function provider.user_exists(username)
108 return do_query("isuser", username);
109 end
110
111 function provider.create_user(username, password) return nil, "Account creation/modification not available."; end
112
113 function provider.get_sasl_handler()
114 local testpass_authentication_profile = {
115 plain_test = function(sasl, username, password, realm)
116 local prepped_username = nodeprep(username);
117 if not prepped_username then
118 log("debug", "NODEprep failed on username: %s", username);
119 return "", nil;
120 end
121 return usermanager.test_password(prepped_username, realm, password), true;
122 end,
123 };
124 return new_sasl(module.host, testpass_authentication_profile);
125 end
126
127 function provider.is_admin(jid)
128 local admins = config.get(host, "core", "admins");
129 if admins ~= config.get("*", "core", "admins") then
130 if type(admins) == "table" then
131 jid = jid_bare(jid);
132 for _,admin in ipairs(admins) do
133 if admin == jid then return true; end
134 end
135 elseif admins then
136 log("error", "Option 'admins' for host '%s' is not a table", host);
137 end
138 end
139 return usermanager.is_admin(jid); -- Test whether it's a global admin instead
140 end
141
142 return provider;
143 end 101 end
144 102
145 module:provides("auth", new_external_provider(module.host)); 103 function provider.set_password(username, password)
104 return do_query("setpass", username, password);
105 end
106
107 function provider.user_exists(username)
108 return do_query("isuser", username);
109 end
110
111 function provider.create_user(username, password) return nil, "Account creation/modification not available."; end
112
113 function provider.get_sasl_handler()
114 local testpass_authentication_profile = {
115 plain_test = function(sasl, username, password, realm)
116 local prepped_username = nodeprep(username);
117 if not prepped_username then
118 log("debug", "NODEprep failed on username: %s", username);
119 return "", nil;
120 end
121 return usermanager.test_password(prepped_username, realm, password), true;
122 end,
123 };
124 return new_sasl(host, testpass_authentication_profile);
125 end
126
127 function provider.is_admin(jid)
128 local admins = config.get(host, "core", "admins");
129 if admins ~= config.get("*", "core", "admins") then
130 if type(admins) == "table" then
131 jid = jid_bare(jid);
132 for _,admin in ipairs(admins) do
133 if admin == jid then return true; end
134 end
135 elseif admins then
136 log("error", "Option 'admins' for host '%s' is not a table", host);
137 end
138 end
139 return usermanager.is_admin(jid); -- Test whether it's a global admin instead
140 end
141
142 module:provides("auth", provider);