🏗️」 wip: refactor working

This commit is contained in:
2025-07-18 14:11:54 +02:00
parent 56f6164671
commit 1fb6d07d10
9 changed files with 397 additions and 133 deletions

39
src/utils/authDB.js Normal file
View File

@ -0,0 +1,39 @@
import Database from 'better-sqlite3';
var env = process.env.NODE_ENV || 'development';
let database;
const RESERVED_USERNAMES = ['admin'];
let userCheck, passwordQuery, userAdd;
if (!env || env === 'development') {
database = new Database(":memory:", { verbose: console.log });
} else {
var dbPath = process.env.DB_PATH || '/db/db.sqlite';
database = new Database(dbPath);
}
/**
* @description Can be used to prepare the database
*/
function prepareDB() {
database.exec(`
CREATE TABLE IF NOT EXISTS credentials (
username TEXT PRIMARY KEY,
passwordHash TEXT
) STRICT
`);
userCheck = database.prepare('SELECT EXISTS (SELECT 1 FROM credentials WHERE username = ?);');
passwordQuery = database.prepare('SELECT passwordHash FROM credentials WHERE username = ?;');
userAdd = database.prepare('INSERT INTO credentials (username, passwordHash) VALUES (?, ?)');
}
const authDB = {
prepareDB,
get userCheck() { return userCheck; },
get userAdd() { return userAdd; },
get passwordQuery() { return passwordQuery; },
RESERVED_USERNAMES
};
export default authDB;

23
src/utils/authUtils.js Normal file
View File

@ -0,0 +1,23 @@
import authDB from './authDB.js';
/**
* @param {string} value
*
* @returns {boolean}
*/
export function isValidString(value) {
return typeof value === 'string' && value.trim() !== '';
}
/**
* @param {string} name
* @param {import('better-sqlite3').Statement} userCheck
*
* @returns {boolean}
*/
export function checkUser(name, userCheck) {
const result = authDB.userCheck.get(name);
const key = Object.keys(result)[0];
return result[key] === 1;
}