source: Klonkt/src/routes/admin-epk.js@ 9d9f3c1

main
Last change on this file since 9d9f3c1 was 9d9f3c1, checked in by roboburr <roboburr@…>, 3 months ago

feat(epk): press kit editable (bio + press contact) via Admin

There was no edit UI for the press kit (bio fell back to the tagline, contact
empty). New: Admin → "Edit press kit" (/admin/epk, god-only + premium) with
fields Press bio + Press contact, saved as epk_bio_<siteId>/epk_contact_<siteId>
which /pers already reads. Dashboard now has "Edit press kit" + "View press kit".

Co-Authored-By: Claude <noreply@…>

  • Property mode set to 100644
File size: 1.6 KB
Line 
1/**
2 * Admin: Perskit (EPK) bewerken — per-site bio + pers-contact.
3 *
4 * GET /admin/epk -> formulier met huidige bio + contact
5 * POST /admin/epk -> opslaan (app_settings: epk_bio_<siteId> / epk_contact_<siteId>)
6 *
7 * De perskit-pagina zelf (/pers) leest deze waarden; tracks + recente posts komen
8 * automatisch. Perskit is premium + solo (zie routes/epk.js).
9 */
10
11import express from 'express';
12import { renderPage } from '../middleware/render.js';
13import { requireGod } from '../middleware/auth.js';
14import { getSetting, setSetting } from '../services/SettingsService.js';
15import { premiumUnlocked } from '../services/PatreonService.js';
16
17const router = express.Router();
18
19router.get('/', requireGod, (req, res) => {
20 const site = res.locals.site;
21 if (!site) return res.status(404).send('Geen site');
22 if (!premiumUnlocked()) {
23 return res.status(403).send('Perskit is een premium-functie.');
24 }
25 renderPage(req, res, 'pages/admin-epk', {
26 pageTitle: 'Perskit bewerken',
27 bodyClass: 'on-admin',
28 site,
29 epkBio: getSetting('epk_bio_' + site.id, '') || '',
30 epkContact: getSetting('epk_contact_' + site.id, '') || '',
31 success: req.query.success || null,
32 });
33});
34
35router.post('/', requireGod, (req, res) => {
36 const site = res.locals.site;
37 if (!site) return res.status(404).send('Geen site');
38 setSetting('epk_bio_' + site.id, (req.body.epk_bio || '').toString().slice(0, 1000).trim());
39 setSetting('epk_contact_' + site.id, (req.body.epk_contact || '').toString().slice(0, 300).trim());
40 res.redirect('/admin/epk?success=' + encodeURIComponent('Perskit opgeslagen'));
41});
42
43export default router;
Note: See TracBrowser for help on using the repository browser.