change guest access
All checks were successful
Build & Push Docker Image / build (push) Successful in 1m8s
All checks were successful
Build & Push Docker Image / build (push) Successful in 1m8s
This commit is contained in:
@@ -272,7 +272,7 @@ router.get('/:uid/public', async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
const db = getDb();
|
const db = getDb();
|
||||||
const room = await db.get(`
|
const room = await db.get(`
|
||||||
SELECT r.uid, r.name, r.guest_access, r.welcome_message, r.access_code,
|
SELECT r.uid, r.name, r.welcome_message, r.access_code,
|
||||||
u.name as owner_name
|
u.name as owner_name
|
||||||
FROM rooms r
|
FROM rooms r
|
||||||
JOIN users u ON r.user_id = u.id
|
JOIN users u ON r.user_id = u.id
|
||||||
@@ -283,10 +283,6 @@ router.get('/:uid/public', async (req, res) => {
|
|||||||
return res.status(404).json({ error: 'Raum nicht gefunden' });
|
return res.status(404).json({ error: 'Raum nicht gefunden' });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!room.guest_access) {
|
|
||||||
return res.status(403).json({ error: 'Gastzugang ist für diesen Raum nicht aktiviert' });
|
|
||||||
}
|
|
||||||
|
|
||||||
const running = await isMeetingRunning(room.uid);
|
const running = await isMeetingRunning(room.uid);
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
@@ -321,10 +317,6 @@ router.post('/:uid/guest-join', async (req, res) => {
|
|||||||
return res.status(404).json({ error: 'Raum nicht gefunden' });
|
return res.status(404).json({ error: 'Raum nicht gefunden' });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!room.guest_access) {
|
|
||||||
return res.status(403).json({ error: 'Gastzugang ist für diesen Raum nicht aktiviert' });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check access code if set
|
// Check access code if set
|
||||||
if (room.access_code && access_code !== room.access_code) {
|
if (room.access_code && access_code !== room.access_code) {
|
||||||
return res.status(403).json({ error: 'Falscher Zugangscode' });
|
return res.status(403).json({ error: 'Falscher Zugangscode' });
|
||||||
|
|||||||
@@ -416,52 +416,36 @@ export default function RoomDetail() {
|
|||||||
{/* Guest access section */}
|
{/* Guest access section */}
|
||||||
<div className="pt-4 border-t border-th-border space-y-4">
|
<div className="pt-4 border-t border-th-border space-y-4">
|
||||||
<h3 className="text-sm font-semibold text-th-text">{t('room.guestAccessTitle')}</h3>
|
<h3 className="text-sm font-semibold text-th-text">{t('room.guestAccessTitle')}</h3>
|
||||||
<label className="flex items-center gap-3 cursor-pointer">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
checked={!!editRoom.guest_access}
|
|
||||||
onChange={e => setEditRoom({ ...editRoom, guest_access: e.target.checked })}
|
|
||||||
className="w-4 h-4 rounded border-th-border text-th-accent focus:ring-th-ring"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<span className="text-sm text-th-text">{t('room.guestAccess')}</span>
|
|
||||||
<p className="text-xs text-th-text-s">{t('room.guestAccessHint')}</p>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
{editRoom.guest_access && (
|
<div>
|
||||||
<>
|
<label className="block text-sm font-medium text-th-text mb-1.5">{t('room.moderatorCode')}</label>
|
||||||
<div>
|
<input
|
||||||
<label className="block text-sm font-medium text-th-text mb-1.5">{t('room.moderatorCode')}</label>
|
type="text"
|
||||||
<input
|
value={editRoom.moderator_code || ''}
|
||||||
type="text"
|
onChange={e => setEditRoom({ ...editRoom, moderator_code: e.target.value })}
|
||||||
value={editRoom.moderator_code || ''}
|
className="input-field"
|
||||||
onChange={e => setEditRoom({ ...editRoom, moderator_code: e.target.value })}
|
placeholder={t('room.moderatorCodeHint')}
|
||||||
className="input-field"
|
/>
|
||||||
placeholder={t('room.moderatorCodeHint')}
|
<p className="text-xs text-th-text-s mt-1">{t('room.moderatorCodeDesc')}</p>
|
||||||
/>
|
</div>
|
||||||
<p className="text-xs text-th-text-s mt-1">{t('room.moderatorCodeDesc')}</p>
|
<div>
|
||||||
</div>
|
<label className="block text-sm font-medium text-th-text mb-1.5">{t('room.guestLink')}</label>
|
||||||
<div>
|
<div className="flex items-center gap-2">
|
||||||
<label className="block text-sm font-medium text-th-text mb-1.5">{t('room.guestLink')}</label>
|
<code className="flex-1 bg-th-bg-s px-3 py-2 rounded-lg text-xs text-th-text font-mono truncate border border-th-border">
|
||||||
<div className="flex items-center gap-2">
|
{window.location.origin}/join/{room.uid}
|
||||||
<code className="flex-1 bg-th-bg-s px-3 py-2 rounded-lg text-xs text-th-text font-mono truncate border border-th-border">
|
</code>
|
||||||
{window.location.origin}/join/{room.uid}
|
<button
|
||||||
</code>
|
type="button"
|
||||||
<button
|
onClick={() => {
|
||||||
type="button"
|
navigator.clipboard.writeText(`${window.location.origin}/join/${room.uid}`);
|
||||||
onClick={() => {
|
toast.success(t('room.linkCopied'));
|
||||||
navigator.clipboard.writeText(`${window.location.origin}/join/${room.uid}`);
|
}}
|
||||||
toast.success(t('room.linkCopied'));
|
className="btn-ghost text-xs py-2 px-3"
|
||||||
}}
|
>
|
||||||
className="btn-ghost text-xs py-2 px-3"
|
<Copy size={14} />
|
||||||
>
|
</button>
|
||||||
<Copy size={14} />
|
</div>
|
||||||
</button>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="pt-4 border-t border-th-border">
|
<div className="pt-4 border-t border-th-border">
|
||||||
|
|||||||
Reference in New Issue
Block a user