From d00f6fa7de59bdbd30efe9ce824e795cf05616f4 Mon Sep 17 00:00:00 2001 From: PiR1 Date: Fri, 8 May 2026 23:28:34 +0200 Subject: [PATCH 1/3] fix(event): correct updating client access --- backend/src/routes/adminEvents.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/backend/src/routes/adminEvents.js b/backend/src/routes/adminEvents.js index 556630d0..fa238c13 100644 --- a/backend/src/routes/adminEvents.js +++ b/backend/src/routes/adminEvents.js @@ -1192,14 +1192,6 @@ router.put('/:id', adminAuth, requirePermission('events.edit'), requireEventOwne return res.status(400).json({ error: 'external_path is required when source_mode is reference' }); } - // Handle client access fields (#172) - if (Object.prototype.hasOwnProperty.call(updates, 'client_access_enabled')) { - updates.client_access_enabled = formatBoolean(updates.client_access_enabled); - // Auto-generate client share token when first enabling - if (parseBooleanInput(updates.client_access_enabled, false) && !event.client_share_token) { - updates.client_share_token = crypto.randomBytes(32).toString('hex'); - } - } if (Object.prototype.hasOwnProperty.call(updates, 'client_password') && updates.client_password) { updates.client_password_hash = await bcrypt.hash(updates.client_password, getBcryptRounds()); delete updates.client_password; @@ -1281,6 +1273,15 @@ router.put('/:id', adminAuth, requirePermission('events.edit'), requireEventOwne } } + // Handle client access fields (#172) + if (Object.prototype.hasOwnProperty.call(updates, 'client_access_enabled')) { + updates.client_access_enabled = formatBoolean(updates.client_access_enabled); + // Auto-generate client share token when first enabling + if (parseBooleanInput(updates.client_access_enabled, false) && !event.client_share_token) { + updates.client_share_token = crypto.randomBytes(32).toString('hex'); + } + } + // Update event await db('events') .where('id', id) From 479f16085bb3fc3b80b958490bdb8488ea801190 Mon Sep 17 00:00:00 2001 From: PiR1 Date: Fri, 8 May 2026 23:33:47 +0200 Subject: [PATCH 2/3] chore(changelog): update unreleased section with event access fix --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2685305..a1d92290 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Bug Fixes + +* **event:** fix updating client access ([ee85e1d](https://github.com/the-luap/picpeak/commit/ee85e1d)) + ### Features * **i18n:** add French (fr) language support with full translation coverage From 916580adefd464417729e418aa1727b67566fea3 Mon Sep 17 00:00:00 2001 From: PiR1 Date: Sat, 9 May 2026 19:47:56 +0200 Subject: [PATCH 3/3] fix(event): ensure client share token is generated only when necessary --- backend/src/routes/adminEvents.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/routes/adminEvents.js b/backend/src/routes/adminEvents.js index fa238c13..adcf5557 100644 --- a/backend/src/routes/adminEvents.js +++ b/backend/src/routes/adminEvents.js @@ -1277,7 +1277,7 @@ router.put('/:id', adminAuth, requirePermission('events.edit'), requireEventOwne if (Object.prototype.hasOwnProperty.call(updates, 'client_access_enabled')) { updates.client_access_enabled = formatBoolean(updates.client_access_enabled); // Auto-generate client share token when first enabling - if (parseBooleanInput(updates.client_access_enabled, false) && !event.client_share_token) { + if (parseBooleanInput(updates.client_access_enabled, false) && !event.client_share_token && !updates.client_share_token) { updates.client_share_token = crypto.randomBytes(32).toString('hex'); } }