summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2012-05-08 16:40:46 +0000
committerTed Trask <ttrask01@yahoo.com>2012-05-08 16:40:46 +0000
commitb4b3d4ced53fb6c19addde2237177b3a56f48733 (patch)
tree1c700e5b1120a2cf5cb92bdca59cff9a08ca5754 /lib
parent6e8248105c4089fe57472fcf91f15a0b408434c8 (diff)
downloadacf-core-b4b3d4ced53fb6c19addde2237177b3a56f48733.tar.bz2
acf-core-b4b3d4ced53fb6c19addde2237177b3a56f48733.tar.xz
Fix bug 1131 where session data invalid after updating logged in user
Diffstat (limited to 'lib')
-rw-r--r--lib/authenticator.lua24
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