From 0a5f4516ef66b44c859501db9505cb81670f52c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=D1=81=20=D0=A1=D1=83=D0=BB=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Thu, 16 Jul 2026 20:42:55 +0300 Subject: [PATCH] fix(push.routes): req.user!.userId -> req.user!.id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit У объекта пользователя из authenticateToken поле id, а не userId. Это чинит 500 на /api/devices/active-chat и других device-эндпоинтах. --- server/routes/push.routes.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/routes/push.routes.ts b/server/routes/push.routes.ts index 6d77740..f934f53 100644 --- a/server/routes/push.routes.ts +++ b/server/routes/push.routes.ts @@ -60,7 +60,7 @@ export function registerPushRoutes(app: import("express").Express): void { return res.status(400).json({ error: 'Неверная платформа. Допустимые значения: android, ios, web' }); } - const userId = req.user!.userId; + const userId = req.user!.id; const organizationId = req.user!.organizationId; await storage.registerDeviceToken(userId, organizationId, token, platform, deviceInfo); @@ -82,7 +82,7 @@ export function registerPushRoutes(app: import("express").Express): void { return res.status(400).json({ error: 'Токен обязателен' }); } - const userId = req.user!.userId; + const userId = req.user!.id; const organizationId = req.user!.organizationId; await storage.unregisterDeviceToken(userId, organizationId, token); @@ -97,7 +97,7 @@ export function registerPushRoutes(app: import("express").Express): void { // Heartbeat endpoint to update presence app.post('/api/devices/heartbeat', authenticateToken, async (req: AuthenticatedRequest, res) => { try { - const userId = req.user!.userId; + const userId = req.user!.id; const organizationId = req.user!.organizationId; await storage.heartbeatUserPresence(userId, organizationId); @@ -113,7 +113,7 @@ export function registerPushRoutes(app: import("express").Express): void { // Used by the server to suppress push notifications for active chats. app.post('/api/devices/active-chat', authenticateToken, async (req: AuthenticatedRequest, res) => { try { - const userId = req.user!.userId; + const userId = req.user!.id; const organizationId = req.user!.organizationId; const { type, id, visible } = req.body; @@ -132,7 +132,7 @@ export function registerPushRoutes(app: import("express").Express): void { // Clear active chat when the user leaves the chat page. app.delete('/api/devices/active-chat', authenticateToken, async (req: AuthenticatedRequest, res) => { try { - const userId = req.user!.userId; + const userId = req.user!.id; const organizationId = req.user!.organizationId; await storage.clearUserActiveChat(userId, organizationId); @@ -146,7 +146,7 @@ export function registerPushRoutes(app: import("express").Express): void { // Get user's registered devices app.get('/api/devices', authenticateToken, async (req: AuthenticatedRequest, res) => { try { - const userId = req.user!.userId; + const userId = req.user!.id; const organizationId = req.user!.organizationId; const tokens = await storage.getDeviceTokensByUser(userId, organizationId);