Commit graph

2912 commits

Author SHA1 Message Date
Michael Mayer
e44262d4ea Config: Ignore configured CDN URL if the same as the Site URL #3931
see https://docs.photoprism.app/getting-started/using-a-cdn/#cloudflare

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-15 10:54:03 +01:00
Michael Mayer
c38962e469 API: Deny client access if the scope is not authorized #782 #808
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-14 19:27:38 +01:00
Michael Mayer
5dedc8a7c0 Auth: Apply same scope when session is created from auth token #782 #808
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-14 18:53:27 +01:00
Michael Mayer
fed1d8ad95 Auth: Accept access token as passwd with fail rate limit #782 #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-14 18:28:17 +01:00
Michael Mayer
9586a9ec69 Auth: Refactor API to allow auth secrets to be used as tokens #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-14 12:01:26 +01:00
Michael Mayer
d7710adce0 Auth: Improve "auth add" and "client add" CLI commands #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-14 09:51:49 +01:00
Michael Mayer
e21e462f00 Auth: Improve "auth add" and "client add" CLI commands #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-13 16:27:05 +01:00
Michael Mayer
91eadbc21f Auth: Reset existing user/browser sessions when upgrading #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-12 12:50:52 +01:00
Michael Mayer
34b41cf606 Config: Update default wallpaper image
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-12 12:46:18 +01:00
Michael Mayer
93bc8996bc Entities: Update schema/mariadb.mmd
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-12 12:02:38 +01:00
Michael Mayer
c86764fa4b Entities: Update database schema SQL and mariadb.mmd
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-12 10:30:11 +01:00
Michael Mayer
cf71582e3f WebDAV: Require username when authenticating with basic auth #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 18:51:38 +01:00
Michael Mayer
e8ca9b8db2 WebDAV: Check if basic auth user matches the token, if set #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 12:49:31 +01:00
Michael Mayer
d481bc3d34 WebDAV: Add token authentication tests #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 12:08:39 +01:00
Michael Mayer
eff130cf90 WebDAV: Allow authentication with auth token and any username #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 11:37:36 +01:00
Michael Mayer
cc356abe03 WebDAV: Allow authentication with auth token and no username #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 18:03:38 +01:00
Michael Mayer
7d78ee803a Use human-friendly secrets & names for personal access tokens #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 17:23:08 +01:00
Michael Mayer
94e361a8fd WebDAV: Add authorization check based on auth tokens #782 #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 16:54:13 +01:00
Michael Mayer
7ef544fa53 Docs: Improve inline comments of the internal/server package #782 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 12:46:00 +01:00
Michael Mayer
7a05c5553b OAuth2: Add "POST /api/v1/oauth/revoke" API endpoint #782 #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 12:21:43 +01:00
Michael Mayer
481c207897 Cache: Refactor internal/ttl package
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 10:26:38 +01:00
Michael Mayer
63ad161b96 WebDAV: Refactor authentication and HTTP request handlers #3942 #3959
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 09:56:46 +01:00
Michael Mayer
e03dbe5d16 OAuth2: Refactor limit for number of access tokens / sessions #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-09 13:46:55 +01:00
Michael Mayer
3e924b70c7 API: Move handling of HTTP auth headers to pkg/header #808 #3943 #3959
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-09 10:58:47 +01:00
Michael Mayer
8db853109e WebDAV: Set file mod time based on the "X-OC-MTime" header #3942 #3959
Note that this is still experimental and the implementation needs to be
tested with a WebDAV client that sends a valid "X-OC-MTime" header.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 18:46:42 +01:00
Michael Mayer
64b8ed572d API: Add .well-known/openid-configuration route handler #808 #3943
This adds an initial "/.well-known/openid-configuration" service
discovery endpoint for use by OpenID Connect clients.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 17:25:07 +01:00
Michael Mayer
ec13ccb6d5 OAuth2: Enforce limit for number of access tokens / sessions #808 #3943
These changes ensure that OAuth2 clients cannot create an unlimited
number of access tokens (sessions) with their client credentials.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 16:57:07 +01:00
Michael Mayer
42fbf70dcf API: Update markers.go handler docs
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 14:56:07 +01:00
Michael Mayer
0e4d81853c API: Add .well-known/oauth-authorization-server route handler #808 #3943
This commit also adds an /api/v1/oauth/logout endpoint that allows
clients to delete their sessions (access tokens) as needed.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 14:53:39 +01:00
Michael Mayer
f8e0615cc8 Auth: Ensure backwards compatibility for existing API clients #808 #3943
These changes ensure that the new (SHA256) session ID is returned in the
"session_id" field, so that developers have time to update their client
implementations to use the new "access_token" field.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-07 12:25:56 +01:00
Michael Mayer
0d2f8be522 Auth: Use hashed auth tokens for enhanced security #3943 #808 #782
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-06 17:35:19 +01:00
Michael Mayer
0ca37b2c92 Docs: Update year in backend and frontend package file headers
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-05 16:38:36 +01:00
Michael Mayer
713593da4e Auth: Add CLI command to create access tokens for apps #782 #808 #3943
You can now run "photoprism auth add" to create new client access tokens
that allow external applications to use the built-in REST API.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-05 16:31:07 +01:00
Michael Mayer
910e3becbb Auth: Refactor existing CLI sub-commands #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-02 17:06:57 +01:00
graciousgrey
04e8dfe6cb Tests: Add unit tests #3943 2023-12-21 16:00:28 +01:00
graciousgrey
0f8d5073dd Tests: Add unit tests #3943 2023-12-21 11:17:33 +01:00
graciousgrey
b6cb478cfb Tests: Add unit tests 2023-12-19 17:03:50 +01:00
Michael Mayer
cc179e9ecf Metadata: Stack media files with the same "ContentIdentifier" #3960
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-12-19 16:55:08 +01:00
Michael Mayer
3dec8f4f48 Run "make fmt"
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-12-19 15:43:29 +01:00
graciousgrey
ee8de5e39f Tests: Add unit tests #3943 2023-12-15 13:16:32 +01:00
graciousgrey
0c4c3215f4 Tests: Add unit tests #3943 2023-12-14 14:19:43 +01:00
graciousgrey
759dbe540a Auth: Refactor resources.go 2023-12-13 15:36:39 +01:00
Michael Mayer
467f7b1585 OAuth2: Add Client Credentials Authentication #213 #782 #808 #3730 #3943
This adds standard OAuth2 client credentials and bearer token support as
well as scope-based authorization checks for REST API clients. Note that
this initial implementation should not be used in production and that
the access token limit has not been implemented yet.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-12-12 18:42:50 +01:00
Brandon Richardson
3d962e2382 Backend: Expose prometheus-style metrics endpoint
Expose a new API which can be scraped by prometheus to gather useful
metrics from an instance. The new endpoint exposes photoprism build
version information, golang version, edition and various count metrics.
2023-12-06 08:13:24 +01:00
graciousgrey
59456c57be Tests: Add unit test #3885 2023-11-21 17:47:29 +01:00
graciousgrey
292eaf6ee0 Tests: Add unit tests #3896 2023-11-21 17:08:18 +01:00
graciousgrey
5d06770ab6 Tests: Update photo fixtures 2023-11-21 17:07:39 +01:00
Michael Mayer
eb19a4a893 Search: Add filter to find pictures by resolution range in MP #3896
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-11-20 11:47:23 +01:00
Michael Mayer
717e616700 Vectors: Use RSVG instead of imagemagick to convert SVG to PNG #3885
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-11-20 11:43:54 +01:00
Alex Spurling
d32bc4cc6c
FFmpeg: Seek input not output video (#3893)
This improves performance when converting video to images as we no longer
have to decode and then discard the first x seconds of video.
2023-11-19 15:55:33 +01:00
Michael Mayer
d06a182ac0 JPEG: Reduce log level for reporting invalid color metadata #3843
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-11-09 10:38:05 +01:00
Michael Mayer
d0ea838b37 Thumbnails: Add panic handler for unexpected image encoding errors #3858
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-31 14:37:47 +01:00
Michael Mayer
86f16790ea JPEG: Read files with invalid color data from the beginning #3843
Using a ReadSeeker is necessary to read images with invalid color
metadata from the beginning in order to avoid decoding errors.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-31 14:24:31 +01:00
Michael Mayer
78e6dd88d8 JPEG: Fix regression when handling files with EOF error #3855
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-31 13:13:18 +01:00
Michael Mayer
b07609c213 HEIC: Add iPhone 15 Pro file samples and update related tests #3852
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-31 12:39:36 +01:00
graciousgrey
46642b3ac0 Tests: Add unit tests for search 2023-10-26 12:52:39 +02:00
graciousgrey
313948b103 Tests: Add altitude to photo fixtures 2023-10-26 12:28:41 +02:00
Michael Mayer
19efee9b6d Config: Change position of "http-cache-public" command flag
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-26 09:04:34 +02:00
Carlos Abraham Pérez Marrero
50d6d6d44e
PWA: Fix app manifest logo icon sizes (#3838)
Logo icon 77.png does not exists so a warning is shown on Chrome Dev Tools when inspecting the PWA manifest
2023-10-23 11:29:39 +02:00
Michael Mayer
9abea5b55f Metadata: Ignore "SubSecModifyDate" in Exiftool JSON files #3780
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-21 17:32:42 +02:00
Michael Mayer
c2b56346b6 Search: Remove obsolete "fmin" and "fmax" filters #3818
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-21 16:33:00 +02:00
Michael Mayer
09f8a58404 Library: Stack sidecar files with vendor specific naming schemes #2983
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-21 15:02:16 +02:00
Michael Mayer
15377b1e98 Metadata: Update json_motion_test.go after upgrading photoprism/go-tz.v2
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-21 11:54:08 +02:00
Michael Mayer
67bd054f7b Metadata: Improve handling of local time values #3780
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-21 02:31:27 +02:00
Michael Mayer
60efc86649 Metadata: Use UTC offset if actual time zone is unknown #3780
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-21 00:11:11 +02:00
Michael Mayer
54f281a425 FS: Improve matching of related media files #2983
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-20 16:02:52 +02:00
Michael Mayer
cca124e093 Search: Refactor GPS altitude range filter #3800
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-20 12:54:55 +02:00
Gilbert32
132237e47b
Search: Add altitude range filter (#3800)
* Add Altitude filters using IntRange

* Rename Altitude test
2023-10-20 12:23:20 +02:00
Lukas
8524fcc149
Adds Galaxy S10 to cameraModels (#3828) 2023-10-17 13:28:44 +02:00
Michael Mayer
2fed4b549c Index: Refactor optimization worker logs and queries #3124 #3742
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-15 11:02:15 +02:00
Michael Mayer
05e29170bf Backend: Refactor SQL batch size limit #3124 #3742
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-15 09:46:04 +02:00
Michael Mayer
b67043955d Config: Add trace log for performance measurement #3810
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-15 09:31:57 +02:00
Michael Mayer
c8287e462f Backend: Refactor queries for compatibility with SQLite #3124 #3742
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-15 09:31:10 +02:00
Michael Mayer
0a03071982 SQL: Refactor client config count queries #3742 #3810
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-15 08:42:24 +02:00
graciousgrey
17b473d867 Tests: Add unit tests #3818 2023-10-13 14:02:20 +02:00
graciousgrey
170c6bb3dc Tests: Update fixtures 2023-10-13 14:00:08 +02:00
Michael Mayer
b7bbc59fca Upgrade: Improve error handling and messages #3813
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-13 12:43:20 +02:00
Michael Mayer
09ad17d10a Cards View: Improve camera and lens information #2040 #3077 #3816
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-13 11:35:43 +02:00
Michael Mayer
6a452bcf43 Search: Add Filters for ISO, FNumber and Focal Length Range #3818
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-12 14:53:40 +02:00
Michael Mayer
bac10302da Cards View: Add ISO, FNumber, Exposure and Focal Length #3816
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-12 11:46:03 +02:00
Michael Mayer
f087658ed0 Docs: Fix section header starts in options.yml #3812
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-11 10:10:30 +02:00
Michael Mayer
2f9792e541 PWA: Set orientation to any in generated manifest.json #3413
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-10 20:43:44 +02:00
Michael Mayer
0470899016 Metadata: Add additional camera make and model mappings #3802
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-10 16:52:00 +02:00
Michael Mayer
3d1f93f94e Albums: Redirect to matching collection if access was denied
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-10 15:16:35 +02:00
Michael Mayer
4d8bf12c0b Commands: Remove unstable assertion from index_test.go
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-10 14:39:04 +02:00
Michael Mayer
3c0f1f37ad Share: Ensure that shares are always loaded in the user entity model
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-10 14:32:04 +02:00
Michael Mayer
e6b1a28bcf Metadata: Hide irrelevant values from supported data fields report
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-10 13:38:09 +02:00
Michael Mayer
fb419e26b7 Settings: Enable delete feature by default #3801
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-08 15:42:23 +02:00
Michael Mayer
80dd926f2d Share: Improve query validation in the search and albums API
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-07 17:33:04 +02:00
Michael Mayer
0f321b10bc Logs: Update log levels and messages
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-07 16:00:23 +02:00
Michael Mayer
ede4b3b897 Config: Refactor authentication settings #782
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-07 11:09:27 +02:00
Michael Mayer
10a58f2097 Metadata: Improve camera make and model string normalization #2040
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-06 09:51:40 +02:00
Michael Mayer
61e7de69a4 Metadata: Improve camera make and model string normalization #2040
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-06 09:24:12 +02:00
Michael Mayer
b0ef310b96 Metadata: Improve camera make string normalization #2040
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-06 03:33:03 +02:00
Michael Mayer
c78d12b56d Search: Limit result file types when sorting by similarity #2040
This also attempts to improve the (undocumented) randomly sorted
search results.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-06 02:57:07 +02:00
Michael Mayer
9b3efe6872 Search: Update number of expected results in filter tests #2040
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-06 02:34:21 +02:00
Michael Mayer
604849e92c Search: Include RAW files in results by default #2040
With these changes the size and type of the RAW file as well as other
details can be displayed in the Cards View. This also improves the
indexing of camera and lens metadata.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-10-06 02:22:48 +02:00
Michael Mayer
cfe1ff3299 Config: Change "web server" to "Web server" in the docs for consistency
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-09-24 18:05:49 +02:00
Michael Mayer
26ca084699 Videos: Cache embedded media to allow streaming and transcoding #3764
This is a follow-up improvement for the following feature requests that
have already shipped with our stable release:

- Live Photos: Add support for Samsung Motion Photos #439
- Live Photos: Add support for Google Camera Motion Photos #1739

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-09-24 17:13:06 +02:00
Michael Mayer
20407452f0 UX: Prefer original media files for cards view details #2040
This also adds camera lens information to the cards view details.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-09-24 14:11:52 +02:00