Changeset 8afbdd6 in Klonkt for src/middleware
- Timestamp:
- 06/14/2026 06:07:51 PM (3 months ago)
- Branches:
- main
- Children:
- c869272
- Parents:
- b94c08e
- Location:
- src/middleware
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/middleware/auth.js
rb94c08e r8afbdd6 37 37 } 38 38 39 // Een 'kijker' mag ALLES bekijken (incl. Beheer) maar NIETS wijzigen. De 40 // schrijf-blokkade zit in de globale guard in server.js; deze helper bepaalt 41 // alleen "is dit een alleen-lezen account?". `readonly` is de legacy-vlag die 42 // we nog meenemen zodat niet-gemigreerde demo-accounts geblokkeerd blijven. 43 export function isViewer(user) { 44 return !!user && (user.role === 'kijker' || !!user.readonly); 45 } 46 39 47 export function requireGod(req, res, next) { 40 48 if (!req.session?.user) return loginRedirect(req, res); 41 if (req.session.user.role !== 'god') { 49 const role = req.session.user.role; 50 // god beheert; een kijker mág het Beheer-paneel zien (alleen-lezen) — de 51 // globale guard 403't elke write, dus dit geeft enkel kijk-toegang. 52 if (role !== 'god' && role !== 'kijker') { 42 53 return res.status(403).send('God role required'); 43 54 } … … 52 63 if (!req.session?.user) return loginRedirect(req, res); 53 64 const u = req.session.user; 54 if (u.role === 'god' ) return next();65 if (u.role === 'god' || u.role === 'kijker') return next(); // kijker = alleen-lezen kijk-toegang 55 66 const site = res.locals.site; 56 67 if (site && site.owner_id === u.id) return next(); … … 62 73 if (!req.session?.user) return loginRedirect(req, res); 63 74 const u = req.session.user; 64 if (u.role === 'god' ) return next();75 if (u.role === 'god' || u.role === 'kijker') return next(); // kijker = alleen-lezen kijk-toegang 65 76 const site = db.prepare('SELECT owner_id FROM sites WHERE slug = ?').get(req.params.slug); 66 77 if (site && site.owner_id === u.id) return next(); -
src/middleware/render.js
rb94c08e r8afbdd6 15 15 import db from '../config/database.js'; 16 16 import PermissionsService from '../services/PermissionsService.js'; 17 import { isViewer } from './auth.js'; 17 18 import { getSetting } from '../services/SettingsService.js'; 18 19 import { PLATFORMS as PLATFORMS_CATALOG } from '../services/PlatformIcons.js'; … … 51 52 : null; 52 53 54 // Kijker-modus: alles bekijken mag, niets wijzigen. Views gebruiken canMutate 55 // om schrijf-knoppen (posten, opslaan, verwijderen) te verbergen/uit te zetten. 56 const _isViewer = isViewer(_u); 57 53 58 // Common locals 54 59 const locals = { 55 60 user: _u, 56 61 userOwnsSite, 62 isViewer: _isViewer, 63 canMutate: !_isViewer, 57 64 siteOwnerAvatar, 58 65 site: _site, … … 65 72 formatDate, 66 73 formatDateTime, 67 pageTitle: data.pageTitle || (data.site && data.site.title) || ' PrutCMS',74 pageTitle: data.pageTitle || (data.site && data.site.title) || 'Klonkt Hub Beta', 68 75 bodyClass: data.bodyClass || 'on-home', 69 76 socialDescr: data.socialDescr || '',
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)