propro-utils 1.7.30 → 1.7.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "propro-utils",
3
- "version": "1.7.30",
3
+ "version": "1.7.31",
4
4
  "description": "Auth middleware for propro-auth",
5
5
  "main": "src/index.js",
6
6
  "private": false,
@@ -188,9 +188,11 @@ class AuthMiddleware {
188
188
  const refreshToken =
189
189
  req.cookies['x-refresh-token'] || req.headers['x-refresh-token'];
190
190
  if (!refreshToken) {
191
+ console.error('Refresh token missing in request');
191
192
  return res.status(401).json({
192
193
  redirectUrl: this.constructRedirectUrl(),
193
194
  error: 'No refresh token provided',
195
+ message: 'Authentication required. Please log in.',
194
196
  });
195
197
  }
196
198
 
@@ -198,16 +200,25 @@ class AuthMiddleware {
198
200
  const lockKey = refreshToken;
199
201
  if (this.refreshLocks.has(lockKey)) {
200
202
  // Wait for the in-flight request to complete
203
+ console.log('Waiting for in-flight refresh request to complete...');
201
204
  try {
202
205
  const result = await this.refreshLocks.get(lockKey);
206
+ console.log('Reusing result from in-flight refresh request');
203
207
  return res.status(200).json(result);
204
208
  } catch (error) {
205
- return res.status(401).json({ error: 'Failed to refresh token' });
209
+ console.error('In-flight refresh request failed:', error);
210
+ return res.status(401).json({
211
+ error: 'Failed to refresh token',
212
+ message: 'Session refresh failed. Please log in again.',
213
+ });
206
214
  }
207
215
  }
208
216
 
209
217
  // Create a promise for this refresh operation
210
218
  const refreshPromise = (async () => {
219
+ console.log('Starting refresh token operation...');
220
+ const startTime = Date.now();
221
+
211
222
  try {
212
223
  const response = await this.refreshTokens(refreshToken);
213
224
  const { account, access, refresh } = response.data;
@@ -216,10 +227,13 @@ class AuthMiddleware {
216
227
  throw new Error('Invalid or expired refresh token');
217
228
  }
218
229
 
230
+ console.log(`Token refresh successful for account: ${account.accountId}`);
231
+
219
232
  const user = await checkIfUserExists(account.accountId);
220
233
 
221
234
  const { returnTokens } = req.query;
222
235
  if (returnTokens === 'true') {
236
+ console.log(`Refresh completed in ${Date.now() - startTime}ms (returning tokens)`);
223
237
  return { account, user, access, refresh };
224
238
  }
225
239
 
@@ -231,11 +245,19 @@ class AuthMiddleware {
231
245
  this.options.appUrl
232
246
  );
233
247
 
234
- return { message: 'Token refreshed successfully' };
248
+ console.log(`Refresh completed in ${Date.now() - startTime}ms (cookies set)`);
249
+ return {
250
+ message: 'Token refreshed successfully',
251
+ account: { accountId: account.accountId, email: account.email },
252
+ };
253
+ } catch (error) {
254
+ console.error(`Token refresh failed after ${Date.now() - startTime}ms:`, error.message);
255
+ throw error;
235
256
  } finally {
236
257
  // Clean up lock after 30 seconds
237
258
  setTimeout(() => {
238
259
  this.refreshLocks.delete(lockKey);
260
+ console.log('Refresh lock cleaned up');
239
261
  }, 30000);
240
262
  }
241
263
  })();
@@ -248,7 +270,12 @@ class AuthMiddleware {
248
270
  res.status(200).json(result);
249
271
  } catch (error) {
250
272
  console.error('Error refreshing token:', error);
251
- res.status(401).json({ error: 'Failed to refresh token' });
273
+ const errorMessage = error?.response?.data?.message || error?.message || 'Failed to refresh token';
274
+ res.status(401).json({
275
+ error: 'Failed to refresh token',
276
+ message: errorMessage,
277
+ details: 'Your session could not be refreshed. Please log in again.',
278
+ });
252
279
  }
253
280
  };
254
281