From cf74ed31af587a542b89bcb6795f8b6aa75e07ad Mon Sep 17 00:00:00 2001 From: Michelle Date: Tue, 24 Feb 2026 18:55:21 +0100 Subject: [PATCH] some fixing --- server/config/bbb.js | 5 ++++- server/index.js | 3 +++ server/routes/rooms.js | 4 ++-- src/components/Navbar.jsx | 12 +----------- src/i18n/de.json | 2 ++ src/i18n/en.json | 2 ++ src/pages/GuestJoin.jsx | 18 ++++++++++++++++-- 7 files changed, 30 insertions(+), 16 deletions(-) diff --git a/server/config/bbb.js b/server/config/bbb.js index 3784f5b..5792fca 100644 --- a/server/config/bbb.js +++ b/server/config/bbb.js @@ -39,7 +39,7 @@ function getRoomPasswords(uid) { return { moderatorPW: modPw, attendeePW: attPw }; } -export async function createMeeting(room) { +export async function createMeeting(room, logoutURL) { const { moderatorPW, attendeePW } = getRoomPasswords(room.uid); const params = { meetingID: room.uid, @@ -54,6 +54,9 @@ export async function createMeeting(room) { 'meta_bbb-origin': 'Redlight', 'meta_bbb-origin-server-name': 'Redlight', }; + if (logoutURL) { + params.logoutURL = logoutURL; + } if (room.max_participants > 0) { params.maxParticipants = room.max_participants.toString(); } diff --git a/server/index.js b/server/index.js index 6e4ef89..5a3e5e7 100644 --- a/server/index.js +++ b/server/index.js @@ -15,6 +15,9 @@ const __dirname = path.dirname(__filename); const app = express(); const PORT = process.env.PORT || 3001; +// Trust proxy for correct req.protocol behind reverse proxy +app.set('trust proxy', true); + // Middleware app.use(cors()); app.use(express.json()); diff --git a/server/routes/rooms.js b/server/routes/rooms.js index 5fde173..f2dcd35 100644 --- a/server/routes/rooms.js +++ b/server/routes/rooms.js @@ -198,7 +198,7 @@ router.post('/:uid/start', authenticateToken, async (req, res) => { return res.status(404).json({ error: 'Raum nicht gefunden oder keine Berechtigung' }); } - await createMeeting(room); + await createMeeting(room, `${req.protocol}://${req.get('host')}`); const joinUrl = await joinMeeting(room.uid, req.user.name, true); res.json({ joinUrl }); } catch (err) { @@ -326,7 +326,7 @@ router.post('/:uid/guest-join', async (req, res) => { // If meeting not running but anyone_can_start, create it if (!running && room.anyone_can_start) { - await createMeeting(room); + await createMeeting(room, `${req.protocol}://${req.get('host')}`); } // Check moderator code diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx index ed1755d..069b705 100644 --- a/src/components/Navbar.jsx +++ b/src/components/Navbar.jsx @@ -1,4 +1,4 @@ -import { Menu, Search, LogOut, User } from 'lucide-react'; +import { Menu, LogOut, User } from 'lucide-react'; import { useAuth } from '../contexts/AuthContext'; import { useLanguage } from '../contexts/LanguageContext'; import { useNavigate } from 'react-router-dom'; @@ -47,16 +47,6 @@ export default function Navbar({ onMenuClick }) { > - - {/* Search */} -
- - -
{/* Right section */} diff --git a/src/i18n/de.json b/src/i18n/de.json index 9f8e411..4162178 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -182,6 +182,8 @@ "guestAccessDenied": "Zugang nicht möglich", "guestNameRequired": "Name ist erforderlich", "guestJoinFailed": "Beitritt fehlgeschlagen", + "guestAccessNotEnabled": "Der Gastzugang ist für diesen Raum nicht aktiviert.", + "guestWrongAccessCode": "Falscher Zugangscode", "guestHasAccount": "Haben Sie ein Konto?", "guestSignIn": "Anmelden", "guestRoomNotFound": "Raum nicht gefunden" diff --git a/src/i18n/en.json b/src/i18n/en.json index 6bc541b..c51bcd2 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -182,6 +182,8 @@ "guestAccessDenied": "Access denied", "guestNameRequired": "Name is required", "guestJoinFailed": "Join failed", + "guestAccessNotEnabled": "Guest access is not enabled for this room.", + "guestWrongAccessCode": "Wrong access code", "guestHasAccount": "Have an account?", "guestSignIn": "Sign in", "guestRoomNotFound": "Room not found" diff --git a/src/pages/GuestJoin.jsx b/src/pages/GuestJoin.jsx index 694ed7f..27d626a 100644 --- a/src/pages/GuestJoin.jsx +++ b/src/pages/GuestJoin.jsx @@ -24,7 +24,14 @@ export default function GuestJoin() { setRoomInfo(res.data.room); setStatus({ running: res.data.running }); } catch (err) { - setError(err.response?.data?.error || t('room.guestRoomNotFound')); + const status = err.response?.status; + if (status === 403) { + setError(t('room.guestAccessNotEnabled')); + } else if (status === 404) { + setError(t('room.guestRoomNotFound')); + } else { + setError(t('room.guestRoomNotFound')); + } } finally { setLoading(false); } @@ -61,7 +68,14 @@ export default function GuestJoin() { window.location.href = res.data.joinUrl; } } catch (err) { - toast.error(err.response?.data?.error || t('room.guestJoinFailed')); + const status = err.response?.status; + if (status === 403) { + toast.error(t('room.guestWrongAccessCode')); + } else if (status === 400) { + toast.error(t('room.guestWaitingMessage')); + } else { + toast.error(t('room.guestJoinFailed')); + } } finally { setJoining(false); }