QOL improvements
All checks were successful
Build Images and Deploy / Update-PROD-Stack (push) Successful in 28s
All checks were successful
Build Images and Deploy / Update-PROD-Stack (push) Successful in 28s
This commit is contained in:
@@ -45,6 +45,36 @@ const Users = {
|
||||
db.prepare('UPDATE users SET is_admin = 1 WHERE id = ?').run(userId);
|
||||
},
|
||||
|
||||
setPassword(userId, newPassword) {
|
||||
const hash = bcrypt.hashSync(newPassword, 12);
|
||||
db.prepare('UPDATE users SET password_hash = ? WHERE id = ?').run(hash, userId);
|
||||
},
|
||||
|
||||
createPasswordResetToken(userId) {
|
||||
const token = crypto.randomBytes(32).toString('hex');
|
||||
const expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(); // 24 hours
|
||||
// Invalidate any existing tokens for this user
|
||||
db.prepare('UPDATE password_reset_tokens SET used = 1 WHERE user_id = ?').run(userId);
|
||||
db.prepare('INSERT INTO password_reset_tokens (user_id, token, expires_at) VALUES (?, ?, ?)').run(userId, token, expiresAt);
|
||||
return token;
|
||||
},
|
||||
|
||||
findByResetToken(token) {
|
||||
return db.prepare(`
|
||||
SELECT prt.*, u.username FROM password_reset_tokens prt
|
||||
JOIN users u ON prt.user_id = u.id
|
||||
WHERE prt.token = ? AND prt.used = 0 AND prt.expires_at > datetime('now')
|
||||
`).get(token);
|
||||
},
|
||||
|
||||
consumeResetToken(token) {
|
||||
db.prepare('UPDATE password_reset_tokens SET used = 1 WHERE token = ?').run(token);
|
||||
},
|
||||
|
||||
getAllUsers() {
|
||||
return db.prepare('SELECT id, username, is_admin, created_at FROM users ORDER BY username ASC').all();
|
||||
},
|
||||
|
||||
getTotalPoints(userId) {
|
||||
const row = db.prepare('SELECT COALESCE(SUM(points_awarded), 0) as total FROM scans WHERE user_id = ?').get(userId);
|
||||
return row.total;
|
||||
@@ -233,6 +263,14 @@ const Packages = {
|
||||
db.prepare('UPDATE packages SET first_scan_image = ? WHERE id = ?').run(imagePath, packageId);
|
||||
},
|
||||
|
||||
removeFirstScanImage(packageId) {
|
||||
db.prepare('UPDATE packages SET first_scan_image = NULL WHERE id = ?').run(packageId);
|
||||
},
|
||||
|
||||
clearHint(packageId) {
|
||||
db.prepare('UPDATE packages SET last_scan_hint = NULL WHERE id = ?').run(packageId);
|
||||
},
|
||||
|
||||
updateLastScanHint(packageId, userId, hint) {
|
||||
db.prepare('UPDATE packages SET last_scanned_by = ?, last_scan_hint = ? WHERE id = ?').run(userId, hint, packageId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user