diff options
author | Ted Trask <ttrask01@yahoo.com> | 2009-06-10 14:45:23 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2009-06-10 14:45:23 +0000 |
commit | d8056b081fd3998e19242e3067786d6db4cf3f18 (patch) | |
tree | 04a9db97c8865fe6d61aaa570b77f650656668a9 | |
parent | d19ae729c62045f50757e7a29a9e0553d1735d0a (diff) | |
download | acf-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.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 |