Respect base url setting when redirecting

This commit is contained in:
Alex Ling 2020-05-23 10:42:59 +00:00
parent 8658cb8306
commit 60d4cee0a9
5 changed files with 14 additions and 9 deletions

View File

@ -11,7 +11,7 @@ class AuthHandler < Kemal::Handler
cookie = env.request.cookies.find { |c| c.name == "token" }
if cookie.nil? || !@storage.verify_token cookie.value
return env.redirect "/login"
return redirect env, "/login"
end
if request_path_startswith env, ["/admin", "/api/admin", "/download"]

View File

@ -48,13 +48,13 @@ class AdminRouter < Router
@context.storage.new_user username, password, admin
env.redirect "/admin/user"
redirect env, "/admin/user"
rescue e
@context.error e
redirect_url = URI.new \
path: "/admin/user/edit",
query: hash_to_query({"error" => e.message})
env.redirect redirect_url.to_s
redirect env, redirect_url.to_s
end
post "/admin/user/edit/:original_username" do |env|
@ -85,14 +85,14 @@ class AdminRouter < Router
@context.storage.update_user \
original_username, username, password, admin
env.redirect "/admin/user"
redirect env, "/admin/user"
rescue e
@context.error e
redirect_url = URI.new \
path: "/admin/user/edit",
query: hash_to_query({"username" => original_username, \
"admin" => admin, "error" => e.message})
env.redirect redirect_url.to_s
redirect env, redirect_url.to_s
end
get "/admin/downloads" do |env|

View File

@ -13,7 +13,7 @@ class MainRouter < Router
rescue e
@context.error "Error when attempting to log out: #{e}"
ensure
env.redirect "/login"
redirect env, "/login"
end
end
@ -26,9 +26,9 @@ class MainRouter < Router
cookie = HTTP::Cookie.new "token", token
cookie.expires = Time.local.shift years: 1
env.response.cookies << cookie
env.redirect "/"
redirect env, "/"
rescue
env.redirect "/login"
redirect env, "/login"
end
end

View File

@ -15,7 +15,7 @@ class ReaderRouter < Router
# might not have actually read them
page = [page - 2 * IMGS_PER_PAGE, 1].max
env.redirect "/reader/#{title.id}/#{entry.id}/#{page}"
redirect env, "/reader/#{title.id}/#{entry.id}/#{page}"
rescue e
@context.error e
env.response.status_code = 404

View File

@ -99,3 +99,8 @@ end
def random_str
UUID.random.to_s.gsub "-", ""
end
def redirect(env, path)
base = Config.current.base_url
env.redirect File.join base, path
end