From 625d128645df1b27f8e2091d94665756570ad023 Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 30 Jun 2026 11:25:15 +0400 Subject: [PATCH 1/3] Add require_login config option to redirect unauthenticated users --- src/invidious.cr | 15 +++++++++++++++ src/invidious/config.cr | 1 + 2 files changed, 16 insertions(+) diff --git a/src/invidious.cr b/src/invidious.cr index d7c5b80b..6e20cbb3 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -200,6 +200,21 @@ end before_all do |env| Invidious::Routes::BeforeAll.handle(env) + + # Redirect unauthenticated users if require_login is enabled + if CONFIG.require_login && env.get?("user").nil? + path = env.request.path + allowed = { + "/login", "/register", "/api/", + "/sb/", "/vi/", "/s_p/", "/yts/", "/ggpht/", + "/api/manifest/", "/videoplayback", "/latest_version", + "/download", "/companion/", + } + unless allowed.any? { |p| path.starts_with?(p) } + env.redirect "/login?return_path=#{URI.encode_www_form(path)}" + halt env, 302 + end + end end Invidious::Routing.register_all diff --git a/src/invidious/config.cr b/src/invidious/config.cr index af76bb8e..dab1e42a 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -128,6 +128,7 @@ class Config property popular_enabled : Bool = true property captcha_enabled : Bool = true property login_enabled : Bool = true + property require_login : Bool = false property registration_enabled : Bool = true property statistics_enabled : Bool = false property admins : Array(String) = [] of String From c010be3e0cfc9f2a5f7524bc4ec376c26648ef50 Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 30 Jun 2026 11:47:52 +0400 Subject: [PATCH 2/3] Add require_login config option to redirect unauthenticated users --- src/invidious.cr | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/invidious.cr b/src/invidious.cr index 6e20cbb3..b51b12f9 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -206,12 +206,13 @@ before_all do |env| path = env.request.path allowed = { "/login", "/register", "/api/", + "/embed/", "/sb/", "/vi/", "/s_p/", "/yts/", "/ggpht/", "/api/manifest/", "/videoplayback", "/latest_version", "/download", "/companion/", } unless allowed.any? { |p| path.starts_with?(p) } - env.redirect "/login?return_path=#{URI.encode_www_form(path)}" + env.redirect "/login?referer=#{URI.encode_www_form(path)}" halt env, 302 end end From c1877b3a4cf33c9688d9a0055def7f5cae615721 Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 30 Jun 2026 11:55:01 +0400 Subject: [PATCH 3/3] Add require_login and require_login_for_embeds config options --- src/invidious.cr | 7 +++++-- src/invidious/config.cr | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/invidious.cr b/src/invidious.cr index b51b12f9..11490f58 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -206,12 +206,15 @@ before_all do |env| path = env.request.path allowed = { "/login", "/register", "/api/", - "/embed/", "/sb/", "/vi/", "/s_p/", "/yts/", "/ggpht/", "/api/manifest/", "/videoplayback", "/latest_version", "/download", "/companion/", } - unless allowed.any? { |p| path.starts_with?(p) } + + is_allowed = allowed.any? { |p| path.starts_with?(p) } + is_allowed ||= path.starts_with?("/embed/") && !CONFIG.require_login_for_embeds + + unless is_allowed env.redirect "/login?referer=#{URI.encode_www_form(path)}" halt env, 302 end diff --git a/src/invidious/config.cr b/src/invidious/config.cr index dab1e42a..ea813619 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -129,6 +129,7 @@ class Config property captcha_enabled : Bool = true property login_enabled : Bool = true property require_login : Bool = false + property require_login_for_embeds : Bool = false property registration_enabled : Bool = true property statistics_enabled : Bool = false property admins : Array(String) = [] of String