added a flag to hide settings (#5263)

Added an optional flag in settings.yml to hide the settings button in no
login servers. When hidden, users can no longer:

- Open the Settings modal at all (gear button is hidden)
- Change General preferences (tool picker mode, hide unavailable
tools/conversions, auto‑unzip and file limit)
- Configure keyboard shortcuts (Hotkeys / Keyboard Shortcuts section)
- Use the in‑app update checker UI (see current/latest version, check
for updates, view update details)
- Note: When enableLogin === true, the flag is ignored and the Settings
button remains visible.

---------

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Co-authored-by: Reece Browne <74901996+reecebrowne@users.noreply.github.com>
This commit is contained in:
EthanHealy01
2025-12-24 20:56:22 +00:00
committed by GitHub
parent 69b035c6e1
commit 1b0a1e938e
6 changed files with 17 additions and 5 deletions

View File

@@ -393,6 +393,7 @@ public class ApplicationProperties {
private boolean googlevisibility;
private boolean showUpdate;
private boolean showUpdateOnlyAdmin;
private boolean showSettingsWhenNoLogin = true;
private boolean customHTMLFiles;
private String tessdataDir;
private boolean enableAlphaFunctionality;

View File

@@ -84,6 +84,9 @@ public class ConfigController {
boolean enableLogin =
applicationProperties.getSecurity().isEnableLogin() && userService != null;
configData.put("enableLogin", enableLogin);
configData.put(
"showSettingsWhenNoLogin",
applicationProperties.getSystem().isShowSettingsWhenNoLogin());
// Mail settings - check both SMTP enabled AND invites enabled
boolean smtpEnabled = applicationProperties.getMail().isEnabled();

View File

@@ -132,6 +132,7 @@ system:
enableAlphaFunctionality: false # set to enable functionality which might need more testing before it fully goes live (this feature might make no changes)
showUpdate: false # see when a new update is available
showUpdateOnlyAdmin: false # only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
showSettingsWhenNoLogin: true # set to 'false' to hide settings button when login is disabled (enableLogin: false). Only applies when login is disabled.
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files
tessdataDir: "" # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
enableAnalytics: null # Master toggle for analytics: set to 'true' to enable all analytics, 'false' to disable all analytics, or leave as 'null' to prompt admin on first launch

View File

@@ -60,7 +60,7 @@ repositories {
allprojects {
group = 'stirling.software'
version = '2.1.5'
version = '2.2.0'
configurations.configureEach {
exclude group: 'commons-logging', module: 'commons-logging'

View File

@@ -173,6 +173,12 @@ const QuickAccessBar = forwardRef<HTMLDivElement>((_, ref) => {
// onClick: () => setActiveButton('activity')
//},
// Determine if settings button should be hidden
// Hide when login is disabled AND showSettingsWhenNoLogin is false
const shouldHideSettingsButton =
config?.enableLogin === false &&
config?.showSettingsWhenNoLogin === false;
const bottomButtons: ButtonConfig[] = [
{
id: 'help',
@@ -185,17 +191,17 @@ const QuickAccessBar = forwardRef<HTMLDivElement>((_, ref) => {
// This will be overridden by the wrapper logic
},
},
{
...(shouldHideSettingsButton ? [] : [{
id: 'config',
name: t("quickAccess.settings", "Settings"),
icon: <LocalIcon icon="settings-rounded" width="1.25rem" height="1.25rem" />,
size: 'md',
type: 'modal',
size: 'md' as const,
type: 'modal' as const,
onClick: () => {
navigate('/settings/overview');
setConfigModalOpen(true);
}
}
} as ButtonConfig])
];
return (

View File

@@ -23,6 +23,7 @@ export interface AppConfig {
defaultLocale?: string;
logoStyle?: 'modern' | 'classic';
enableLogin?: boolean;
showSettingsWhenNoLogin?: boolean;
enableEmailInvites?: boolean;
isAdmin?: boolean;
enableAlphaFunctionality?: boolean;