lamassu-server/packages/server/lib/session-manager.js
2025-05-12 15:35:00 +01:00

49 lines
1.3 KiB
JavaScript

const db = require('./db')
function getSessions() {
const sql = `SELECT * FROM user_sessions ORDER BY sess -> 'user' ->> 'username'`
return db.any(sql)
}
function getLastSessionPerUser() {
const sql = `SELECT b.username, a.user_agent, a.ip_address, a.last_used, b.role FROM (
SELECT sess -> 'user' ->> 'username' AS username,
sess ->> 'ua' AS user_agent,
sess ->> 'ipAddress' AS ip_address,
sess ->> 'lastUsed' AS last_used
FROM user_sessions
) a RIGHT JOIN (
SELECT DISTINCT ON (username)
username, role
FROM users) b ON a.username = b.username`
return db.any(sql)
}
function getSessionsByUsername(username) {
const sql = `SELECT * FROM user_sessions WHERE sess -> 'user' ->> 'username'=$1`
return db.any(sql, [username])
}
function getSessionById(sessionID) {
const sql = `SELECT * FROM user_sessions WHERE sid=$1`
return db.any(sql, [sessionID])
}
function deleteSessionsByUsername(username) {
const sql = `DELETE FROM user_sessions WHERE sess -> 'user' ->> 'username'=$1`
return db.none(sql, [username])
}
function deleteSessionById(sessionID) {
const sql = `DELETE FROM user_sessions WHERE sid=$1`
return db.none(sql, [sessionID])
}
module.exports = {
getSessions,
getLastSessionPerUser,
getSessionsByUsername,
getSessionById,
deleteSessionsByUsername,
deleteSessionById,
}