comparison mod_auth_joomla/mod_auth_joomla.lua @ 753:9d5731af2c27

Merge with Oliver Gerlich
author Matthew Wild <mwild1@gmail.com>
date Fri, 27 Jul 2012 14:29:59 +0100
parents 97f6d7c4aaed
children 881ec9919144
comparison
equal deleted inserted replaced
752:9bbd99f2057a 753:9d5731af2c27
10 local md5 = require "util.hashes".md5; 10 local md5 = require "util.hashes".md5;
11 local uuid_gen = require "util.uuid".generate; 11 local uuid_gen = require "util.uuid".generate;
12 12
13 local connection; 13 local connection;
14 local params = module:get_option("sql"); 14 local params = module:get_option("sql");
15 local prefix = params and params.prefix or "jos_";
15 16
16 local resolve_relative_path = require "core.configmanager".resolve_relative_path; 17 local resolve_relative_path = require "core.configmanager".resolve_relative_path;
17 18
18 local function test_connection() 19 local function test_connection()
19 if not connection then return nil; end 20 if not connection then return nil; end
77 if not stmt then return stmt, err; end 78 if not stmt then return stmt, err; end
78 return stmt:affected(); 79 return stmt:affected();
79 end 80 end
80 81
81 local function get_password(username) 82 local function get_password(username)
82 local stmt, err = getsql("SELECT `password` FROM `jos_users` WHERE `username`=?", username); 83 local stmt, err = getsql("SELECT `password` FROM `"..prefix.."users` WHERE `username`=?", username);
83 if stmt then 84 if stmt then
84 for row in stmt:rows(true) do 85 for row in stmt:rows(true) do
85 return row.password; 86 return row.password;
86 end 87 end
87 end 88 end
88 end 89 end
89 90
90 91
91 local function getCryptedPassword(plaintext, salt) 92 local function getCryptedPassword(plaintext, salt)
92 return md5(plaintext..salt); 93 local salted = plaintext..salt;
94 return md5(salted, true);
93 end 95 end
94 local function joomlaCheckHash(password, hash) 96 local function joomlaCheckHash(password, hash)
95 local crypt, salt = hash:match("^([^:]*):(.*)$"); 97 local crypt, salt = hash:match("^([^:]*):(.*)$");
96 return (crypt or hash) == getCryptedPassword(password, salt or ''); 98 return (crypt or hash) == getCryptedPassword(password, salt or '');
97 end 99 end
116 function provider.get_password(username) 118 function provider.get_password(username)
117 return nil, "Getting password is not supported."; 119 return nil, "Getting password is not supported.";
118 end 120 end
119 function provider.set_password(username, password) 121 function provider.set_password(username, password)
120 local hash = joomlaCreateHash(password); 122 local hash = joomlaCreateHash(password);
121 local stmt, err = setsql("UPDATE `jos_users` SET `password`=? WHERE `username`=?", hash, username); 123 local stmt, err = setsql("UPDATE `"..prefix.."users` SET `password`=? WHERE `username`=?", hash, username);
122 return stmt and true, err; 124 return stmt and true, err;
123 end 125 end
124 function provider.create_user(username, password) 126 function provider.create_user(username, password)
125 return nil, "Account creation/modification not supported."; 127 return nil, "Account creation/modification not supported.";
126 end 128 end