v0.6.5 various updates

This commit is contained in:
2026-03-10 18:16:05 -04:00
parent 09e6a75a9b
commit 2d21aac35f
11 changed files with 33 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "jama-backend",
"version": "0.6.4",
"version": "0.6.5",
"description": "TeamChat backend server",
"main": "src/index.js",
"scripts": {

View File

@@ -182,6 +182,12 @@ function initDb() {
console.log('[DB] Migration: added direct_peer2_id column');
} catch (e) { /* column already exists */ }
// Migration: last_login timestamp per user
try {
db.exec("ALTER TABLE users ADD COLUMN last_login TEXT");
console.log('[DB] Migration: added last_login column');
} catch (e) { /* column already exists */ }
// Migration: help_dismissed preference per user
try {
db.exec("ALTER TABLE users ADD COLUMN help_dismissed INTEGER NOT NULL DEFAULT 0");

View File

@@ -24,6 +24,9 @@ router.post('/login', (req, res) => {
const valid = bcrypt.compareSync(password, user.password);
if (!valid) return res.status(401).json({ error: 'Invalid credentials' });
// Record last login timestamp
db.prepare("UPDATE users SET last_login = datetime('now') WHERE id = ?").run(user.id);
const token = generateToken(user.id);
const ua = req.headers['user-agent'] || '';
const device = setActiveSession(user.id, token, ua); // displaces prior session on same device class

View File

@@ -49,7 +49,7 @@ function getDefaultPassword(db) {
router.get('/', authMiddleware, adminMiddleware, (req, res) => {
const db = getDb();
const users = db.prepare(`
SELECT id, name, email, role, status, is_default_admin, must_change_password, avatar, about_me, display_name, created_at
SELECT id, name, email, role, status, is_default_admin, must_change_password, avatar, about_me, display_name, created_at, last_login
FROM users WHERE status != 'deleted'
ORDER BY created_at ASC
`).all();