From ce7ac8d6ca466e22e20810e236794c806aeecb51 Mon Sep 17 00:00:00 2001 From: ModZero Date: Fri, 27 Oct 2023 16:00:34 +0200 Subject: [PATCH] Add login restriction https://github.com/iv-org/invidious/issues/446#issuecomment-1342296218 --- src/invidious/config.cr | 1 + src/invidious/routes/before_all.cr | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/invidious/config.cr b/src/invidious/config.cr index 429d9246..00b49c81 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -84,6 +84,7 @@ class Config # Used to tell Invidious it is behind a proxy, so links to resources should be https:// property https_only : Bool? + property login_only : Bool? # HMAC signing key for CSRF tokens and verifying pubsub subscriptions property hmac_key : String = "" # Domain to be used for links to resources on the site where an absolute URL is required diff --git a/src/invidious/routes/before_all.cr b/src/invidious/routes/before_all.cr index 396840a4..4ee7282f 100644 --- a/src/invidious/routes/before_all.cr +++ b/src/invidious/routes/before_all.cr @@ -122,5 +122,11 @@ module Invidious::Routes::BeforeAll end env.set "current_page", URI.encode_www_form(current_page) + + unregistered_path_whitelist = {"/", "/login", "/licenses", "/privacy"} + if !env.get?("user") && !unregistered_path_whitelist.includes?(env.request.path) && CONFIG.login_only + env.response.headers["Location"] = "/login" + haltf env, status_code: 302 + end end end