mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-27 03:31:46 +00:00
Add /me/sessions endpoint and show sessions table on account page
This commit is contained in:
parent
4c71a076e7
commit
35a2c5e87c
5 changed files with 130 additions and 1 deletions
|
|
@ -1,10 +1,12 @@
|
|||
const { Request, Response } = require('express')
|
||||
const { Op } = require('sequelize')
|
||||
const Logger = require('../Logger')
|
||||
const SocketAuthority = require('../SocketAuthority')
|
||||
const Database = require('../Database')
|
||||
const { sort } = require('../libs/fastSort')
|
||||
const { toNumber, isNullOrNaN } = require('../utils/index')
|
||||
const userStats = require('../utils/queries/userStats')
|
||||
const parseUserAgent = require('../utils/parsers/parseUserAgent')
|
||||
|
||||
/**
|
||||
* @typedef RequestUserObject
|
||||
|
|
@ -26,6 +28,40 @@ class MeController {
|
|||
res.json(req.user.toOldJSONForBrowser())
|
||||
}
|
||||
|
||||
/**
|
||||
* GET: /api/me/sessions
|
||||
*
|
||||
* @param {RequestWithUser} req
|
||||
* @param {Response} res
|
||||
*/
|
||||
async getSessions(req, res) {
|
||||
if (req.user.isGuest) {
|
||||
return res.json({ sessions: [] })
|
||||
}
|
||||
|
||||
const refreshToken = req.cookies.refresh_token || req.headers['x-refresh-token']
|
||||
const sessions = await Database.sessionModel.findAll({
|
||||
where: {
|
||||
userId: req.user.id,
|
||||
expiresAt: { [Op.gt]: new Date() }
|
||||
},
|
||||
order: [['updatedAt', 'DESC']]
|
||||
})
|
||||
|
||||
res.json({
|
||||
sessions: sessions.map((session) => ({
|
||||
id: session.id,
|
||||
ipAddress: session.ipAddress,
|
||||
userAgent: session.userAgent,
|
||||
// For display convenience
|
||||
deviceInfo: parseUserAgent(session.userAgent),
|
||||
createdAt: session.createdAt?.valueOf() ?? null,
|
||||
updatedAt: session.updatedAt?.valueOf() ?? null,
|
||||
current: !!refreshToken && (session.refreshToken === refreshToken || session.lastRefreshToken === refreshToken)
|
||||
}))
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* GET: /api/me/progress
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue