Changeset 834bcc3 in Klonkt for src/middleware/auth.js
- Timestamp:
- 06/23/2026 06:14:27 PM (3 months ago)
- Branches:
- main
- Children:
- d774679
- Parents:
- bb42dfb
- File:
-
- 1 edited
-
src/middleware/auth.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/middleware/auth.js
rbb42dfb r834bcc3 38 38 } 39 39 40 // Een 'kijker' mag ALLES bekijken (incl. Beheer) maar NIETS wijzigen. De41 // schrijf-blokkade zit in de globale guard in server.js; deze helper bepaalt42 // alleen "is dit een alleen-lezen account?". `readonly` is de legacy-vlag die43 // we nog meenemen zodat niet-gemigreerde demo-accounts geblokkeerd blijven.40 // A 'kijker' (viewer) may VIEW everything (incl. Admin) but CHANGE nothing. The 41 // write block lives in the global guard in server.js; this helper only determines 42 // "is this a read-only account?". `readonly` is the legacy flag we still include 43 // so unmigrated demo accounts remain blocked. 44 44 export function isViewer(user) { 45 45 return !!user && (user.role === 'kijker' || !!user.readonly); … … 49 49 if (!req.session?.user) return loginRedirect(req, res); 50 50 const role = req.session.user.role; 51 // god beheert; een kijker mág het Beheer-paneel zien (alleen-lezen) — de52 // global e guard 403't elke write, dus dit geeft enkel kijk-toegang.51 // god manages; a viewer MAY see the Admin panel (read-only) — the 52 // global guard 403s every write, so this only grants view access. 53 53 if (role !== 'god' && role !== 'kijker') { 54 54 return res.status(403).send('God role required'); … … 57 57 } 58 58 59 // Mag de ingelogde user de HUIDIGE site (res.locals.site) beheren? god altijd;60 // anders alleen de owner van die site. Gebruikt voor site-gescopete beheerroutes61 // die een artiest via /user/<eigen-slug>/admin/... bereikt (res.locals.site is dan62 // z'n eigen site; een vreemde slug levert een anderesite -> 403).59 // Can the logged-in user manage the CURRENT site (res.locals.site)? god always; 60 // otherwise only the owner of that site. Used for site-scoped admin routes 61 // that an artist reaches via /user/<own-slug>/admin/... (res.locals.site is then 62 // their own site; a foreign slug yields a different site -> 403). 63 63 export function requireSiteManager(req, res, next) { 64 64 if (!req.session?.user) return loginRedirect(req, res); 65 65 const u = req.session.user; 66 if (u.role === 'god' || u.role === 'kijker') return next(); // kijker = alleen-lezen kijk-toegang66 if (u.role === 'god' || u.role === 'kijker') return next(); // viewer = read-only view access 67 67 const site = res.locals.site; 68 // owner O F toegewezen mede-beheerder (site_members) — canAdminSite dekt beide.68 // owner OR assigned co-admin (site_members) — canAdminSite covers both. 69 69 if (site && PermissionsService.canAdminSite(u, site)) return next(); 70 70 return res.status(403).send('Geen toegang tot deze site.'); 71 71 } 72 72 73 // Idem, maar de site wordt bepaald door de :slug-parameter (bv. site-edit).73 // Same, but the site is determined by the :slug parameter (e.g. site-edit). 74 74 export function requireSiteManagerBySlug(req, res, next) { 75 75 if (!req.session?.user) return loginRedirect(req, res); 76 76 const u = req.session.user; 77 if (u.role === 'god' || u.role === 'kijker') return next(); // kijker = alleen-lezen kijk-toegang77 if (u.role === 'god' || u.role === 'kijker') return next(); // viewer = read-only view access 78 78 const site = db.prepare('SELECT id, owner_id FROM sites WHERE slug = ?').get(req.params.slug); 79 79 if (site && PermissionsService.canAdminSite(u, site)) return next();
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)