diff options
author | Ted Trask <ttrask01@yahoo.com> | 2012-05-08 16:40:46 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2012-05-08 16:40:46 +0000 |
commit | b4b3d4ced53fb6c19addde2237177b3a56f48733 (patch) | |
tree | 1c700e5b1120a2cf5cb92bdca59cff9a08ca5754 | |
parent | 6e8248105c4089fe57472fcf91f15a0b408434c8 (diff) | |
download | acf-core-b4b3d4ced53fb6c19addde2237177b3a56f48733.tar.bz2 acf-core-b4b3d4ced53fb6c19addde2237177b3a56f48733.tar.xz |
Fix bug 1131 where session data invalid after updating logged in user
-rw-r--r-- | lib/authenticator.lua | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/authenticator.lua b/lib/authenticator.lua index 8a16d07..db4d3f7 100644 --- a/lib/authenticator.lua +++ b/lib/authenticator.lua @@ -109,6 +109,25 @@ local mksalt = function() return "$6$"..str.."$" end +local duplicatestructure +duplicatestructure = function(value, saved) + saved = saved or {} + if type(value) == "table" then + if saved[value] then + return saved[value] + else + local output = {} + saved[value] = output + for k,v in pairs(value) do + output[k] = duplicatestructure(v, saved) + end + return output + end + else + return value + end +end + --- public methods -- This function returns true or false, and @@ -168,10 +187,7 @@ write_userinfo = function(self, userinfo) get_id(self, id.userid) if success and self.sessiondata and self.sessiondata.userinfo and self.sessiondata.userinfo.userid == id.userid then - self.sessiondata.userinfo = {} - for name,value in pairs(id) do - self.sessiondata.userinfo[name] = value - end + self.sessiondata.userinfo = duplicatestructure(id) end return success |