35 lines
839 B
TypeScript
35 lines
839 B
TypeScript
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;
|
|
}
|