From 71229df9e30bbb14f8b708f8ff84b8005402ad05 Mon Sep 17 00:00:00 2001 From: ghost Date: Tue, 5 Dec 2023 19:44:43 +0200 Subject: [PATCH] add room access options --- .env | 6 ++++++ config/services.yaml | 2 ++ src/Controller/ModuleController.php | 17 +++++++++++++---- src/Controller/RoomController.php | 4 ++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.env b/.env index f9a2415..c85004d 100644 --- a/.env +++ b/.env @@ -41,6 +41,12 @@ APP_KEVACOIN_MINE_ADDRESS=EDIT_ME # Allowed room namespaces, separated with | (must be owned to accept posts) APP_KEVACOIN_ROOM_NAMESPACES=EDIT_ME +# Allowed room namespaces for read only (e.g. project news) separated with | +APP_KEVACOIN_ROOM_NAMESPACES_READONLY=EDIT_ME + +# Redirect from index page to default room +APP_KEVACOIN_ROOM_NAMESPACE_DEFAULT=EDIT_ME + # Allow remotes to create new rooms (namespaces) APP_ADD_ROOM_REMOTE_IP_REGEX=/.*/ diff --git a/config/services.yaml b/config/services.yaml index 07d216e..56617f0 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -13,6 +13,8 @@ parameters: app.kevacoin.username: '%env(APP_KEVACOIN_USERNAME)%' app.kevacoin.password: '%env(APP_KEVACOIN_PASSWORD)%' app.kevacoin.room.namespaces: '%env(APP_KEVACOIN_ROOM_NAMESPACES)%' + app.kevacoin.room.namespaces.readonly: '%env(APP_KEVACOIN_ROOM_NAMESPACES_READONLY)%' + app.kevacoin.room.namespace.default: '%env(APP_KEVACOIN_ROOM_NAMESPACE_DEFAULT)%' app.kevacoin.mine.address: '%env(APP_KEVACOIN_MINE_ADDRESS)%' app.kevacoin.mine.pool.url: '%env(APP_KEVACOIN_MINE_POOL_URL)%' app.kevacoin.mine.solo.url: '%env(APP_KEVACOIN_MINE_SOLO_URL)%' diff --git a/src/Controller/ModuleController.php b/src/Controller/ModuleController.php index caf570b..3369861 100644 --- a/src/Controller/ModuleController.php +++ b/src/Controller/ModuleController.php @@ -70,7 +70,7 @@ class ModuleController extends AbstractController $name = $value['displayName']; } - // Check namespace enabled as room in settings + // Check namespace enabled as room in .env if (in_array($value['namespaceId'], $rooms)) { $list[$value['namespaceId']] = $value['displayName']; @@ -95,6 +95,7 @@ class ModuleController extends AbstractController Request $request ): Response { + // Connect wallet $client = new \Kevachat\Kevacoin\Client( $this->getParameter('app.kevacoin.protocol'), $this->getParameter('app.kevacoin.host'), @@ -103,18 +104,26 @@ class ModuleController extends AbstractController $this->getParameter('app.kevacoin.password') ); + // Get room settings + $rooms = explode('|', $this->getParameter('app.kevacoin.room.namespaces')); + $readonly = explode('|', $this->getParameter('app.kevacoin.room.namespaces.readonly')); + // Get wallet namespaces (to enable post module there) - $namespaces = []; + $public = []; foreach ((array) $client->kevaListNamespaces() as $value) { - $namespaces[] = $value['namespaceId']; + // Check namespace enabled as room in .env + if (in_array($value['namespaceId'], $rooms) && !in_array($value['namespaceId'], $readonly)) + { + $public[] = $value['namespaceId']; + } } return $this->render( 'default/module/post.html.twig', [ - 'enabled' => in_array($request->get('namespace'), $namespaces), + 'enabled' => in_array($request->get('namespace'), $public), 'namespace' => $request->get('namespace'), 'message' => $request->get('message'), 'user' => $request->get('user'), diff --git a/src/Controller/RoomController.php b/src/Controller/RoomController.php index 3a56f52..746d8b4 100644 --- a/src/Controller/RoomController.php +++ b/src/Controller/RoomController.php @@ -23,7 +23,7 @@ class RoomController extends AbstractController return $this->redirectToRoute( 'room_namespace', [ - 'namespace' => explode('|', $this->getParameter('app.kevacoin.room.namespaces'))[0] + 'namespace' => $this->getParameter('app.kevacoin.room.namespace.default') ] ); } @@ -176,7 +176,7 @@ class RoomController extends AbstractController return $this->redirectToRoute( 'room_namespace', [ - 'namespace' => explode('|', $this->getParameter('app.kevacoin.room.namespaces'))[0] + 'namespace' => $request->get('namespace') ] ); }