Mercurial > prosody-modules
comparison mod_auth_sql/mod_auth_sql.lua @ 367:a6dee73a11e7
Implemented password and user existence check in mod_auth_sql
| author | Tomasz Sterna <tomek@xiaoka.com> |
|---|---|
| date | Wed, 13 Apr 2011 20:41:53 +0200 |
| parents | c2554fee5c21 |
| children | c416db434e5b |
comparison
equal
deleted
inserted
replaced
| 366:c2554fee5c21 | 367:a6dee73a11e7 |
|---|---|
| 77 local provider = { name = "sql" }; | 77 local provider = { name = "sql" }; |
| 78 log("debug", "initializing default authentication provider for host '%s'", host); | 78 log("debug", "initializing default authentication provider for host '%s'", host); |
| 79 | 79 |
| 80 function provider.test_password(username, password) | 80 function provider.test_password(username, password) |
| 81 log("debug", "test password '%s' for user %s at host %s", password, username, module.host); | 81 log("debug", "test password '%s' for user %s at host %s", password, username, module.host); |
| 82 return nil, "Password based auth not supported."; | 82 |
| 83 local stmt, err = getsql("SELECT `username` FROM `authreg` WHERE `username`=? AND `password`=? AND `realm`=?", | |
| 84 username, password, module.host); | |
| 85 | |
| 86 if stmt ~= nil then | |
| 87 if #stmt:rows(true) > 0 then | |
| 88 return true; | |
| 89 end | |
| 90 else | |
| 91 log("error", "QUERY ERROR: %s %s", err, debug.traceback()); | |
| 92 return nil, err; | |
| 93 end | |
| 94 | |
| 95 return false; | |
| 83 end | 96 end |
| 84 | 97 |
| 85 function provider.get_password(username) | 98 function provider.get_password(username) |
| 86 log("debug", "get_password for username '%s' at host '%s'", username, module.host); | 99 log("debug", "get_password for username '%s' at host '%s'", username, module.host); |
| 87 | 100 |
| 100 | 113 |
| 101 return password; | 114 return password; |
| 102 end | 115 end |
| 103 | 116 |
| 104 function provider.set_password(username, password) | 117 function provider.set_password(username, password) |
| 105 return nil, "Password based auth not supported."; | 118 return nil, "Setting password is not supported."; |
| 106 end | 119 end |
| 107 | 120 |
| 108 function provider.user_exists(username) | 121 function provider.user_exists(username) |
| 109 return nil, "User exist check not supported."; | 122 log("debug", "test user %s existence at host %s", username, module.host); |
| 123 | |
| 124 local stmt, err = getsql("SELECT `username` FROM `authreg` WHERE `username`=? AND `realm`=?", | |
| 125 username, module.host); | |
| 126 | |
| 127 if stmt ~= nil then | |
| 128 if #stmt:rows(true) > 0 then | |
| 129 return true; | |
| 130 end | |
| 131 else | |
| 132 log("error", "QUERY ERROR: %s %s", err, debug.traceback()); | |
| 133 return nil, err; | |
| 134 end | |
| 135 | |
| 136 return false; | |
| 110 end | 137 end |
| 111 | 138 |
| 112 function provider.create_user(username, password) | 139 function provider.create_user(username, password) |
| 113 return nil, "Account creation/modification not supported."; | 140 return nil, "Account creation/modification not supported."; |
| 114 end | 141 end |
