summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2009-06-10 14:45:23 +0000
committerTed Trask <ttrask01@yahoo.com>2009-06-10 14:45:23 +0000
commitd8056b081fd3998e19242e3067786d6db4cf3f18 (patch)
tree04a9db97c8865fe6d61aaa570b77f650656668a9
parentd19ae729c62045f50757e7a29a9e0553d1735d0a (diff)
downloadacf-core-d8056b081fd3998e19242e3067786d6db4cf3f18.tar.bz2
acf-core-d8056b081fd3998e19242e3067786d6db4cf3f18.tar.xz
Made session timeout nicer.
Extended logon redirect due to session timeout to save get / post data and referrer info.
-rw-r--r--app/acf-util/logon-model.lua2
-rw-r--r--app/acf_www-controller.lua14
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