Software / code / prosody
Comparison
plugins/mod_auth_internal_plain.lua @ 5115:3939960b3c07
mod_auth_{internal_plain,cyrus,anonymous}: Get rid of useless wrapper function new_default_provider.
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Wed, 12 Sep 2012 21:32:12 +0500 |
| parent | 4762:943f9f860ab4 |
| child | 5117:2c7e1ce8f482 |
comparison
equal
deleted
inserted
replaced
| 5113:3393cab2dd6b | 5115:3939960b3c07 |
|---|---|
| 10 local usermanager = require "core.usermanager"; | 10 local usermanager = require "core.usermanager"; |
| 11 local new_sasl = require "util.sasl".new; | 11 local new_sasl = require "util.sasl".new; |
| 12 local nodeprep = require "util.encodings".stringprep.nodeprep; | 12 local nodeprep = require "util.encodings".stringprep.nodeprep; |
| 13 | 13 |
| 14 local log = module._log; | 14 local log = module._log; |
| 15 local host = module.host; | |
| 15 | 16 |
| 16 function new_default_provider(host) | 17 -- define auth provider |
| 17 local provider = { name = "internal_plain" }; | 18 local provider = { name = "internal_plain" }; |
| 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, module.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 = datamanager.load(username, host, "accounts") 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 | |
| 31 function provider.get_password(username) | |
| 32 log("debug", "get_password for username '%s' at host '%s'", username, module.host); | |
| 33 return (datamanager.load(username, host, "accounts") or {}).password; | |
| 34 end | |
| 35 | |
| 36 function provider.set_password(username, password) | |
| 37 local account = datamanager.load(username, host, "accounts"); | |
| 38 if account then | |
| 39 account.password = password; | |
| 40 return datamanager.store(username, host, "accounts", account); | |
| 41 end | |
| 42 return nil, "Account not available."; | |
| 43 end | |
| 44 | |
| 45 function provider.user_exists(username) | |
| 46 local account = datamanager.load(username, host, "accounts"); | |
| 47 if not account then | |
| 48 log("debug", "account not found for username '%s' at host '%s'", username, module.host); | |
| 49 return nil, "Auth failed. Invalid username"; | |
| 50 end | |
| 51 return true; | |
| 52 end | |
| 53 | |
| 54 function provider.create_user(username, password) | |
| 55 return datamanager.store(username, host, "accounts", {password = password}); | |
| 56 end | |
| 57 | |
| 58 function provider.delete_user(username) | |
| 59 return datamanager.store(username, host, "accounts", nil); | |
| 60 end | |
| 61 | |
| 62 function provider.get_sasl_handler() | |
| 63 local getpass_authentication_profile = { | |
| 64 plain = function(sasl, username, realm) | |
| 65 local prepped_username = nodeprep(username); | |
| 66 if not prepped_username then | |
| 67 log("debug", "NODEprep failed on username: %s", username); | |
| 68 return "", nil; | |
| 69 end | |
| 70 local password = usermanager.get_password(prepped_username, realm); | |
| 71 if not password then | |
| 72 return "", nil; | |
| 73 end | |
| 74 return password, true; | |
| 75 end | |
| 76 }; | |
| 77 return new_sasl(module.host, getpass_authentication_profile); | |
| 78 end | |
| 79 | |
| 80 return provider; | |
| 81 end | 30 end |
| 82 | 31 |
| 83 module:add_item("auth-provider", new_default_provider(module.host)); | 32 function provider.get_password(username) |
| 33 log("debug", "get_password for username '%s' at host '%s'", username, host); | |
| 34 return (datamanager.load(username, host, "accounts") or {}).password; | |
| 35 end | |
| 84 | 36 |
| 37 function provider.set_password(username, password) | |
| 38 local account = datamanager.load(username, host, "accounts"); | |
| 39 if account then | |
| 40 account.password = password; | |
| 41 return datamanager.store(username, host, "accounts", account); | |
| 42 end | |
| 43 return nil, "Account not available."; | |
| 44 end | |
| 45 | |
| 46 function provider.user_exists(username) | |
| 47 local account = datamanager.load(username, host, "accounts"); | |
| 48 if not account then | |
| 49 log("debug", "account not found for username '%s' at host '%s'", username, host); | |
| 50 return nil, "Auth failed. Invalid username"; | |
| 51 end | |
| 52 return true; | |
| 53 end | |
| 54 | |
| 55 function provider.create_user(username, password) | |
| 56 return datamanager.store(username, host, "accounts", {password = password}); | |
| 57 end | |
| 58 | |
| 59 function provider.delete_user(username) | |
| 60 return datamanager.store(username, host, "accounts", nil); | |
| 61 end | |
| 62 | |
| 63 function provider.get_sasl_handler() | |
| 64 local getpass_authentication_profile = { | |
| 65 plain = function(sasl, username, realm) | |
| 66 local prepped_username = nodeprep(username); | |
| 67 if not prepped_username then | |
| 68 log("debug", "NODEprep failed on username: %s", username); | |
| 69 return "", nil; | |
| 70 end | |
| 71 local password = usermanager.get_password(prepped_username, realm); | |
| 72 if not password then | |
| 73 return "", nil; | |
| 74 end | |
| 75 return password, true; | |
| 76 end | |
| 77 }; | |
| 78 return new_sasl(host, getpass_authentication_profile); | |
| 79 end | |
| 80 | |
| 81 module:add_item("auth-provider", provider); | |
| 82 |