summaryrefslogtreecommitdiffstats
path: root/app/acf_www-controller.lua
diff options
context:
space:
mode:
Diffstat (limited to 'app/acf_www-controller.lua')
-rw-r--r--app/acf_www-controller.lua14
1 files changed, 14 insertions, 0 deletions
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