update: ics utl verification, custom in app name

This commit is contained in:
Nathan FONTEYNE 2026-07-10 11:27:08 +02:00
parent d296494d0e
commit b46c727c85
9 changed files with 149 additions and 23 deletions

View file

@ -93,9 +93,15 @@ router.post(
if (!icsUrl || !icsUrl.trim()) {
return res.status(400).json({ error: 'ics_url_required' });
}
const trimmedUrl = icsUrl.trim();
try {
await calendarSync.testFeed(trimmedUrl);
} catch (err) {
return res.status(400).json({ error: 'ics_url_unreachable', message: err.message });
}
const feed = await calendarRepo.addFeed(req.user.id, {
label: label ? label.trim() : null,
icsUrl: icsUrl.trim(),
icsUrl: trimmedUrl,
});
res.status(201).json({ id: feed.id, label: feed.label, icsUrl: feed.ics_url });
})
@ -142,9 +148,15 @@ router.post(
if (!user) {
return res.status(404).json({ error: 'user_not_found' });
}
const trimmedUrl = icsUrl.trim();
try {
await calendarSync.testFeed(trimmedUrl);
} catch (err) {
return res.status(400).json({ error: 'ics_url_unreachable', message: err.message });
}
const feed = await calendarRepo.addFeed(userId, {
label: label ? label.trim() : null,
icsUrl: icsUrl.trim(),
icsUrl: trimmedUrl,
});
res.status(201).json({ id: feed.id, userId: feed.user_id, label: feed.label, icsUrl: feed.ics_url });
})

View file

@ -13,10 +13,11 @@ function authentikAccountUrl() {
router.get(
'/me',
asyncHandler(async (req, res) => {
const { id, name, username, email, avatar_url, is_admin } = req.user;
const { id, name, display_name, username, email, avatar_url, is_admin } = req.user;
res.json({
id,
name,
hasCustomName: !!display_name,
username,
email,
avatarUrl: avatar_url,
@ -29,11 +30,12 @@ router.get(
router.get(
'/me/profile',
asyncHandler(async (req, res) => {
const { id, name, username, email, avatar_url, groups, is_admin, created_at } = req.user;
const { id, name, display_name, username, email, avatar_url, groups, is_admin, created_at } = req.user;
const stats = await usersRepo.getActivityStats(id);
res.json({
id,
name,
hasCustomName: !!display_name,
username,
email,
avatarUrl: avatar_url,
@ -46,4 +48,16 @@ router.get(
})
);
router.patch(
'/me/display-name',
asyncHandler(async (req, res) => {
const { displayName } = req.body || {};
if (displayName && displayName.trim().length > 60) {
return res.status(400).json({ error: 'display_name_too_long' });
}
const user = await usersRepo.updateDisplayName(req.user.id, displayName || '');
res.json({ name: user.name, hasCustomName: !!user.display_name });
})
);
module.exports = router;