Keith Martin
b6687b6c29
Tests: Improve isolation and add fixes #5263
...
* Tests: fix random selection of deleted record causing test failure
* Tests: fix test folders being left after test
* Tests: ensure that required records are available
* Tests: make each package execute against it's own testdata folder to ensure no interpackage test failures
* Tests: add unit tests of CleanupTestFolder
* Tests: Allow defer in TestMain
* Tests: rename testMain to runTestMain
2026-07-12 05:47:21 +02:00
Cathie Integra
3f096a592b
Links: Use canonical trailing-slash form for website URLs
2026-06-24 17:20:30 +02:00
Michael Mayer
974321b8a1
Cluster: Re-register node config on restart via OAuth credentials
2026-06-13 12:54:48 +00:00
Michael Mayer
e308fd7b58
Auth: Land cluster sign-out on the Portal login without return_to
2026-06-12 19:56:44 +00:00
Michael Mayer
d594edd5de
Cluster: Declare per-node group config via instance env/flags
2026-06-12 18:52:54 +00:00
Michael Mayer
f29413c7eb
Tests: Replace customer names with neutral placeholders
...
Use "Acme Media" instead of real customer names in the SiteName and node DisplayName test fixtures.
2026-06-10 14:28:33 +00:00
Cathie Integra
a10de3b616
Config: Add SITE_NAME option and use siteName for instance labels
2026-06-10 14:28:22 +02:00
Michael Mayer
6d0add2e69
Cluster: Address review findings on sign-out, OIDC bootstrap, errors
...
- /logout route guard now signs out cluster-wide: session.signOut shares
revokePeerSessions with logoutEverywhere, so a direct /logout revokes peer
sessions and clears shared storage too, not just the current session.
- Decouple PHOTOPRISM_CLUSTER_OIDC from the auto-join/theme toggles: InitConfig
now always runs resolveNodeOIDCClient for an instance (join/theme moved into
bootstrapClusterNode), so a registered node re-wires its OIDC RP on restart
even with both bootstrap toggles disabled.
- Map redirected OAuth server_error / temporarily_unavailable to ErrUnexpected
instead of "Invalid credentials", so a Portal-side failure isn't shown as a
credential problem.
2026-06-09 10:38:22 +00:00
Michael Mayer
b88429f557
Cluster: Compact code comments in the OIDC follow-up changes
2026-06-09 10:20:17 +00:00
Michael Mayer
872af5d8fd
Cluster: Add cluster OIDC, branded authorize errors, and sign-out
...
Implements three OIDC follow-ups from specs/portal/cluster-oidc.md:
- Zero-touch instance OIDC RP config: PHOTOPRISM_CLUSTER_OIDC derives the
OIDC RP client_id/secret from the node client credentials and defaults
the issuer to the instance's own origin (scheme.OriginURL), so a single
boot reaches a working Portal login. Explicit oidc-client/secret/uri win.
- Human-friendly authorize errors: redirectable errors 302 back to the
validated redirect_uri; non-redirectable ones content-negotiate a
branded HTML page (oauth-error.gohtml) vs JSON via shared helpers in
internal/api/oauth_error.go. The RP callback surfaces inbound ?error=.
- Cluster-wide Sign-Out (Tier 2): session.logoutEverywhere fans out a
best-effort DELETE per peer session, clears their storage, then signs
out locally; session-delete clears the OP cookie on any shared-domain
OIDC-against-Portal node (OIDCSessionCookieClearPath).
2026-06-09 09:39:01 +00:00
Michael Mayer
aae8137168
Cluster: Drop SiteCaption from the node DisplayName fallback
2026-06-09 07:56:45 +00:00
Michael Mayer
680469e781
Cluster: Add a per-instance node DisplayName field
2026-06-09 07:23:05 +00:00
Michael Mayer
570a563748
Docs: Bump copyright year to 2026 in Go package headers
2026-05-25 14:39:38 +00:00
Michael Mayer
c8390a2e8d
Config: Centralize SQL driver identifiers in pkg/dsn #5588
2026-05-17 14:47:43 +00:00
Michael Mayer
6bc8527097
Cluster: Revalidate portal proxy cache & tighten OAuth scope usage
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-26 22:42:05 +01:00
Michael Mayer
5334ef3a68
Cluster: Require OAuth for existing-node register mutations
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-26 22:06:53 +01:00
Michael Mayer
34be2f0bd8
Cluster: Protect register mutations and enforce CIDR gate
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-26 19:59:33 +01:00
Michael Mayer
a79eb6e1a4
Cluster: Refactor configuration and secret persistence
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-24 06:57:35 +01:00
Michael Mayer
fbaf356b1d
Cluster: Fix stale secret retry auth and stop implicit DB provisioning
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-24 04:20:19 +01:00
Michael Mayer
8b61ffc8aa
Cluster: Retry credential refresh without stale node UUID
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-24 03:35:40 +01:00
Michael Mayer
50ded66db3
Cluster: Endure complete registration payload in node/bootstrap.go
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-24 03:14:17 +01:00
Michael Mayer
a0070dce1c
Cluster: Improve usage of canonical terms in code/docs based on glossary
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-23 16:16:29 +01:00
Michael Mayer
c1467cb3f5
Cluster: Rename the "tenant" node role to "instance" for accuracy
...
This more accurately reflects the multi-instance architecture.
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-23 04:27:43 +01:00
Michael Mayer
5f50802384
Cluster: Rename the "app" node role to "tenant"
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-23 03:27:11 +01:00
Michael Mayer
f07f46fec8
Backend: Clean up error handling and unit tests in internal/ packages
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-09 12:00:33 +01:00
Michael Mayer
5fd1e13a96
Cluster: Don't enforce TLS for internal connections
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-06 12:34:10 +01:00
Michael Mayer
f4858212d1
Services: Resolve issues in node/bootstrap.go and options_apply.go #5330
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-21 10:30:19 +01:00
Michael Mayer
06df64281d
Config: Move database DSN-related functionality to "pkg/dsn" #47 #5285
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-03 13:40:34 +01:00
Michael Mayer
82f5c5f818
Cluster: Change "photoprism_" database / user prefix to "cluster_" #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-31 18:18:18 +01:00
Michael Mayer
755ebe0aee
Cluster: Rename RoleInstance to RoleApp in service/cluster/roles.go #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-31 16:46:42 +01:00
Michael Mayer
5365e214ad
Cluster: Shorten log messages in node/bootstrap.go
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-29 20:14:01 +01:00
Michael Mayer
0f68b65da6
Config: Add authentication logs to cluster/node/bootstrap.go #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-27 19:06:49 +01:00
Michael Mayer
ceab5e619d
Config: Add register fallback to cluster/node/bootstrap.go #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-27 17:50:50 +01:00
Michael Mayer
107888a8da
Cluster: Improve theme installation and startup logs #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-27 16:20:26 +01:00
Michael Mayer
dd8698c938
Cluster: Shorten log message in node/bootstrap.go
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-26 11:34:22 +01:00
Michael Mayer
f2313b8dfe
Cluster: Shortened log message in node/bootstrap.go
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-23 14:09:22 +02:00
Michael Mayer
f23069dd2c
Security: Improve credential handling across the cluster tooling #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-20 00:06:17 +02:00
Michael Mayer
a921f82a17
Pkg: Move /service/http/... to /http/... and add package /http/dns
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 21:08:48 +02:00
Michael Mayer
50abe4ddaf
Config: Automatically download, install and activate cluster theme #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 16:09:26 +02:00
Michael Mayer
e6959e7e96
Cluster: Report Config.About() instead of Config.Name() as app name #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 14:30:10 +02:00
Michael Mayer
695b33f097
Cluster: Change conf.AppName() to Name() in node register request #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 13:15:45 +02:00
Michael Mayer
1b85f84943
Cluster: Add AppName, AppVersion and Theme request/response fields #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 12:44:21 +02:00
Michael Mayer
6ed9d2715a
Cluster: Improve defaultClusterDomain() in bootstrap.go #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 02:52:57 +02:00
Michael Mayer
a779c5d89a
Cluster: Auto-derive Advertise/Site URLs from node name #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 02:40:06 +02:00
Michael Mayer
bad4b84267
Cluster: Improve log messages in internal/service/cluster/node #98
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-19 02:12:45 +02:00
Michael Mayer
b5c4fd3dcf
Cluster: Refactor registration and database provisioning
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-18 23:54:56 +02:00
Michael Mayer
b47ee0fddc
Cluster: Refactor request/response structs and JSON serialization
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-18 17:42:22 +02:00
Michael Mayer
04f015bdf0
Cluster: Improve logging in node/bootstrap.go
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-18 16:19:08 +02:00
Michael Mayer
bf6d7e4f94
Config: Add StaticBuildFile() and StaticImgFile() functions #5274
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-18 09:09:56 +02:00
Michael Mayer
cb9d8d236a
Config: Move Portal flag to ClientConfig struct
...
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-15 23:32:54 +02:00