import jwt from 'jsonwebtoken'; import jsSHA from 'jssha'; import { db } from '$lib/server/dbService'; import config from '$lib/config'; const SECRET = config.jwt.secret; const EXPIRES_IN = config.jwt.expiresIn; export function createToken(userData) { return jwt.sign(userData, SECRET, { expiresIn: EXPIRES_IN }); } export function decryptToken(token: string) { return jwt.verify(token, SECRET); } export function authenticate(user, password) { let JWTToken; // hash user password const hashedPW = new jsSHA('SHA-512', 'TEXT').update(password).getHash('HEX'); const getUserSQLStmt = 'SELECT name, pw FROM users WHERE name = ?'; const row = db.prepare(getUserSQLStmt).get(user); const storedPW = row.pw; if (hashedPW && hashedPW === storedPW) { JWTToken = createToken({ id: user, admin: true }); } return JWTToken; }