Commit graph

51 commits

Author SHA1 Message Date
Cathie Integra
3f096a592b Links: Use canonical trailing-slash form for website URLs 2026-06-24 17:20:30 +02:00
Michael Mayer
74a95fc748 ACL: Generate CLI role & auth-provider help from role tables #5667
Add pkg/txt.JoinOr plus acl.RolesCliUsageString and UserRoleUsageFor so the users/clients --role and --auth help derive from the role tables instead of hand-maintained literals, filtering the app/uploader aliases and visitor. Each edition lists its own roles; federatable contexts (LDAP, OIDC group-role, cluster grants) use ClusterInstanceRoles.
2026-06-16 11:57:44 +02:00
Cathie Integra
f1d5ae2ba2 ACL: Add ClusterInstanceRoles source of truth for group-role help 2026-06-16 09:32:15 +02:00
Michael Mayer
bc327016ad Metadata: Add Camera Make and Model updates via CLI & API #5663 #5656
Mirror the lens make/model editing surface for cameras: entity UpdateMakeModel/SaveForm, form validation, query, search, the GET/PUT /api/v1/cameras endpoints, and the cameras CLI command, plus a cameras ACL resource and scope.

Also tidy the lens surface for parity: self-validating SaveForm, empty make/model guard, X-Count search header, service-role grant, the empty-id/slug docs, and order cameras before lenses everywhere.
2026-06-15 09:25:44 +00:00
Keith Martin
c3eda657fd
Metadata: Add Lens Make and Model updates via CLI & API #5644 #5656
Adds the ability to override a lens's Make/Model (e.g. fixing Pentax lenses that ExifTool decodes as `4 38`) via a new photoprism lenses update CLI command and a `PUT /api/v1/lenses/:id endpoint`, plus a `GET /api/v1/lenses` search endpoint, a new lenses ACL resource, and an lenses ls list command.
2026-06-15 09:37:32 +02:00
Michael Mayer
e1bf7096c8 Cluster: Accept all instance roles in group config, tolerate spaces 2026-06-13 12:54:54 +00:00
Ömer Duran
fddab77506
Auth: Apply Portal-granted role on OIDC instance login
Honor the pp_role claim (gated by pp_issuer_kind) over the group mapping so an instance login reflects the role the Portal granted, restricted to federatable roles.
2026-06-05 21:03:36 +02:00
Michael Mayer
fbe8a6889b Auth: Add cluster_admin role with admin-tier and federation helpers
Adds the Portal-only cluster_admin operator role (declared in CE, registered
only on Portal builds), the acl.AdminRoles/IsAdminRole admin-tier set, and the
acl.IsFederatedRole/FederatedRoleUpdate helpers that keep cluster_admin and
visitor out of externally mapped account roles. SuperAdmin resolves to
cluster_admin on registered builds, SaveForm keeps an admin-level role on a
self-save, and UpdateUser rejects self-role changes. RoleStrings.Strings hides
visitor and none from the CLI role help.
2026-06-03 17:12:59 +02:00
Michael Mayer
570a563748 Docs: Bump copyright year to 2026 in Go package headers 2026-05-25 14:39:38 +00:00
Michael Mayer
44429bdbbb MCP: Gate stdio on DisableMCP and add scope regression test #5024 2026-05-10 11:54:34 +00:00
Michael Mayer
df13ea9e02 MCP: Refine auth flow, JWT scope, and find_search_filters #5024 #5519
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-04-10 13:40:22 +02:00
Ömer Duran
e2f8474309
MCP: Add read-only Model Context Protocol prototype #5024 #5519
* MCP: Add internal read-only prototype #5024

* MCP: Fix edition detection, section assignment, and input validation #5024

* MCP: Add authenticated HTTP endpoint with ACL and experimental gate #5024

* MCP: Document client compatibility and config examples #502

* MCP: Refine ACL grants and finalize prototype polish #5024 #5519

Signed-off-by: Michael Mayer <michael@photoprism.app>

* MCP: Update go.sum #5024 #5519

Signed-off-by: Michael Mayer <michael@photoprism.app>

* MCP: Update license NOTICE files #5024 #5519

Signed-off-by: Michael Mayer <michael@photoprism.app>

---------

Signed-off-by: Michael Mayer <michael@photoprism.app>
Co-authored-by: Michael Mayer <michael@photoprism.app>
2026-04-10 12:51:11 +02:00
Michael Mayer
532ddbd270 ACL: Add "audit" permission for audit API endpoints
Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-03-01 17:24:49 +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
a2b7615c93 Go: Apply go fix modernizations across backend packages
Run `go fix ./...` and keep mechanical modernization updates.

- Replace `interface{}` with `any` in signatures and local types
- Apply formatter/style cleanups from go1.26 tooling
- Keep `omitempty` behavior-preserving simplifications suggested by fix
- No functional feature changes intended

Validation:
- go test ./... -run '^$' -count=1 (Go 1.26.0)
- GOTOOLCHAIN=go1.24.10 go test ./... -run '^$' -count=1

