From: Andreas Granig Date: Wed, 7 Aug 2013 22:34:34 +0200 Subject: sipwise custom auth --- plugins/mod_auth_sql/mod_auth_sql.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/mod_auth_sql/mod_auth_sql.lua b/plugins/mod_auth_sql/mod_auth_sql.lua index 2947a91..631768d 100644 --- a/plugins/mod_auth_sql/mod_auth_sql.lua +++ b/plugins/mod_auth_sql/mod_auth_sql.lua @@ -71,10 +71,13 @@ local function getsql(sql, ...) end local function get_password(username) - local stmt, err = getsql("SELECT `password` FROM `authreg` WHERE `username`=? AND `realm`=?", username, module.host); + local stmt, err = getsql("SELECT `s`.`password`, COALESCE(`p`.`value`, 0) AS `locklevel` FROM `subscriber` AS `s` LEFT JOIN usr_preferences AS `p` ON `p`.`username` = `s`.`username` AND `p`.`domain` = `s`.`domain` AND `p`.`attribute` = 'lock' WHERE `s`.`username`= ? AND lower(`s`.`domain`)= ?", username, module.host); if stmt then for row in stmt:rows(true) do - return row.password; + local locklevel = 0 + row.locklevel; + if locklevel < 4 then + return row.password; + end end end end @@ -109,7 +112,7 @@ function provider.get_sasl_handler() end function provider.users() - local stmt, err = getsql("SELECT `username` FROM `authreg` WHERE `realm`=?", module.host); + local stmt, err = getsql("SELECT `username` FROM `subscriber` WHERE lower(`domain`)=?", module.host); if stmt then local next, state = stmt:rows(true) return function()