Software /
code /
prosody
Comparison
plugins/mod_auth_internal_plain.lua @ 5500:eeea0eb2602a
mod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_register, mod_vcard, mod_muc: Use module:open_store()
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 19 Apr 2013 16:14:06 +0200 |
parent | 5302:52fe5df91c65 |
child | 5509:76744bda82be |
comparison
equal
deleted
inserted
replaced
5498:2a67235e1d4d | 5500:eeea0eb2602a |
---|---|
4 -- | 4 -- |
5 -- This project is MIT/X11 licensed. Please see the | 5 -- This project is MIT/X11 licensed. Please see the |
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 datamanager = require "util.datamanager"; | |
10 local usermanager = require "core.usermanager"; | 9 local usermanager = require "core.usermanager"; |
11 local new_sasl = require "util.sasl".new; | 10 local new_sasl = require "util.sasl".new; |
12 | 11 |
13 local log = module._log; | 12 local log = module._log; |
14 local host = module.host; | 13 local host = module.host; |
14 | |
15 local accounts = module:open_store("accounts"); | |
15 | 16 |
16 -- define auth provider | 17 -- define auth provider |
17 local provider = {}; | 18 local provider = {}; |
18 log("debug", "initializing internal_plain authentication provider for host '%s'", host); | 19 log("debug", "initializing internal_plain authentication provider for host '%s'", host); |
19 | 20 |
20 function provider.test_password(username, password) | 21 function provider.test_password(username, password) |
21 log("debug", "test password '%s' for user %s at host %s", password, username, host); | 22 log("debug", "test password '%s' for user %s at host %s", password, username, host); |
22 local credentials = datamanager.load(username, host, "accounts") or {}; | 23 local credentials = accounts:get(username) or {}; |
23 | 24 |
24 if password == credentials.password then | 25 if password == credentials.password then |
25 return true; | 26 return true; |
26 else | 27 else |
27 return nil, "Auth failed. Invalid username or password."; | 28 return nil, "Auth failed. Invalid username or password."; |
28 end | 29 end |
29 end | 30 end |
30 | 31 |
31 function provider.get_password(username) | 32 function provider.get_password(username) |
32 log("debug", "get_password for username '%s' at host '%s'", username, host); | 33 log("debug", "get_password for username '%s' at host '%s'", username, host); |
33 return (datamanager.load(username, host, "accounts") or {}).password; | 34 return (accounts:get(username) or {}).password; |
34 end | 35 end |
35 | 36 |
36 function provider.set_password(username, password) | 37 function provider.set_password(username, password) |
37 local account = datamanager.load(username, host, "accounts"); | 38 local account = accounts:get(username); |
38 if account then | 39 if account then |
39 account.password = password; | 40 account.password = password; |
40 return datamanager.store(username, host, "accounts", account); | 41 return accounts:set(username, account); |
41 end | 42 end |
42 return nil, "Account not available."; | 43 return nil, "Account not available."; |
43 end | 44 end |
44 | 45 |
45 function provider.user_exists(username) | 46 function provider.user_exists(username) |
46 local account = datamanager.load(username, host, "accounts"); | 47 local account = accounts:get(username); |
47 if not account then | 48 if not account then |
48 log("debug", "account not found for username '%s' at host '%s'", username, host); | 49 log("debug", "account not found for username '%s' at host '%s'", username, host); |
49 return nil, "Auth failed. Invalid username"; | 50 return nil, "Auth failed. Invalid username"; |
50 end | 51 end |
51 return true; | 52 return true; |
52 end | 53 end |
53 | 54 |
54 function provider.users() | 55 function provider.users() |
55 return datamanager.users(host, "accounts"); | 56 return accounts:users(); |
56 end | 57 end |
57 | 58 |
58 function provider.create_user(username, password) | 59 function provider.create_user(username, password) |
59 return datamanager.store(username, host, "accounts", {password = password}); | 60 return accounts:set(username, {password = password}); |
60 end | 61 end |
61 | 62 |
62 function provider.delete_user(username) | 63 function provider.delete_user(username) |
63 return datamanager.store(username, host, "accounts", nil); | 64 return accounts:set(username, nil); |
64 end | 65 end |
65 | 66 |
66 function provider.get_sasl_handler() | 67 function provider.get_sasl_handler() |
67 local getpass_authentication_profile = { | 68 local getpass_authentication_profile = { |
68 plain = function(sasl, username, realm) | 69 plain = function(sasl, username, realm) |