diff --git a/appinfo/app.php b/appinfo/app.php index a5104c1..739a12f 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -1,15 +1,3 @@ getConfig()->getAppValue('bbb', 'api.url'); -$parsedApiUrl = @parse_url($apiUrl); - -if ($parsedApiUrl !== false) { - $manager = \OC::$server->getContentSecurityPolicyManager(); - $policy = new \OCP\AppFramework\Http\EmptyContentSecurityPolicy(); - - $policy->addAllowedFormActionDomain(($parsedApiUrl['scheme'] ?: 'https') . '://' . $parsedApiUrl['host']); - - $manager->addDefaultPolicy($policy); -} diff --git a/lib/Controller/JoinController.php b/lib/Controller/JoinController.php index 23708fb..2738e77 100644 --- a/lib/Controller/JoinController.php +++ b/lib/Controller/JoinController.php @@ -117,26 +117,19 @@ class JoinController extends Controller { 'wrongPassword' => $password !== $room->password && $password !== '', ], 'guest'); - $this->addFormActionDomain($response); - return $response; } $creationDate = $this->api->createMeeting($room, $presentation); $joinUrl = $this->api->createJoinUrl($room, $creationDate, $displayname, $userId); - return new RedirectResponse($joinUrl); - } + \OCP\Util::addHeader('meta', ['http-equiv' => 'refresh', 'content' => '3;url='.$joinUrl]); - private function addFormActionDomain($response) { - $apiUrl = $this->config->getAppValue($this->appName, 'api.url'); - $parsedApiUrl = parse_url($apiUrl); - - if ($parsedApiUrl === false) { - throw new \Exception('No valid api url provided'); - } - - $response->getContentSecurityPolicy()->addAllowedFormActionDomain(($parsedApiUrl['scheme'] ?: 'https') . '://' . $parsedApiUrl['host']); + return new TemplateResponse($this->appName, 'forward', [ + 'room' => $room->name, + 'url' => $joinUrl, + ], 'guest'); + ; } private function getRoom(): ?Room { diff --git a/templates/forward.php b/templates/forward.php new file mode 100644 index 0000000..7bb3dfb --- /dev/null +++ b/templates/forward.php @@ -0,0 +1,12 @@ + + +
+

+

t('You will be forwarded to the room in the next few seconds.')); ?>
+
+ t('Let\'s go!')); ?>

+
diff --git a/tests/Unit/Controller/JoinControllerTest.php b/tests/Unit/Controller/JoinControllerTest.php index 6199a56..e630867 100644 --- a/tests/Unit/Controller/JoinControllerTest.php +++ b/tests/Unit/Controller/JoinControllerTest.php @@ -104,8 +104,9 @@ class JoinControllerTest extends TestCase { $result = $this->controller->index(null); - $this->assertInstanceOf(RedirectResponse::class, $result); - $this->assertEquals($url, $result->getRedirectURL()); + $this->assertInstanceOf(TemplateResponse::class, $result); + $this->assertEquals('forward', $result->getTemplateName()); + $this->assertEquals($url, $result->getParams()['url']); } public function testUserNeedsToAuthenticateForInternal() { @@ -189,7 +190,9 @@ class JoinControllerTest extends TestCase { $response = $this->controller->index('Foo Bar'); - $this->assertInstanceOf(RedirectResponse::class, $response); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('forward', $response->getTemplateName()); + $this->assertEquals($url, $response->getParams()['url']); } private function invalidDisplayname($displayname) { @@ -229,7 +232,8 @@ class JoinControllerTest extends TestCase { $response = $this->controller->index('Foo Bar', '', '', 'asdf'); - $this->assertInstanceOf(RedirectResponse::class, $response); - $this->assertEquals($url, $response->getRedirectURL()); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('forward', $response->getTemplateName()); + $this->assertEquals($url, $response->getParams()['url']); } }