From d8056b081fd3998e19242e3067786d6db4cf3f18 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Wed, 10 Jun 2009 14:45:23 +0000 Subject: Made session timeout nicer. Extended logon redirect due to session timeout to save get / post data and referrer info. --- app/acf_www-controller.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'app/acf_www-controller.lua') 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 -- cgit v1.2.3