Software /
code /
prosody
Comparison
core/usermanager.lua @ 3158:3d42e0092888
Backed out changeset 8bd3857a75ee
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 04 Jun 2010 11:54:17 +0100 |
parent | 3053:8bd3857a75ee |
child | 3159:b01a699ddf64 |
comparison
equal
deleted
inserted
replaced
3053:8bd3857a75ee | 3158:3d42e0092888 |
---|---|
42 local function is_cyrus(host) return config.get(host, "core", "sasl_backend") == "cyrus"; end | 42 local function is_cyrus(host) return config.get(host, "core", "sasl_backend") == "cyrus"; end |
43 | 43 |
44 function new_default_provider(host) | 44 function new_default_provider(host) |
45 local provider = { name = "default" }; | 45 local provider = { name = "default" }; |
46 | 46 |
47 function provider:test_password(username, password) | 47 function provider.test_password(username, password) |
48 if is_cyrus(host) then return nil, "Legacy auth not supported with Cyrus SASL."; end | 48 if is_cyrus(host) then return nil, "Legacy auth not supported with Cyrus SASL."; end |
49 local credentials = datamanager.load(username, host, "accounts") or {}; | 49 local credentials = datamanager.load(username, host, "accounts") or {}; |
50 | 50 |
51 if password == credentials.password then | 51 if password == credentials.password then |
52 return true; | 52 return true; |
53 else | 53 else |
54 return nil, "Auth failed. Invalid username or password."; | 54 return nil, "Auth failed. Invalid username or password."; |
55 end | 55 end |
56 end | 56 end |
57 | 57 |
58 function provider:get_password(username) | 58 function provider.get_password(username) |
59 if is_cyrus(host) then return nil, "Passwords unavailable for Cyrus SASL."; end | 59 if is_cyrus(host) then return nil, "Passwords unavailable for Cyrus SASL."; end |
60 return (datamanager.load(username, host, "accounts") or {}).password; | 60 return (datamanager.load(username, host, "accounts") or {}).password; |
61 end | 61 end |
62 | 62 |
63 function provider:set_password(username, password) | 63 function provider.set_password(username, password) |
64 if is_cyrus(host) then return nil, "Passwords unavailable for Cyrus SASL."; end | 64 if is_cyrus(host) then return nil, "Passwords unavailable for Cyrus SASL."; end |
65 local account = datamanager.load(username, host, "accounts"); | 65 local account = datamanager.load(username, host, "accounts"); |
66 if account then | 66 if account then |
67 account.password = password; | 67 account.password = password; |
68 return datamanager.store(username, host, "accounts", account); | 68 return datamanager.store(username, host, "accounts", account); |
69 end | 69 end |
70 return nil, "Account not available."; | 70 return nil, "Account not available."; |
71 end | 71 end |
72 | 72 |
73 function provider:user_exists(username) | 73 function provider.user_exists(username) |
74 if is_cyrus(host) then return true; end | 74 if is_cyrus(host) then return true; end |
75 return datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials | 75 return datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials |
76 end | 76 end |
77 | 77 |
78 function provider:create_user(username, password) | 78 function provider.create_user(username, password) |
79 if is_cyrus(host) then return nil, "Account creation/modification not available with Cyrus SASL."; end | 79 if is_cyrus(host) then return nil, "Account creation/modification not available with Cyrus SASL."; end |
80 return datamanager.store(username, host, "accounts", {password = password}); | 80 return datamanager.store(username, host, "accounts", {password = password}); |
81 end | 81 end |
82 | 82 |
83 function provider:get_supported_methods() | 83 function provider.get_supported_methods() |
84 return {["PLAIN"] = true, ["DIGEST-MD5"] = true}; -- TODO this should be taken from the config | 84 return {["PLAIN"] = true, ["DIGEST-MD5"] = true}; -- TODO this should be taken from the config |
85 end | 85 end |
86 | 86 |
87 function provider:is_admin(jid) | 87 function provider.is_admin(jid) |
88 local admins = config.get(host, "core", "admins"); | 88 local admins = config.get(host, "core", "admins"); |
89 if admins ~= config.get("*", "core", "admins") then | 89 if admins ~= config.get("*", "core", "admins") then |
90 if type(admins) == "table" then | 90 if type(admins) == "table" then |
91 jid = jid_bare(jid); | 91 jid = jid_bare(jid); |
92 for _,admin in ipairs(admins) do | 92 for _,admin in ipairs(admins) do |
100 end | 100 end |
101 return provider; | 101 return provider; |
102 end | 102 end |
103 | 103 |
104 function validate_credentials(host, username, password, method) | 104 function validate_credentials(host, username, password, method) |
105 return hosts[host].users:test_password(username, password); | 105 return hosts[host].users.test_password(username, password); |
106 end | 106 end |
107 | 107 |
108 function get_password(username, host) | 108 function get_password(username, host) |
109 return hosts[host].users:get_password(username); | 109 return hosts[host].users.get_password(username); |
110 end | 110 end |
111 | 111 |
112 function set_password(username, host, password) | 112 function set_password(username, host, password) |
113 return hosts[host].users:set_password(username, password); | 113 return hosts[host].users.set_password(username, password); |
114 end | 114 end |
115 | 115 |
116 function user_exists(username, host) | 116 function user_exists(username, host) |
117 return hosts[host].users:user_exists(username); | 117 return hosts[host].users.user_exists(username); |
118 end | 118 end |
119 | 119 |
120 function create_user(username, password, host) | 120 function create_user(username, password, host) |
121 return hosts[host].users:create_user(username, password); | 121 return hosts[host].users.create_user(username, password); |
122 end | 122 end |
123 | 123 |
124 function get_supported_methods(host) | 124 function get_supported_methods(host) |
125 return hosts[host].users:get_supported_methods(); | 125 return hosts[host].users.get_supported_methods(); |
126 end | 126 end |
127 | 127 |
128 function is_admin(jid, host) | 128 function is_admin(jid, host) |
129 if host and host ~= "*" then | 129 if host and host ~= "*" then |
130 return hosts[host].users:is_admin(jid); | 130 return hosts[host].users.is_admin(jid); |
131 else -- Test only whether this JID is a global admin | 131 else -- Test only whether this JID is a global admin |
132 local admins = config.get("*", "core", "admins"); | 132 local admins = config.get("*", "core", "admins"); |
133 if type(admins) == "table" then | 133 if type(admins) == "table" then |
134 jid = jid_bare(jid); | 134 jid = jid_bare(jid); |
135 for _,admin in ipairs(admins) do | 135 for _,admin in ipairs(admins) do |