Changeset 98ecf51 in Klonkt for src/middleware/auth.js


Ignore:
Timestamp:
06/18/2026 03:19:09 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
7881080
Parents:
6a2abb1
Message:

Hub #1+#2: site admin permissions work + assign owner to another user

#1 — canAdminSite was reading user.siteRoles which was NEVER populated (dead
code) → only god and the literal owner passed admin checks. Now canAdminSite
queries site_members directly (an assigned co-admin). requireSiteManager/BySlug
use canAdminSite so collaborators can access site management too.

#2 — owner_id was hard-coded to the creating god → you couldn't assign a site to
another user (the core of hub mode was missing). Now: god-only "Owner" select in
the site form; create/save set owner_id + a site_members-admin row for that owner
(upsert). Non-god doesn't see the field and cannot change the owner.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/middleware/auth.js

    r6a2abb1 r98ecf51  
    44
    55import db from '../config/database.js';
     6import PermissionsService from '../services/PermissionsService.js';
    67
    78/**
     
    6566  if (u.role === 'god' || u.role === 'kijker') return next(); // kijker = alleen-lezen kijk-toegang
    6667  const site = res.locals.site;
    67   if (site && site.owner_id === u.id) return next();
     68  // owner OF toegewezen mede-beheerder (site_members) — canAdminSite dekt beide.
     69  if (site && PermissionsService.canAdminSite(u, site)) return next();
    6870  return res.status(403).send('Geen toegang tot deze site.');
    6971}
     
    7476  const u = req.session.user;
    7577  if (u.role === 'god' || u.role === 'kijker') return next(); // kijker = alleen-lezen kijk-toegang
    76   const site = db.prepare('SELECT owner_id FROM sites WHERE slug = ?').get(req.params.slug);
    77   if (site && site.owner_id === u.id) return next();
     78  const site = db.prepare('SELECT id, owner_id FROM sites WHERE slug = ?').get(req.params.slug);
     79  if (site && PermissionsService.canAdminSite(u, site)) return next();
    7880  return res.status(403).send('Geen toegang tot deze site.');
    7981}
Note: See TracChangeset for help on using the changeset viewer.