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 |