From e8fca76246a313f743180408c5745cb050d1d1a6 Mon Sep 17 00:00:00 2001
From: stuebinm <stuebinm@disroot.org>
Date: Tue, 21 Dec 2021 21:40:10 +0100
Subject: [PATCH] check that bbbRoom contains a valid assembly_slug

---
 lib/Properties.hs | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/lib/Properties.hs b/lib/Properties.hs
index dd680ea..f60758f 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -291,13 +291,18 @@ checkTileLayerProperty p@(Property name _value) = case name of
       removeProperty "bbbRoom"
       unwrapString p $ \str -> case parseUri str of
         Just ("bbb",assembly_slug, room_slug)
-          | "/" `isPrefixOf` room_slug && T.length room_slug >= 2 -> do
-          let link = "https://rc3.world/assembly/"<>assembly_slug<>"/bbb"<>room_slug
-          dependsOn (Link link)
-          setProperty "openWebsite" link
-          setProperty "silent" (BoolProp True)
-          setProperty "openWebsitePolicy"
-            ("fullscreen;camera;microphone;display-capture" :: Text)
+          | "/" `isPrefixOf` room_slug
+            && T.length room_slug >= 2  -> do
+          assemblies <- lintConfig configAssemblies
+          if assembly_slug `elem` assemblies
+            then do
+              let link = "https://rc3.world/assembly/"<>assembly_slug<>"/bbb"<>room_slug
+              dependsOn (Link link)
+              setProperty "openWebsite" link
+              setProperty "silent" (BoolProp True)
+              setProperty "openWebsitePolicy"
+                ("fullscreen;camera;microphone;display-capture" :: Text)
+            else complain $ prettyprint assembly_slug <> " is not a registered assembly and therefore cannot be used in `bbbUrl`."
         _ -> complain "the \"bbbRoom\" property must take a link of the form bbb://assembly_slug/room_slug."
     "bbbTrigger" -> do
       removeProperty "bbbTrigger"
-- 
GitLab