555a3dbb95
Match OIDC users by sub claim, auto-enroll, sync admin from groups
...
Switch from email-based OIDC matching to the stable `sub` claim.
Existing users are migrated by email on first login, new users are
auto-enrolled from OIDC claims, and admin status is synced from the
IdP's groups claim. Also expose oidc_sub on the admin edit-user page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-15 19:58:58 +01:00
a361df2668
Add OIDC login support for external identity providers
...
Adds "Login with <provider>" as an alternative login method using the
jumbojett/openid-connect-php library. OIDC users must already exist in
the database (matched by email). Configurable via OIDC_PROVIDER_URL,
OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, and OIDC_PROVIDER_NAME constants.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-14 16:08:45 +01:00
a71b8c9717
Add SQLite support as alternative database backend
...
Support config-driven choice between MySQL and SQLite via DB_DRIVER
constant, defaulting to MySQL for backward compatibility. All SQL
adaptation lives in Database.php (UDFs + query rewriting), so model
files need no changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
SQLite: remove FK constraints, revert 0→null sentinel changes
The SQLite schema had FOREIGN KEY constraints that don't exist in the
MySQL schema. These forced a cascade of 0→null changes to satisfy FK
enforcement. Removing them keeps the two backends behaviorally consistent
and minimises the diff. Real SQLite compat fixes (UDFs, query rewriting,
rowCount→count, Router fixes, EditAlbum guard) are preserved.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-14 15:23:41 +01:00
b0ee3081a6
Tag: invert behaviour of getCount and getOffset methods
2026-02-14 12:56:50 +01:00
7f7067852a
ViewPeople: fix incorrect pagination count
...
Tag::getCount was called without the third argument, causing it to
count tags where kind \!= 'Person' instead of kind = 'Person'.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-14 11:19:04 +01:00
ea4983e967
FeaturedThumbnailManager: add pager widget; show only 20 thumbs per page
2025-09-24 12:44:05 +02:00
b48c8ea820
EditAlbum: reorder asset loading
2025-09-24 12:32:29 +02:00
c9da46b36f
EditAlbum: drop old thumbnail id field entirely
2025-09-24 12:30:22 +02:00
2af4e865e0
TabularData: take control of juxtapositing pager and form
2025-09-23 15:04:57 +02:00
77fa33730a
InlineFormView: combine fields and buttons into one 'controls' array
2025-09-23 14:48:08 +02:00
be51946436
Form: rename 'content_below' to 'buttons_extra'
2025-09-11 19:59:30 +02:00
3dfda45681
GenericTable: better handling of null values for timestamps
2025-05-16 11:54:05 +02:00
4b26c677bb
AssetIterator: rewrite to standard Iterator interface
2025-05-13 23:29:43 +02:00
fc9de822d8
Merge branch 'master' into password-reset
2025-03-02 15:00:34 +01:00
b775cffc0c
EditAlbum: address refactor mistake
2025-02-26 15:44:30 +01:00
13cbe08219
Merge pull request 'Replace deprecated trigger_error calls with exceptions' ( #52 ) from trigger-error into master
...
Reviewed-on: #52
2025-02-26 15:29:13 +01:00
85ed6ba8d3
Replace deprecated trigger_error calls with exceptions
2025-02-13 11:38:45 +01:00
00ca931cf3
GenericTable: rework timestamp formatting
2025-01-08 19:11:10 +01:00
9740416cb2
Management controllers: make format functions first-level
2025-01-08 19:11:10 +01:00
77809faada
GenericTable: rename 'parse' option to 'format'
2025-01-08 19:11:10 +01:00
cc0ff71ef7
Management controllers: move table queries into models
2025-01-08 19:11:10 +01:00
bb8a8bad27
GenericTable: refactor order and pagination initalisation
2024-12-19 15:00:00 +01:00
adfb5a2198
ResetPassword: add time-out to password resets; prevent repeated mails
2024-11-05 17:19:59 +01:00
eb7a40a70d
ResetPassword: introduce requestResetKey and verifyResetKey methods
2024-11-05 17:17:14 +01:00
9c86d2c475
Authentication: replace getUserId with Member::fromEmailAddress
2024-11-05 16:44:54 +01:00
814a1f82f6
ManageAssets: add thumbnails to asset table
2024-08-27 12:00:46 +02:00
89cc00ffd9
EditAlbum: choose the first non-root album as the default parent
2024-05-08 13:21:13 +02:00
45b59636f6
EditAlbum: fix error handling
2024-05-08 13:17:31 +02:00
2bfbe67d91
Merge pull request 'Introduce edit menu for admins' ( #49 ) from edit-menu into master
...
Reviewed-on: #49
2024-02-24 13:10:58 +01:00
9d4f35a0fd
ViewPhotoAlbum: add ?in param for root tags, too
...
This was probably intended as an optimisation, but people tags are
at root level, and so id_parent == 0.
2024-02-24 13:08:37 +01:00
25feb31c1a
EditAsset: some hardening; deduplicate redirect code
2024-01-18 13:40:17 +01:00
6ec5994de0
ViewPhotoAlbum: build edit menu in controller
2024-01-18 13:18:22 +01:00
24c2e9cdcf
PhotosIndex: allow setting image as the album cover as well
2024-01-17 18:28:24 +01:00
c2aae4fb6e
EditAsset: replace Asset::setKeyData with Asset::save equivalent
2024-01-17 17:54:14 +01:00
069d56383e
PhotosIndex: replace edit button with edit menu
2024-01-17 17:51:45 +01:00
30bc0bb884
ViewPhotoAlbum: don't include empty $by in page links
2024-01-15 13:44:51 +01:00
c0dd2cbd49
ViewPhotoAlbum: drop 'Show' from empty filter caption
2024-01-15 13:41:51 +01:00
bb81f7e086
Download: remove limits on maximum execution time
2024-01-15 11:46:01 +01:00
4b289a5e83
Download: allow limiting by user uploaded as well
2024-01-15 11:40:33 +01:00
ec2d702a0d
ViewPhoto: simplify filter verification
2024-01-15 11:33:43 +01:00
52472d8b58
ViewPhotoAlbum: add 'label' key to empty filter as well
2024-01-15 11:26:17 +01:00
5d990501f6
ViewPhotoAlbum: move $is_person declaration to where it's used
2024-01-15 11:25:04 +01:00
1f53689e4b
AlbumButtonBox: add visual cue to indicate a filter is active
2024-01-15 00:55:33 +01:00
d8c3e76df6
ViewPhoto: take filter into account for prev/next links
2024-01-15 00:43:02 +01:00
9c00248a7f
ViewPhotoAlbum: don't populate filter box if there are no album contributors
2024-01-14 22:17:09 +01:00
99b867b241
AlbumButtonBox: add way for users to select an album filter
2024-01-14 21:28:45 +01:00
6a25ecec23
ViewPhotoAlbum: add method to filter by id_user_uploaded
2024-01-14 21:06:54 +01:00
7cdcf8197c
ViewPhotoAlbum: use Tag::getUrl instead of fumbling with $_GET['tag']
2024-01-14 20:40:58 +01:00
25b9528628
ViewPhotoAlbum: simplify tag handling in getAlbumButtons
2024-01-14 20:40:58 +01:00
08cdbfe7b6
ViewPhotoAlbum: move some logic into new prepareHeaderBox method
2024-01-14 20:40:58 +01:00