Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d9b87500d | ||
|
|
97faff1c89 |
@@ -7,6 +7,10 @@ and this project follows [Semantic Versioning](https://semver.org/).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- "Add to calendar" (`GET /api/events/:id/ics`) always failed with a 400 in production: the `ics` library's `url` field requires a scheme (`https://...`), but `FRONTEND_URL`/`APP_BASE_URL` was configured without one, so `createEvent()` rejected it before generating any output. A missing scheme is now assumed to be `https://` instead of failing.
|
||||||
|
|
||||||
## [1.10.3] - 2026-08-28
|
## [1.10.3] - 2026-08-28
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -493,7 +493,12 @@ const getEventIcs = async (req, res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { buildEventIcs } = require('../utils/icsUtils');
|
const { buildEventIcs } = require('../utils/icsUtils');
|
||||||
const frontendUrl = (process.env.FRONTEND_URL || process.env.APP_BASE_URL || 'http://localhost:3001').replace(/\/$/, '');
|
let frontendUrl = (process.env.FRONTEND_URL || process.env.APP_BASE_URL || 'http://localhost:3001').replace(/\/$/, '');
|
||||||
|
// The ics library's url validator requires a scheme; guard against FRONTEND_URL/APP_BASE_URL
|
||||||
|
// being configured without one (e.g. "example.com" instead of "https://example.com").
|
||||||
|
if (!/^[a-z0-9+.-]+:\/\//i.test(frontendUrl)) {
|
||||||
|
frontendUrl = `https://${frontendUrl}`;
|
||||||
|
}
|
||||||
const ics = buildEventIcs(event, `${frontendUrl}/events/${event.id}`);
|
const ics = buildEventIcs(event, `${frontendUrl}/events/${event.id}`);
|
||||||
|
|
||||||
res.setHeader('Content-Type', 'text/calendar; charset=utf-8');
|
res.setHeader('Content-Type', 'text/calendar; charset=utf-8');
|
||||||
|
|||||||
Reference in New Issue
Block a user