mirror of
https://github.com/YunoHost/SSOwat.git
synced 2024-09-03 20:06:27 +02:00
Redirection in URL
This commit is contained in:
parent
b7c9e83f90
commit
f51d64388e
1 changed files with 11 additions and 21 deletions
32
access.lua
32
access.lua
|
@ -153,33 +153,25 @@ function display_login_form ()
|
||||||
local args = ngx.req.get_uri_args()
|
local args = ngx.req.get_uri_args()
|
||||||
ngx.req.set_header("Cache-Control", "no-cache")
|
ngx.req.set_header("Cache-Control", "no-cache")
|
||||||
|
|
||||||
-- Redirected from another domain
|
|
||||||
if args.r then
|
|
||||||
local redirect_url = ngx.decode_base64(args.r)
|
|
||||||
set_redirect_cookie(redirect_url)
|
|
||||||
ngx.header["Cache-Control"] = "no-cache"
|
|
||||||
return redirect(portal_url)
|
|
||||||
end
|
|
||||||
|
|
||||||
if args.action and args.action == 'logout' then
|
if args.action and args.action == 'logout' then
|
||||||
-- Logout
|
-- Logout
|
||||||
delete_cookie()
|
delete_cookie()
|
||||||
return redirect(portal_url)
|
return redirect(portal_url)
|
||||||
elseif ngx.var.cookie_SSOwAuthToken
|
|
||||||
and tokens[ngx.var.cookie_SSOwAuthToken]
|
|
||||||
then
|
|
||||||
-- Display normal form
|
|
||||||
return
|
|
||||||
else
|
else
|
||||||
|
-- Set redirect
|
||||||
|
if args.r then set_redirect_cookie(ngx.decode_base64(args.r)) end
|
||||||
-- Set token
|
-- Set token
|
||||||
set_token_cookie()
|
set_token_cookie()
|
||||||
return redirect(portal_url)
|
ngx.header["Cache-Control"] = "no-cache"
|
||||||
|
ngx.header["Set-Cookie"] = cookies
|
||||||
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function do_login ()
|
function do_login ()
|
||||||
ngx.req.read_body()
|
ngx.req.read_body()
|
||||||
local args = ngx.req.get_post_args()
|
local args = ngx.req.get_post_args()
|
||||||
|
local uri_args = ngx.req.get_uri_args()
|
||||||
|
|
||||||
-- CSRF check
|
-- CSRF check
|
||||||
local token = ngx.var.cookie_SSOwAuthToken
|
local token = ngx.var.cookie_SSOwAuthToken
|
||||||
|
@ -190,6 +182,9 @@ function do_login ()
|
||||||
|
|
||||||
if authenticate(args.user, args.password) then
|
if authenticate(args.user, args.password) then
|
||||||
local redirect_url = ngx.var.cookie_SSOwAuthRedirect
|
local redirect_url = ngx.var.cookie_SSOwAuthRedirect
|
||||||
|
if uri_args.r then
|
||||||
|
redirect_url = ngx.decode_base64(uri_args.r)
|
||||||
|
end
|
||||||
if not redirect_url then redirect_url = portal_url end
|
if not redirect_url then redirect_url = portal_url end
|
||||||
connections[args.user] = {}
|
connections[args.user] = {}
|
||||||
connections[args.user]["redirect_url"] = redirect_url
|
connections[args.user]["redirect_url"] = redirect_url
|
||||||
|
@ -297,10 +292,5 @@ end
|
||||||
|
|
||||||
-- Else redirect to portal
|
-- Else redirect to portal
|
||||||
local back_url = ngx.escape_uri(ngx.var.scheme .. "://" .. ngx.var.http_host .. ngx.var.uri)
|
local back_url = ngx.escape_uri(ngx.var.scheme .. "://" .. ngx.var.http_host .. ngx.var.uri)
|
||||||
if set_redirect_cookie(back_url) then
|
-- From another domain
|
||||||
-- From same domain
|
return redirect(portal_url.."?r="..ngx.encode_base64(back_url))
|
||||||
return redirect(portal_url)
|
|
||||||
else
|
|
||||||
-- From another domain
|
|
||||||
return redirect(portal_url.."?r="..ngx.encode_base64(back_url))
|
|
||||||
end
|
|
||||||
|
|
Loading…
Reference in a new issue