Signed-off-by: Michael Mayer <michael@photoprism.app>
2026-02-20 03:54:33 +01:00
Michael Mayer
22e3c6d6d8 Metrics: Adjust ACL rules for endpoint access #5355
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-30 11:05:32 +01:00
Michael Mayer
6c50a87632 Auth: Apply "golangci-lint" recommendations #5330
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-11-21 16:22:42 +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
42edf100ee Vision: Allow use of configured service key for API authentication #5299
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-30 10:02:16 +01:00
Michael Mayer
6e43f14476 Auth: Adjust JWT default scope and ACL, add tests #5230
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-29 14:28:26 +01:00
Michael Mayer
0858a2b65f Auth: Add "photoprism show scopes" command to list all supported scopes
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-23 09:25:08 +02:00
Michael Mayer
2227aa57b2 Portal: Add cluster admin UI #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-16 16:21:56 +02:00
Keith Martin
b1822229ca
Backend: Improve Yes/No capabilities #5191
* Backend: improve Yes/No capabilities
* Backend: constants package with Yes/No maps and True/False strings
* Backend: rename constants to enum
* Backend: correct case on russian Yes, more tests
* Enum: utilise enum package
2025-10-10 13:15:15 +02:00
Michael Mayer
4bbba226b7 Security: Add a system log for publishing internal warnings and errors
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-07 21:08:04 +02:00
Michael Mayer
94b6631b3d Test: Use PascalCase names for all Go subtests in /internal
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-10-02 14:50:02 +02:00
Michael Mayer
bd66110c18 Auth: Improve code comments in internal/auth/acl/scopes.go #98 #5230
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-26 05:53:28 +02:00
Michael Mayer
48a965a7cc API: Refactor JWT-based request authorization #98 #5230
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-26 05:32:30 +02:00
Michael Mayer
61ced7119c Auth: Refactor cluster configuration and provisioning API endpoints #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-24 08:28:38 +02:00
Michael Mayer
1315df8c1f Auth: Reformat internal/auth/acl/roles_test.go #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-18 17:39:50 +02:00
Michael Mayer
c9e6b7c22b Auth: Add tests to internal/auth/acl/roles_test.go #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-18 17:35:11 +02:00
Michael Mayer
1c3009d9b5 Auth: Add alias for RoleNone and improve unit tests coverage #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-18 17:10:39 +02:00
Michael Mayer
2818a9e6a8 Auth: Add "instance" and "service" roles, fix entity/auth_client.go #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-18 15:23:06 +02:00
Michael Mayer
b40e4c5597 CLI: Improve usage descriptions of client/user management commands #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-18 14:30:19 +02:00
Michael Mayer
887a39e7d9 Auth: Add "node" and "portal" roles, refactor session entity #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-18 13:33:18 +02:00
Michael Mayer
0d572032a9 API: Add GET /cluster/theme endpoint and refactor config package #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-09-11 06:47:45 +02:00
Michael Mayer
1b437c38f4 Auth: Add portal resource grants #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-08-28 12:14:50 +02:00
Michael Mayer
55b8042c98 Auth: Update ACL grants and actions
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-06-19 20:04:33 +02:00
Michael Mayer
a64e2ea445 Sharing: Allow authenticated clients to share albums #4973
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-04-29 08:54:16 +02:00
Michael Mayer
f2ffb0fdce AI: Add Webhook endpoint and refactor ACL for Vision API #127 #1090
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-04-11 18:41:54 +02:00
Michael Mayer
0304ed37c3 AI: Set default vision API client timeout to one minute #127 #1090
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-04-10 21:07:57 +02:00
Michael Mayer
35e9294d87 AI: Add vision package and vision API endpoints #127 #1090
These changes allow to configure the computer vision models through an
optional vision.yml configuration file. Note that the API endpoints
are not yet functional and require further work.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-04-06 23:39:37 +02:00
graciousgrey
f4af470894 Tests: Add unit tests 2025-03-18 15:20:51 +01:00
Michael Mayer
d0239ba209 UX: Improve quota calculation and checks in config and api #4266
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-03-17 16:12:47 +01:00
Michael Mayer
0350e5d572 UX: Add UI settings for selecting start page and time zone #577
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-03-15 14:51:44 +01:00
Michael Mayer
0b6dbe4e3e Services: Fix upload dialog and permission checks #3168
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-02-22 15:40:05 +01:00
Michael Mayer
e7c48492b8 Auth: Refactor ACL event and rule registration
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-02-03 21:02:41 +01:00
Michael Mayer
be13714991 ACL: Update test assertions in /internal/auth/acl/acl_test.go
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-01-29 09:32:55 +01:00
Michael Mayer
dc2167dbe0 ACL: Update checks and presets #3168
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-01-29 02:49:28 +01:00
Michael Mayer
01f15fa406 Backend: Update copyright notices
Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-01-09 10:28:17 +01:00