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)