Add delete auth session endpoint to logout individual session

This commit is contained in:
advplyr 2026-07-26 17:36:36 -05:00
parent a7b380cd7a
commit 1876bfbfe7
4 changed files with 78 additions and 3 deletions

View file

@ -4,7 +4,7 @@ const Logger = require('../Logger')
const SocketAuthority = require('../SocketAuthority')
const Database = require('../Database')
const { sort } = require('../libs/fastSort')
const { toNumber, isNullOrNaN } = require('../utils/index')
const { toNumber, isNullOrNaN, isUUID } = require('../utils/index')
const userStats = require('../utils/queries/userStats')
const parseUserAgent = require('../utils/parsers/parseUserAgent')
@ -71,6 +71,38 @@ class MeController {
})
}
/**
* DELETE: /api/me/sessions/:id
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async deleteSession(req, res) {
if (req.user.isGuest) {
return res.sendStatus(403)
}
if (!isUUID(req.params.id)) {
return res.sendStatus(400)
}
const session = await Database.sessionModel.findOne({
where: {
id: req.params.id,
userId: req.user.id
}
})
if (!session) {
return res.sendStatus(404)
}
await Database.sessionModel.destroy({ where: { id: session.id } })
Logger.info(`[MeController] User ${req.user.username} deleted auth session ${session.id}`)
res.json({ success: true })
}
/**
* GET: /api/me/progress
*

View file

@ -172,6 +172,7 @@ class ApiRouter {
//
this.router.get('/me', MeController.getCurrentUser.bind(this))
this.router.get('/me/sessions', MeController.getSessions.bind(this))
this.router.delete('/me/sessions/:id', MeController.deleteSession.bind(this))
this.router.get('/me/progress', MeController.getAllMediaProgress.bind(this))
this.router.get('/me/bookmarks', MeController.getAllBookmarks.bind(this))
this.router.get('/me/bookmarks/:libraryItemId', MeController.getBookmarksForLibraryItem.bind(this))