Changeset 8cb1dc7 in Klonkt for src/routes
- Timestamp:
- 06/14/2026 04:17:14 PM (3 months ago)
- Branches:
- main
- Children:
- 640b39c
- Parents:
- ccbd6a6
- Location:
- src/routes
- Files:
-
- 3 edited
-
admin-comments.js (modified) (3 diffs)
-
admin-sites.js (modified) (4 diffs)
-
admin.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/admin-comments.js
rccbd6a6 r8cb1dc7 15 15 import db from '../config/database.js'; 16 16 import { renderPage } from '../middleware/render.js'; 17 import { require God} from '../middleware/auth.js';17 import { requireSiteManager } from '../middleware/auth.js'; 18 18 19 19 const router = express.Router(); 20 20 21 router.get('/', require God, (req, res) => {21 router.get('/', requireSiteManager, (req, res) => { 22 22 const site = res.locals.site; 23 23 if (!site) return res.status(404).send('No site'); … … 61 61 const site = res.locals.site; 62 62 if (!site) return res.status(404).send('No site'); 63 const base = res.locals.siteUrlBase || ''; // /user/<slug> in hub-artiestcontext, anders '' 63 64 64 65 const row = db.prepare(` … … 67 68 `).get(req.params.id, site.id); 68 69 69 if (!row) return res.redirect( '/admin/comments?error=Not+found');70 if (!row) return res.redirect(base + '/admin/comments?error=Not+found'); 70 71 71 72 db.prepare( 72 73 'UPDATE comments SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?' 73 74 ).run(status, req.params.id); 74 res.redirect( '/admin/comments?success=' + encodeURIComponent('Comment ' + status));75 res.redirect(base + '/admin/comments?success=' + encodeURIComponent('Comment ' + status)); 75 76 } 76 77 77 router.post('/:id/approve', require God, (req, res) => setStatus(req, res, 'approved'));78 router.post('/:id/reject', require God, (req, res) => setStatus(req, res, 'rejected'));78 router.post('/:id/approve', requireSiteManager, (req, res) => setStatus(req, res, 'approved')); 79 router.post('/:id/reject', requireSiteManager, (req, res) => setStatus(req, res, 'rejected')); 79 80 80 81 export default router; -
src/routes/admin-sites.js
rccbd6a6 r8cb1dc7 22 22 import db from '../config/database.js'; 23 23 import { renderPage } from '../middleware/render.js'; 24 import { requireGod } from '../middleware/auth.js';24 import { requireGod, requireAuth, requireSiteManagerBySlug } from '../middleware/auth.js'; 25 25 import ThemeService from '../services/ThemeService.js'; 26 26 import { listPlatforms, PLATFORMS } from '../services/PlatformIcons.js'; … … 82 82 // holds the URL string in `profile_photo` — this endpoint just stores the 83 83 // file and hands back a URL that the form can paste into the input field. 84 router.post('/upload-photo', require God, (req, res) => {84 router.post('/upload-photo', requireAuth, (req, res) => { 85 85 photoUpload.single('photo')(req, res, (err) => { 86 86 if (err) return res.status(400).json({ ok: false, error: err.message }); … … 218 218 219 219 // ==================== EDIT (form) ==================== 220 router.get('/:slug/edit', require God, (req, res) => {220 router.get('/:slug/edit', requireSiteManagerBySlug, (req, res) => { 221 221 const site = db.prepare('SELECT * FROM sites WHERE slug = ?').get(req.params.slug); 222 222 if (!site) return res.redirect('/admin/sites?error=Not+found'); … … 242 242 243 243 // ==================== SAVE ==================== 244 router.post('/:slug/save', require God, (req, res) => {244 router.post('/:slug/save', requireSiteManagerBySlug, (req, res) => { 245 245 const site = db.prepare('SELECT id FROM sites WHERE slug = ?').get(req.params.slug); 246 246 if (!site) return res.redirect('/admin/sites?error=Not+found'); -
src/routes/admin.js
rccbd6a6 r8cb1dc7 8 8 import db from '../config/database.js'; 9 9 import { renderPage } from '../middleware/render.js'; 10 import { require God} from '../middleware/auth.js';10 import { requireAuth } from '../middleware/auth.js'; 11 11 import { getTenancy } from '../services/SettingsService.js'; 12 12 13 13 const router = express.Router(); 14 14 15 router.get('/', requireGod, (req, res) => { 15 router.get('/', requireAuth, (req, res) => { 16 const user = req.session.user; 17 18 // Niet-god: een artiest die een eigen site bezit krijgt een "Mijn PrutFolio"- 19 // dashboard, gescopet op z'n eigen site. Bezit 'ie geen site -> geen beheer. 20 if (user.role !== 'god') { 21 const mySite = db.prepare( 22 'SELECT * FROM sites WHERE owner_id = ? ORDER BY created_at ASC LIMIT 1' 23 ).get(user.id); 24 if (!mySite) return res.status(403).send('Geen beheer beschikbaar voor dit account.'); 25 26 const mine = { 27 posts: db.prepare("SELECT COUNT(*) AS c FROM posts WHERE site_id = ?").get(mySite.id).c, 28 published: db.prepare("SELECT COUNT(*) AS c FROM posts WHERE site_id = ? AND status = 'published'").get(mySite.id).c, 29 }; 30 return renderPage(req, res, 'pages/my-site', { 31 pageTitle: 'Mijn PrutFolio', 32 bodyClass: 'on-admin', 33 mySite, 34 mine, 35 }); 36 } 37 16 38 const tenancy = getTenancy(); 17 39
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)