From b4b3d4ced53fb6c19addde2237177b3a56f48733 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Tue, 8 May 2012 16:40:46 +0000 Subject: Fix bug 1131 where session data invalid after updating logged in user --- lib/authenticator.lua | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'lib/authenticator.lua') 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 -- cgit v1.2.3