Merge 0.9->0.10
[prosody.git] / util / sasl / external.lua
1 local saslprep = require "util.encodings".stringprep.saslprep;
2
3 local _ENV = nil;
4
5 local function external(self, message)
6         message = saslprep(message);
7         local state
8         self.username, state = self.profile.external(message);
9
10         if state == false then
11                 return "failure", "account-disabled";
12         elseif state == nil  then
13                 return "failure", "not-authorized";
14         elseif state == "expired" then
15                 return "false", "credentials-expired";
16         end
17
18         return "success";
19 end
20
21 local function init(registerMechanism)
22         registerMechanism("EXTERNAL", {"external"}, external);
23 end
24
25 return {
26         init = init;
27 }