mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-11-04 06:31:57 +00:00 
			
		
		
		
	Don't redirect to current page
This commit is contained in:
		@@ -402,8 +402,7 @@ get "/login" do |env|
 | 
			
		||||
    next env.redirect "/feed/subscriptions"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/feed/subscriptions"
 | 
			
		||||
  referer = get_referer(env, "/feed/subscriptions")
 | 
			
		||||
 | 
			
		||||
  account_type = env.params.query["type"]?
 | 
			
		||||
  account_type ||= "invidious"
 | 
			
		||||
@@ -415,21 +414,13 @@ get "/login" do |env|
 | 
			
		||||
  tfa = env.params.query["tfa"]?
 | 
			
		||||
  tfa ||= false
 | 
			
		||||
 | 
			
		||||
  if referer.ends_with? "/login"
 | 
			
		||||
    referer = "/feed/subscriptions"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  if referer.size > 64
 | 
			
		||||
    referer = "/feed/subscriptions"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  templated "login"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# See https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L79
 | 
			
		||||
post "/login" do |env|
 | 
			
		||||
  referer = env.params.query["referer"]?
 | 
			
		||||
  referer ||= "/feed/subscriptions"
 | 
			
		||||
  referer ||= get_referer(env, "/feed/subscriptions")
 | 
			
		||||
 | 
			
		||||
  email = env.params.body["email"]?
 | 
			
		||||
  password = env.params.body["password"]?
 | 
			
		||||
@@ -681,8 +672,7 @@ post "/login" do |env|
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
get "/signout" do |env|
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/"
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  env.request.cookies.each do |cookie|
 | 
			
		||||
    cookie.expires = Time.new(1990, 1, 1)
 | 
			
		||||
@@ -695,26 +685,20 @@ end
 | 
			
		||||
get "/preferences" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/preferences"
 | 
			
		||||
 | 
			
		||||
  if referer.size > 64
 | 
			
		||||
    referer = "/preferences"
 | 
			
		||||
  end
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
    templated "preferences"
 | 
			
		||||
  else
 | 
			
		||||
    env.redirect "/"
 | 
			
		||||
    env.redirect referer
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
post "/preferences" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
 | 
			
		||||
  referer = env.params.query["referer"]?
 | 
			
		||||
  referer ||= "/preferences"
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -801,8 +785,7 @@ end
 | 
			
		||||
get "/toggle_theme" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
 | 
			
		||||
  referer = env.params.query["referer"]?
 | 
			
		||||
  referer ||= "/feed/subscriptions"
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -827,8 +810,7 @@ end
 | 
			
		||||
get "/modify_notifications" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/"
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -874,8 +856,10 @@ end
 | 
			
		||||
get "/subscription_manager" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
 | 
			
		||||
  referer = get_referer(env, "/")
 | 
			
		||||
 | 
			
		||||
  if !user
 | 
			
		||||
    next env.redirect "/"
 | 
			
		||||
    next env.redirect referer
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  user = user.as(User)
 | 
			
		||||
@@ -956,8 +940,8 @@ end
 | 
			
		||||
 | 
			
		||||
get "/data_control" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/"
 | 
			
		||||
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -970,8 +954,8 @@ end
 | 
			
		||||
 | 
			
		||||
post "/data_control" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/"
 | 
			
		||||
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -1079,11 +1063,8 @@ end
 | 
			
		||||
 | 
			
		||||
get "/subscription_ajax" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
 | 
			
		||||
  if !referer || URI.parse(referer).path.try &.== "/subscription_ajax"
 | 
			
		||||
    referer = "/"
 | 
			
		||||
  end
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -1154,8 +1135,8 @@ end
 | 
			
		||||
 | 
			
		||||
get "/clear_watch_history" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= "/"
 | 
			
		||||
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -1170,6 +1151,7 @@ end
 | 
			
		||||
 | 
			
		||||
get "/feed/subscriptions" do |env|
 | 
			
		||||
  user = env.get? "user"
 | 
			
		||||
  referer = get_referer(env)
 | 
			
		||||
 | 
			
		||||
  if user
 | 
			
		||||
    user = user.as(User)
 | 
			
		||||
@@ -1289,7 +1271,7 @@ get "/feed/subscriptions" do |env|
 | 
			
		||||
 | 
			
		||||
    templated "subscriptions"
 | 
			
		||||
  else
 | 
			
		||||
    env.redirect "/"
 | 
			
		||||
    env.redirect referer
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -148,3 +148,16 @@ def make_host_url(ssl, host)
 | 
			
		||||
 | 
			
		||||
  return "#{scheme}#{host}"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def get_referer(env, fallback = "/")
 | 
			
		||||
  referer = env.request.headers["referer"]?
 | 
			
		||||
  referer ||= fallback
 | 
			
		||||
 | 
			
		||||
  referer = URI.parse(referer).full_path
 | 
			
		||||
 | 
			
		||||
  if referer == env.request.path
 | 
			
		||||
    referer = fallback
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  return referer
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user