feat: ruoli admin/editor in auth e create-user

This commit is contained in:
2026-07-05 15:31:53 +02:00
parent c7d9d4ba5d
commit 77041f9d5a
4 changed files with 62 additions and 14 deletions
+11 -6
View File
@@ -3,9 +3,13 @@ import bcrypt from 'bcryptjs';
import { mkdirSync } from 'node:fs';
import { dirname } from 'node:path';
const [, , username, password] = process.argv;
const [, , username, password, role = 'admin'] = process.argv;
if (!username || !password) {
console.error('Uso: npm run create-user -- <username> <password>');
console.error('Uso: npm run create-user -- <username> <password> [role]');
process.exit(1);
}
if (!['admin', 'editor'].includes(role)) {
console.error('Ruolo non valido. Ammessi: admin, editor');
process.exit(1);
}
const path = process.env.DB_PATH ?? 'data/insanitylab.db';
@@ -14,10 +18,11 @@ const db = new Database(path);
db.exec(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL
password_hash TEXT NOT NULL,
role TEXT NOT NULL DEFAULT 'admin'
);`);
db.prepare(
`INSERT INTO users (username, password_hash) VALUES (?, ?)
ON CONFLICT(username) DO UPDATE SET password_hash = excluded.password_hash`
).run(username, bcrypt.hashSync(password, 12));
`INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)
ON CONFLICT(username) DO UPDATE SET password_hash = excluded.password_hash, role = excluded.role`
).run(username, bcrypt.hashSync(password, 12), role);
console.log(`Utente "${username}" creato/aggiornato in ${path}`);