diff options
-rw-r--r-- | app/acf-util/logon-model.lua | 2 | ||||
-rw-r--r-- | app/acf_www-controller.lua | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/app/acf-util/logon-model.lua b/app/acf-util/logon-model.lua index c110ee6..34aa46e 100644 --- a/app/acf-util/logon-model.lua +++ b/app/acf-util/logon-model.lua @@ -39,7 +39,7 @@ logon = function (self, userid, password, ip_addr, sessiondir, sessiondata) session.unlink_session(sessiondir, sessiondata.id) -- Clear the current session data for a,b in pairs(sessiondata) do - if a ~= "id" then sessiondata[a] = nil end + if a ~= "id" and a ~= "logonredirect" then sessiondata[a] = nil end end --]] sessiondata.id = session.random_hash(512) diff --git a/app/acf_www-controller.lua b/app/acf_www-controller.lua index de50e2c..28831db 100644 --- a/app/acf_www-controller.lua +++ b/app/acf_www-controller.lua @@ -304,6 +304,12 @@ exception_handler = function (self, message ) "/" .. message.action .. (message.extra or "" ) .. "\n") elseif message.type == "dispatch" then + -- We got a dispatch error because the user session timed out + -- We want to save the URL and any get / post data to resubmit after logon + self.sessiondata.logonredirect = message + self.sessiondata.logonredirect.clientdata = self.clientdata + self.sessiondata.logonredirect.clientdata.sessionid = nil + self.sessiondata.logonredirect.referrer = ENV.HTTP_REFERER io.write ("Location: " .. ENV["SCRIPT_NAME"] .. "/acf-util/logon/logon?redir="..message.prefix..message.controller.."/"..message.action.."\n") else io.write ("Location: " .. ENV.HTTP_REFERER .. "\n") @@ -358,6 +364,14 @@ dispatch = function (self, userprefix, userctlr, useraction) self.conf.action = useraction or "" end + -- This is for get / post data saved for after logon + if self.sessiondata.logonredirect and self.conf.controller == self.sessiondata.logonredirect.controller + and self.conf.action == self.sessiondata.logonredirect.action then + ENV.HTTP_REFERER = self.sessiondata.logonredirect.referrer or ENV.HTTP_REFERER + self.clientdata = self.sessiondata.logonredirect.clientdata + self.sessiondata.logonredirect = nil + end + -- Find the proper controller/action combo local origconf = {} for name,value in pairs(self.conf) do origconf[name]=value end |