Skip to content

Commit d6f1ecf

Browse files
authored
🔒 fix: update refresh token handling to use plain token instead of hashed token (#5088)
* 🔒 fix: update refresh token handling to use plain token instead of hashed token * 🔒 fix: simplify logoutUser by using plain refresh token for session lookup
1 parent 04923dd commit d6f1ecf

File tree

2 files changed

+4
-11
lines changed

2 files changed

+4
-11
lines changed

‎api/server/controllers/AuthController.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ const {
77
requestPasswordReset,
88
} = require('~/server/services/AuthService');
99
const { findSession, getUserById, deleteAllUserSessions } = require('~/models');
10-
const { hashToken } = require('~/server/utils/crypto');
1110
const { logger } = require('~/config');
1211

1312
const registrationController = async (req, res) => {
@@ -74,11 +73,9 @@ const refreshController = async (req, res) => {
7473
return res.status(200).send({ token, user });
7574
}
7675

77-
// Hash the refresh token
78-
const hashedToken = await hashToken(refreshToken);
79-
8076
// Find the session with the hashed refresh token
81-
const session = await findSession({ userId: userId, refreshToken: hashedToken });
77+
const session = await findSession({ userId: userId, refreshToken: refreshToken });
78+
8279
if (session && session.expiration > new Date()) {
8380
const token = await setAuthTokens(userId, res, session._id);
8481
res.status(200).send({ token, user });

‎api/server/services/AuthService.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ const {
2222
const { isEnabled, checkEmailConfig, sendEmail } = require('~/server/utils');
2323
const { isEmailDomainAllowed } = require('~/server/services/domains');
2424
const { registerSchema } = require('~/strategies/validators');
25-
const { hashToken } = require('~/server/utils/crypto');
2625
const { logger } = require('~/config');
2726

2827
const domains = {
@@ -42,10 +41,7 @@ const genericVerificationMessage = 'Please check your email to verify your email
4241
*/
4342
const logoutUser = async (userId, refreshToken) => {
4443
try {
45-
const hash = await hashToken(refreshToken);
46-
47-
// Find the session with the matching user and refreshTokenHash
48-
const session = await findSession({ userId: userId, refreshToken: hash });
44+
const session = await findSession({ userId: userId, refreshToken: refreshToken });
4945

5046
if (session) {
5147
try {
@@ -343,7 +339,7 @@ const setAuthTokens = async (userId, res, sessionId = null) => {
343339
let refreshTokenExpires;
344340

345341
if (sessionId) {
346-
session = await findSession({ sessionId: sessionId });
342+
session = await findSession({ sessionId: sessionId }, { lean: false });
347343
refreshTokenExpires = session.expiration.getTime();
348344
refreshToken = await generateRefreshToken(session);
349345
} else {

0 commit comments

Comments
 (0)