tarekdx3 commited on
Commit
5a387fc
·
1 Parent(s): 9bcea3c
Files changed (1) hide show
  1. src/modules/auth/auth.service.ts +38 -1
src/modules/auth/auth.service.ts CHANGED
@@ -307,7 +307,18 @@ export class AuthService {
307
  rememberMe: rememberMe,
308
  });
309
 
310
- await this.sessionRepository.save(session);
 
 
 
 
 
 
 
 
 
 
 
311
 
312
  return {
313
  accessToken,
@@ -333,4 +344,30 @@ export class AuthService {
333
  if (/(android)/i.test(userAgent)) return 'android';
334
  return 'web';
335
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  }
 
307
  rememberMe: rememberMe,
308
  });
309
 
310
+ try {
311
+ await this.sessionRepository.save(session);
312
+ } catch (error) {
313
+ if (this.isDeviceTypeTruncationError(error)) {
314
+ // Some deployments have a stricter enum for sessions.device_type.
315
+ // Retry without deviceType so auth/login is not blocked by schema drift.
316
+ session.deviceType = undefined;
317
+ await this.sessionRepository.save(session);
318
+ } else {
319
+ throw error;
320
+ }
321
+ }
322
 
323
  return {
324
  accessToken,
 
344
  if (/(android)/i.test(userAgent)) return 'android';
345
  return 'web';
346
  }
347
+
348
+ private isDeviceTypeTruncationError(error: unknown): boolean {
349
+ const err = error as {
350
+ sqlMessage?: string;
351
+ message?: string;
352
+ code?: string;
353
+ driverError?: { sqlMessage?: string; message?: string; code?: string };
354
+ };
355
+
356
+ const combinedMessage = [
357
+ err?.sqlMessage,
358
+ err?.message,
359
+ err?.driverError?.sqlMessage,
360
+ err?.driverError?.message,
361
+ ]
362
+ .filter(Boolean)
363
+ .join(' ')
364
+ .toLowerCase();
365
+
366
+ const code = (err?.code || err?.driverError?.code || '').toLowerCase();
367
+
368
+ return (
369
+ combinedMessage.includes('device_type') &&
370
+ combinedMessage.includes('data truncated')
371
+ ) || code === 'warn_data_truncated';
372
+ }
373
  }