[enh] Custom session timeout (closes #4)

This commit is contained in:
Alexis Gavoty 2014-04-15 16:30:43 +02:00
parent 78828028d3
commit 0ff95a99dc

View file

@ -8,7 +8,6 @@ if not srvkey then
srvkey = tostring(math.random(1111111, 9999999)) srvkey = tostring(math.random(1111111, 9999999))
cache:add("srvkey", srvkey) cache:add("srvkey", srvkey)
end end
oneweek = 60 * 60 * 24 * 7
cookies = {} cookies = {}
-- Load conf file -- Load conf file
@ -34,6 +33,10 @@ if persistent_conf_file ~= nil then
end end
end end
if not conf["session_timeout"] then
conf["session_timeout"] = 60 * 60 * 24 -- one day
end
local portal_url = conf["portal_scheme"].."://".. local portal_url = conf["portal_scheme"].."://"..
conf["portal_domain"].. conf["portal_domain"]..
conf["portal_path"] conf["portal_path"]
@ -82,7 +85,7 @@ function flash (wat, message)
end end
function set_auth_cookie (user, domain) function set_auth_cookie (user, domain)
local maxAge = oneweek local maxAge = conf["session_timeout"]
local expire = ngx.req.start_time() + maxAge local expire = ngx.req.start_time() + maxAge
local session_key = cache:get("session_"..user) local session_key = cache:get("session_"..user)
if not session_key then if not session_key then
@ -192,7 +195,7 @@ function authenticate (user, password)
cache:flush_expired() cache:flush_expired()
if connected then if connected then
cache:add(user.."-password", password, oneweek) cache:add(user.."-password", password, conf["session_timeout"])
return user return user
else else
return false return false
@ -220,11 +223,11 @@ function set_headers (user)
for k,v in pairs(attribs) do for k,v in pairs(attribs) do
if type(v) == "table" then if type(v) == "table" then
for k2,v2 in ipairs(v) do for k2,v2 in ipairs(v) do
if k2 == 1 then cache:set(user.."-"..k, v2, oneweek) end if k2 == 1 then cache:set(user.."-"..k, v2, conf["session_timeout"]) end
cache:set(user.."-"..k.."|"..k2, v2, oneweek) cache:set(user.."-"..k.."|"..k2, v2, conf["session_timeout"])
end end
else else
cache:set(user.."-"..k, v, oneweek) cache:set(user.."-"..k, v, conf["session_timeout"])
end end
end end
end end
@ -430,7 +433,7 @@ function do_edit ()
local password = "{SHA}"..ngx.encode_base64(ngx.sha1_bin(args.newpassword)) local password = "{SHA}"..ngx.encode_base64(ngx.sha1_bin(args.newpassword))
if ldap:modify(dn, {'=', userPassword = password }) then if ldap:modify(dn, {'=', userPassword = password }) then
flash("win", "Password successfully changed") flash("win", "Password successfully changed")
cache:set(user.."-password", args.newpassword, oneweek) cache:set(user.."-password", args.newpassword, conf["session_timeout"])
return redirect(portal_url.."info.html") return redirect(portal_url.."info.html")
else else
flash("fail", "An error occured on password changing") flash("fail", "An error occured on password changing")