From ac7b49c1484b4e27a1149310542ccd1e90659ee2 Mon Sep 17 00:00:00 2001
From: Lucky Jain <72547660+lostb053@users.noreply.github.com>
Date: Fri, 14 Nov 2025 16:21:08 +0100
Subject: [PATCH] feat: add option to hide the login button from public-facing
pages (#3922)
Co-authored-by: Henrique Dias
---
cmd/config.go | 4 +++-
cmd/config_init.go | 6 ++++++
cmd/config_set.go | 2 ++
cmd/root.go | 1 +
frontend/src/components/Sidebar.vue | 3 +++
frontend/src/i18n/en.json | 1 +
frontend/src/types/settings.d.ts | 1 +
frontend/src/utils/constants.ts | 2 ++
frontend/src/views/settings/Global.vue | 5 +++++
http/settings.go | 3 +++
http/static.go | 1 +
settings/settings.go | 1 +
12 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/cmd/config.go b/cmd/config.go
index 230a532c..84474f4c 100644
--- a/cmd/config.go
+++ b/cmd/config.go
@@ -31,6 +31,7 @@ func addConfigFlags(flags *pflag.FlagSet) {
addServerFlags(flags)
addUserFlags(flags)
flags.BoolP("signup", "s", false, "allow users to signup")
+ flags.Bool("hide-login-button", false, "hide login button from public pages")
flags.Bool("create-user-dir", false, "generate user's home directory automatically")
flags.Uint("minimum-password-length", settings.DefaultMinimumPasswordLength, "minimum password length for new users")
flags.String("shell", "", "shell command to which other commands should be appended")
@@ -192,9 +193,10 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
fmt.Fprintf(w, "Sign up:\t%t\n", set.Signup)
+ fmt.Fprintf(w, "Hide Login Button:\t%t\n", set.HideLoginButton)
fmt.Fprintf(w, "Create User Dir:\t%t\n", set.CreateUserDir)
fmt.Fprintf(w, "Minimum Password Length:\t%d\n", set.MinimumPasswordLength)
- fmt.Fprintf(w, "Auth method:\t%s\n", set.AuthMethod)
+ fmt.Fprintf(w, "Auth Method:\t%s\n", set.AuthMethod)
fmt.Fprintf(w, "Shell:\t%s\t\n", strings.Join(set.Shell, " "))
fmt.Fprintln(w, "\nBranding:")
fmt.Fprintf(w, "\tName:\t%s\n", set.Branding.Name)
diff --git a/cmd/config_init.go b/cmd/config_init.go
index 26db2d27..693b6ace 100644
--- a/cmd/config_init.go
+++ b/cmd/config_init.go
@@ -41,6 +41,11 @@ override the options.`,
return err
}
+ hideLoginButton, err := getBool(flags, "hide-login-button")
+ if err != nil {
+ return err
+ }
+
createUserDir, err := getBool(flags, "create-user-dir")
if err != nil {
return err
@@ -84,6 +89,7 @@ override the options.`,
s := &settings.Settings{
Key: key,
Signup: signup,
+ HideLoginButton: hideLoginButton,
CreateUserDir: createUserDir,
MinimumPasswordLength: minLength,
Shell: convertCmdStrToCmdArray(shell),
diff --git a/cmd/config_set.go b/cmd/config_set.go
index a7f66902..255ef470 100644
--- a/cmd/config_set.go
+++ b/cmd/config_set.go
@@ -50,6 +50,8 @@ you want to change. Other options will remain unchanged.`,
ser.Port, err = getString(flags, flag.Name)
case "log":
ser.Log, err = getString(flags, flag.Name)
+ case "hide-login-button":
+ set.HideLoginButton, err = getBool(flags, flag.Name)
case "signup":
set.Signup, err = getBool(flags, flag.Name)
case "auth.method":
diff --git a/cmd/root.go b/cmd/root.go
index a9704cf4..8f793742 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -420,6 +420,7 @@ func quickSetup(flags *pflag.FlagSet, d pythonData) error {
set := &settings.Settings{
Key: generateKey(),
Signup: false,
+ HideLoginButton: true,
CreateUserDir: false,
MinimumPasswordLength: settings.DefaultMinimumPasswordLength,
UserHomeBasePath: settings.DefaultUsersHomeBasePath,
diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue
index 5bbf8847..531ec583 100644
--- a/frontend/src/components/Sidebar.vue
+++ b/frontend/src/components/Sidebar.vue
@@ -63,6 +63,7 @@
signup,
+ hideLoginButton: () => hideLoginButton,
version: () => version,
disableExternal: () => disableExternal,
disableUsedPercentage: () => disableUsedPercentage,
diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json
index 15a297df..9272cff4 100644
--- a/frontend/src/i18n/en.json
+++ b/frontend/src/i18n/en.json
@@ -166,6 +166,7 @@
"allowNew": "Create new files and directories",
"allowPublish": "Publish new posts and pages",
"allowSignup": "Allow users to signup",
+ "hideLoginButton": "Hide the login button from public pages",
"avoidChanges": "(leave blank to avoid changes)",
"branding": "Branding",
"brandingDirectoryPath": "Branding directory path",
diff --git a/frontend/src/types/settings.d.ts b/frontend/src/types/settings.d.ts
index ba56c612..562c718b 100644
--- a/frontend/src/types/settings.d.ts
+++ b/frontend/src/types/settings.d.ts
@@ -1,6 +1,7 @@
interface ISettings {
signup: boolean;
createUserDir: boolean;
+ hideLoginButton: boolean;
minimumPasswordLength: number;
userHomeBasePath: string;
defaults: SettingsDefaults;
diff --git a/frontend/src/utils/constants.ts b/frontend/src/utils/constants.ts
index 3f131b1a..ae491397 100644
--- a/frontend/src/utils/constants.ts
+++ b/frontend/src/utils/constants.ts
@@ -18,6 +18,7 @@ const enableExec: boolean = window.FileBrowser.EnableExec;
const tusSettings = window.FileBrowser.TusSettings;
const origin = window.location.origin;
const tusEndpoint = `/api/tus`;
+const hideLoginButton = window.FileBrowser.HideLoginButton;
export {
name,
@@ -39,4 +40,5 @@ export {
tusSettings,
origin,
tusEndpoint,
+ hideLoginButton,
};
diff --git a/frontend/src/views/settings/Global.vue b/frontend/src/views/settings/Global.vue
index 0a42a293..3d391206 100644
--- a/frontend/src/views/settings/Global.vue
+++ b/frontend/src/views/settings/Global.vue
@@ -18,6 +18,11 @@
{{ t("settings.createUserDir") }}
+
+
+ {{ t("settings.hideLoginButton") }}
+
+