main
|
Last change
on this file since 8afbdd6 was 8afbdd6, checked in by roboburr <roboburr@…>, 3 months ago |
|
feat: viewer role + artists directory + Klonkt Hub Beta rebrand
Viewer role (replaces the separate view-mode/readonly toggle):
- 'kijker' is now a real role (VALID_ROLES) selectable in Admin.
May view EVERYTHING including Admin, but cannot modify anything.
- isViewer(user) (= role kijker or legacy readonly flag) is the source;
requireGod/requireSiteManager(BySlug) let a viewer through (viewing),
the global guard 403s every write. Existing readonly accounts are
migrated on each role change (readonly=0).
- Write leaks via GET patched: /prutter/new (INSERT) blocks for viewers,
/prutter/:id skips markAsRead (UPDATE); WS upgrade rejects viewers
(the HTTP guard doesn't cover WebSockets).
- Clean "Viewer mode" page (viewer-blocked) instead of raw 403 text;
styled sticky banner; account page shows read-only UI instead of an
upload button that silently 403s. canMutate hides write buttons.
Scalability (>50 artists):
- Hub home shows max 24 (most active first) + "All N artists ->".
- New searchable, paginated /artiesten directory (hub only).
- 'user' + 'artiesten' reserved as slugs.
Rebrand PrutFolio v1 -> Klonkt Hub Beta (footer, PWA manifest, account/
admin texts, default page title, startup, README; internal package +
PWA id 'prutfolio' remain for stability).
Co-Authored-By: Claude <noreply@…>
|
-
Property mode
set to
100644
|
|
File size:
1.0 KB
|
| Rev | Line | |
|---|
| [7bc636b] | 1 | {
|
|---|
| 2 | "name": "prutfolio",
|
|---|
| 3 | "version": "1.0.0-alpha.1",
|
|---|
| [8afbdd6] | 4 | "description": "Klonkt Hub Beta — persoonlijk multi-site platform met community, realtime, en (later) E2EE DMs. Forked van PrutCMS v9 (PHP) naar Node + SQLite + htmx.",
|
|---|
| [7bc636b] | 5 | "type": "module",
|
|---|
| 6 | "main": "src/server.js",
|
|---|
| 7 | "scripts": {
|
|---|
| 8 | "start": "node src/server.js",
|
|---|
| 9 | "dev": "node --watch src/server.js",
|
|---|
| [9e27d64] | 10 | "migrate": "node src/db/migrate.js",
|
|---|
| 11 | "reset-admin": "node scripts/reset-admin.mjs"
|
|---|
| [7bc636b] | 12 | },
|
|---|
| 13 | "dependencies": {
|
|---|
| 14 | "bcryptjs": "^2.4.3",
|
|---|
| 15 | "better-sqlite3": "^11.3.0",
|
|---|
| 16 | "body-parser": "^1.20.2",
|
|---|
| 17 | "dotenv": "^16.3.1",
|
|---|
| 18 | "ejs": "^3.1.9",
|
|---|
| 19 | "express": "^4.18.2",
|
|---|
| 20 | "express-rate-limit": "^7.4.1",
|
|---|
| 21 | "express-session": "^1.17.3",
|
|---|
| 22 | "ffmpeg-static": "^5.2.0",
|
|---|
| 23 | "fluent-ffmpeg": "^2.1.3",
|
|---|
| 24 | "helmet": "^7.1.0",
|
|---|
| 25 | "htmx.org": "1.9.12",
|
|---|
| 26 | "marked": "^11.1.1",
|
|---|
| 27 | "multer": "^1.4.5-lts.1",
|
|---|
| [9e27d64] | 28 | "nodemailer": "^6.9.15",
|
|---|
| [7bc636b] | 29 | "sanitize-html": "^2.17.3",
|
|---|
| 30 | "uuid": "^9.0.1",
|
|---|
| 31 | "ws": "^8.18.0"
|
|---|
| 32 | },
|
|---|
| 33 | "engines": {
|
|---|
| 34 | "node": ">=20"
|
|---|
| 35 | }
|
|---|
| 36 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.