You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Configuration/OAuth SSO Configuration.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -361,7 +361,7 @@ Once you've verified OAuth works and promoted an OAuth user to admin, you can di
361
361
| Property | Description | Default | Example |
362
362
|----------|-------------|---------|---------|
363
363
|`security.oauth2.issuer`| OIDC issuer URL (required for generic providers, must support `/.well-known/openid-configuration`) | - |`https://keycloak.example.com/realms/myrealm`|
364
-
|`security.oauth2.autoCreateUser`| Auto-create users on first login |`false`|`true`|
364
+
|`security.oauth2.autoCreateUser`| Auto-create users on first login |`true`|`false`|
365
365
|`security.oauth2.blockRegistration`| Block new user registration, only allow pre-registered users |`false`|`true`|
366
366
|`security.oauth2.scopes`| Space or comma-separated list of OAuth scopes | Provider-specific |`openid, profile, email`|
367
367
|`security.oauth2.useAsUsername`| Claim to use as username (options depend on provider) | Provider-specific |`email`, `preferred_username`, `login`|
Copy file name to clipboardExpand all lines: docs/Configuration/Other Customisations.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,12 +19,12 @@ This means you can replace any static resource by placing a file with the matchi
19
19
20
20
### Finding File Paths to Override
21
21
22
-
Most static files in the application come from the `frontend/editor/public/` folder in the source code. To override a file, place it under `customFiles/static/` matching the same path it is served at. The mapping is direct:
22
+
Most static files in the application come from the `frontend/editor/public/` folder in the source code (brand logos live in `frontend/shared/assets/brand/`). To override a file, place it under `customFiles/static/` matching the same path it is served at. The mapping is direct:
Copy file name to clipboardExpand all lines: docs/Configuration/System and Security.md
+27Lines changed: 27 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,6 +133,33 @@ java -jar Stirling-PDF.jar
133
133
134
134
---
135
135
136
+
## Login Agreement / Disclaimer
137
+
138
+
Show a disclaimer that users must accept before they can use the app. It appears as a blocking dialog after a successful login (or on launch when login is disabled), and works on every edition.
139
+
140
+
```yaml
141
+
legal:
142
+
loginAgreement:
143
+
enabled: false # Master on/off switch
144
+
showInAnonymousMode: true # When login is disabled, set false to hide the dialog
145
+
fallbackText: ""# Markdown shown when no per-language file is found
146
+
```
147
+
148
+
**Environment Variables:**
149
+
```bash
150
+
LEGAL_LOGINAGREEMENT_ENABLED=true
151
+
LEGAL_LOGINAGREEMENT_SHOWINANONYMOUSMODE=true
152
+
LEGAL_LOGINAGREEMENT_FALLBACKTEXT="By signing in you agree to the terms..."
153
+
```
154
+
155
+
The disclaimer is written in **Markdown**. Provide per-language versions as files at `customFiles/disclaimer/<locale>.md` (for example `en-US.md` or `de-DE.md`); the text shown follows each user's interface language and falls back to `fallbackText` when no matching file exists. If no text resolves at all (no files and no `fallbackText`), the dialog is not shown even when `enabled` is `true`. For a single-language or headless install, set `fallbackText` (env `LEGAL_LOGINAGREEMENT_FALLBACKTEXT`) and skip the per-language files. Editing the text takes effect on the next login with no restart; turning `enabled` on or off requires a restart.
156
+
157
+
Admins can also edit the text in-app from **Admin Settings → Legal**, which writes the same per-language files.
158
+
159
+
In the desktop app, the dialog can be enabled per machine through MDM - see [Managed Desktop Deployment](../Installation/Managed%20Deployment.md).
160
+
161
+
---
162
+
136
163
## Server Certificates
137
164
138
165
Stirling PDF can auto-generate certificates for the "Sign with Stirling PDF" feature.
Copy file name to clipboardExpand all lines: docs/Configuration/UI Customisation.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,9 +11,9 @@ Stirling PDF allows straightforward customization of the application name and ap
11
11
12
12
## Application Name Settings
13
13
These settings control the visible application name:
14
-
-`appName` - Defines the visible application name shown in the window name and navbar if navbar is not defined separately
15
-
-`homeDescription` - The description displayed on the homepage under the navbar that first greets the user
16
-
-`appNameNavbar` - The app name shown within the navbar for all pages
14
+
-`appName` - The visible application name for your instance
15
+
-`homeDescription` - The description displayed on the homepage that first greets the user
16
+
-`appNameNavbar` - Used as the browser tab title and as the issuer name shown in authenticator apps for two-factor (TOTP) login. Despite its name it is not shown in the navigation bar (which displays the logo), so do not leave it blank if you use TOTP. Empty falls back to "Stirling PDF".
17
17
18
18
## Show update notifications
19
19
These settings (in Settings.yml) control system behavior and customization capabilities:
@@ -153,7 +153,7 @@ This approach requires maintaining your fork and manually merging updates.
153
153
ui:
154
154
appName: exampleAppName # Application's visible name
155
155
homeDescription: I am a description # Short description or tagline shown on homepage
156
-
appNameNavbar: navbarName # Name displayed on the navigation bar
156
+
appNameNavbar: navbarName # Browser tab title and TOTP issuer label (not the navbar)
157
157
158
158
system:
159
159
showUpdate: false # Control update notification visibility
Sign with a certificate held on your own machine - a USB token or smart card (PKCS#11), or the Windows certificate store. The private key never leaves the device: Stirling PDF asks the token or operating system to perform the signing. This option appears only in the **desktop app** and works on every edition.
84
+
85
+
1. Go to **Certificate Sign** tool
86
+
2. Upload PDF
87
+
3. In the **Certificate source** step, choose **This device**
88
+
4. Pick the hardware type:
89
+
- **Windows certificate store** (Windows only) - available certificates are listed automatically; pick one. Windows prompts for the card or token PIN when you sign.
90
+
- **USB token** (PKCS#11, Windows/macOS/Linux) - choose the PKCS#11 driver (common drivers such as OpenSC, YubiKey, SafeNet eToken, and Thales IDPrime are detected automatically, or enter a custom driver path), enter the token PIN, then **List certificates** and pick one.
91
+
5. Configure signature appearance
92
+
6. Sign and download
93
+
94
+
For security, you can only sign with a PKCS#11 driver that Stirling PDF auto-detects or one you explicitly allow. Add extra driver libraries with the `STIRLING_PKCS11_LIBRARIES` environment variable - absolute paths to the driver files, separated by your platform's path separator:
The macOS Keychain is not a direct signing source. On macOS and Linux, reach a smart card or token through a PKCS#11 driver such as OpenSC.
102
+
:::
81
103
</TabItem>
82
104
</Tabs>
83
105
@@ -243,7 +265,7 @@ curl -X POST http://stirling-pdf:8080/api/v1/security/timestamp-pdf \
243
265
</Tabs>
244
266
245
267
:::note
246
-
The `system.serverCertificate.*` keys are honoured only on Pro/Enterprise editions. On the free self-hosted edition, setting `enabled: true` has no effect and the **Auto (server)** sign mode stays hidden; use a custom certificate (Manual mode) instead. All `security.validation.*` and `security.timestamp.*` settings apply to every edition.
268
+
The `system.serverCertificate.*` keys are honoured only on Pro/Enterprise editions. On the free self-hosted edition, setting `enabled: true` has no effect and the **Server** certificate source stays hidden; use a custom certificate (**Upload**), or **This device** in the desktop app, instead. All `security.validation.*` and `security.timestamp.*` settings apply to every edition.
247
269
:::
248
270
249
271
---
@@ -253,7 +275,7 @@ The `system.serverCertificate.*` keys are honoured only on Pro/Enterprise editio
Copy file name to clipboardExpand all lines: docs/Installation/Managed Deployment.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,10 +46,17 @@ You can write this file yourself (it is only a few lines), or on Windows let the
46
46
|-------|------|--------------|
47
47
|`serverUrl`| string | The server the app connects to on launch (your self-hosted instance, or a Stirling Cloud URL). Include the protocol (`http://` or `https://`); a trailing slash is optional. |
48
48
|`lockConnectionMode`| boolean |`true` stops users changing the server or connection mode in Settings. Only takes effect when `serverUrl` is also set. |
49
+
|`loginAgreementEnabled`| boolean |`true` enables the login agreement/disclaimer dialog. It only turns the feature on - the text is supplied separately (see note below), and with no text nothing is shown. Can be set on its own (no `serverUrl` needed), so it also applies to local, no-login desktop installs. |
49
50
|`updateMode`| string | How the built-in updater behaves: `prompt` (default - ask the user), `auto` (download and install silently on startup), or `disabled` (never check or show update UI). |
50
51
51
52
A file with none of these fields is ignored.
52
53
54
+
:::note The login agreement flag only enables it
55
+
`loginAgreementEnabled` / `STIRLING_LOGIN_AGREEMENT` switches the feature on; it does not carry the disclaimer text. The dialog stays hidden until text is available - from the server the desktop connects to, or for a local bundled backend from a `customFiles/disclaimer/<locale>.md` file or the `LEGAL_LOGINAGREEMENT_FALLBACKTEXT` setting. With no text configured, nothing is shown. See [Login Agreement](../Configuration/System%20and%20Security.md).
56
+
57
+
Passing the disclaimer text directly as an install parameter is planned for a future update.
58
+
:::
59
+
53
60
---
54
61
55
62
## File locations
@@ -72,6 +79,7 @@ On Windows you do not have to write the JSON by hand. The MSI installer (and `wi
72
79
|-----------|-------------|---------|
73
80
|`STIRLING_SERVER_URL`| Server URL the app connects to |`http://192.168.1.53:8080`|
74
81
|`STIRLING_LOCK_CONNECTION`| Lock the connection so users cannot change it (`1` = locked) |`1`|
82
+
|`STIRLING_LOGIN_AGREEMENT`| Enable the login agreement/disclaimer dialog (`1` = enabled). The text is supplied separately; the flag alone shows nothing. |`1`|
75
83
|`STIRLING_UPDATE_MODE`| Set and lock the update mode (`prompt`, `auto`, or `disabled`) |`disabled`|
0 commit comments