mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-07-14 11:25:02 +02:00
Move invalidate refresh token to TokenManager
This commit is contained in:
parent
d3402e30c2
commit
7d6d3e6687
2 changed files with 23 additions and 9 deletions
|
@ -1,5 +1,4 @@
|
||||||
const { Request, Response, NextFunction } = require('express')
|
const { Request, Response, NextFunction } = require('express')
|
||||||
const { rateLimit } = require('express-rate-limit')
|
|
||||||
const passport = require('passport')
|
const passport = require('passport')
|
||||||
const JwtStrategy = require('passport-jwt').Strategy
|
const JwtStrategy = require('passport-jwt').Strategy
|
||||||
const ExtractJwt = require('passport-jwt').ExtractJwt
|
const ExtractJwt = require('passport-jwt').ExtractJwt
|
||||||
|
@ -466,14 +465,7 @@ class Auth {
|
||||||
|
|
||||||
// Invalidate the session in database using refresh token
|
// Invalidate the session in database using refresh token
|
||||||
if (refreshToken) {
|
if (refreshToken) {
|
||||||
try {
|
await this.tokenManager.invalidateRefreshToken(refreshToken)
|
||||||
Logger.info(`[Auth] logout: Invalidating session for refresh token: ${refreshToken}`)
|
|
||||||
await Database.sessionModel.destroy({
|
|
||||||
where: { refreshToken }
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
Logger.error(`[Auth] Error destroying session: ${error.message}`)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Logger.info(`[Auth] logout: No refresh token on request`)
|
Logger.info(`[Auth] logout: No refresh token on request`)
|
||||||
}
|
}
|
||||||
|
|
|
@ -379,6 +379,28 @@ class TokenManager {
|
||||||
await Database.sessionModel.destroy({ where: { userId: user.id } })
|
await Database.sessionModel.destroy({ where: { userId: user.id } })
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invalidate a refresh token - used for logout
|
||||||
|
*
|
||||||
|
* @param {string} refreshToken
|
||||||
|
* @returns {Promise<boolean>}
|
||||||
|
*/
|
||||||
|
async invalidateRefreshToken(refreshToken) {
|
||||||
|
if (!refreshToken) {
|
||||||
|
Logger.error(`[TokenManager] No refresh token provided to invalidate`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const numDeleted = await Database.sessionModel.destroy({ where: { refreshToken: refreshToken } })
|
||||||
|
Logger.info(`[TokenManager] Refresh token ${refreshToken} invalidated, ${numDeleted} sessions deleted`)
|
||||||
|
return true
|
||||||
|
} catch (error) {
|
||||||
|
Logger.error(`[TokenManager] Error invalidating refresh token: ${error.message}`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = TokenManager
|
module.exports = TokenManager
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue