Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/richdocuments.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2021-08-13 10:45:03 +0300
committerJulius Härtl <jus@bitgrid.net>2021-08-13 14:55:41 +0300
commit95985564d0113c380ae16e89bafb1c85ba87bf15 (patch)
treee916bab7391dc855cc8b9aa2fbcf5935a5c32d48 /lib/Controller
parent95a559512f53314ad8cc9d91683936e64ec8f921 (diff)
Add API to set the guest name for an existing WOPI token
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/Controller')
-rw-r--r--lib/Controller/DocumentController.php8
-rw-r--r--lib/Controller/OCSController.php47
-rw-r--r--lib/Controller/WopiController.php2
3 files changed, 41 insertions, 16 deletions
diff --git a/lib/Controller/DocumentController.php b/lib/Controller/DocumentController.php
index 664d17a3..bca32ffa 100644
--- a/lib/Controller/DocumentController.php
+++ b/lib/Controller/DocumentController.php
@@ -360,11 +360,9 @@ class DocumentController extends Controller {
'userId' => $this->uid,
];
- if ($this->uid !== null || ($share->getPermissions() & \OCP\Constants::PERMISSION_UPDATE) === 0 || $this->helper->getGuestName() !== null) {
- list($urlSrc, $token) = $this->tokenManager->getToken($item->getId(), $shareToken, $this->uid);
- $params['token'] = $token;
- $params['urlsrc'] = $urlSrc;
- }
+ list($urlSrc, $token) = $this->tokenManager->getToken($item->getId(), $shareToken, $this->uid);
+ $params['token'] = $token;
+ $params['urlsrc'] = $urlSrc;
$response = new TemplateResponse('richdocuments', 'documents', $params, 'base');
$this->setupPolicy($response);
diff --git a/lib/Controller/OCSController.php b/lib/Controller/OCSController.php
index d1eb7181..52bcaa88 100644
--- a/lib/Controller/OCSController.php
+++ b/lib/Controller/OCSController.php
@@ -24,9 +24,12 @@
namespace OCA\Richdocuments\Controller;
use OCA\Richdocuments\Db\DirectMapper;
+use OCA\Richdocuments\Db\Wopi;
+use OCA\Richdocuments\Helper;
use OCA\Richdocuments\Service\FederationService;
use OCA\Richdocuments\TemplateManager;
use OCA\Richdocuments\TokenManager;
+use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSBadRequestException;
@@ -150,16 +153,22 @@ class OCSController extends \OCP\AppFramework\OCSController {
$wopi = $this->tokenManager->newInitiatorToken($host, null, $shareToken, true, $this->userId);
$client = \OC::$server->getHTTPClientService()->newClient();
- $response = $client->post(rtrim($host, '/') . '/ocs/v2.php/apps/richdocuments/api/v1/direct/share/initiator?format=json', [
- 'body' => [
- 'initiatorServer' => \OC::$server->getURLGenerator()->getAbsoluteURL(''),
- 'initiatorToken' => $wopi->getToken(),
- 'shareToken' => $shareToken,
- 'path' => $path,
- 'password' => $password
- ],
- 'timeout' => 30
- ]);
+ try {
+ $response = $client->post(rtrim($host, '/') . '/ocs/v2.php/apps/richdocuments/api/v1/direct/share/initiator?format=json', [
+ 'body' => [
+ 'initiatorServer' => \OC::$server->getURLGenerator()->getAbsoluteURL(''),
+ 'initiatorToken' => $wopi->getToken(),
+ 'shareToken' => $shareToken,
+ 'path' => $path,
+ 'password' => $password
+ ],
+ 'timeout' => 30
+ ]);
+ } catch (\Exception $e) {
+ $response = new DataResponse([], HTTP::STATUS_FORBIDDEN);
+ $response->throttle();
+ return $response;
+ }
$url = \json_decode($response->getBody(), true)['ocs']['data']['url'];
return new DataResponse([
@@ -246,6 +255,24 @@ class OCSController extends \OCP\AppFramework\OCSController {
}
/**
+ * Generate a direct editing link for a file in a public share to open with the current user
+ *
+ * @NoAdminRequired
+ * @BruteForceProtection(action=richdocumentsCreatePublic)
+ * @PublicPage
+ */
+ public function updateGuestName(string $access_token, string $guestName): DataResponse {
+ try {
+ $this->tokenManager->updateGuestName($access_token, $guestName);
+ return new DataResponse([], Http::STATUS_OK);
+ } catch (DoesNotExistException $e) {
+ $response = new DataResponse([], Http::STATUS_FORBIDDEN);
+ $response->throttle();
+ return $response;
+ }
+ }
+
+ /**
* @NoAdminRequired
*
* @param string $type The template type
diff --git a/lib/Controller/WopiController.php b/lib/Controller/WopiController.php
index 20cec6d9..d01db98f 100644
--- a/lib/Controller/WopiController.php
+++ b/lib/Controller/WopiController.php
@@ -271,7 +271,7 @@ class WopiController extends Controller {
return $response;
}
- $response['UserFriendlyName'] = $initiator->getGuestDisplayname() . ' (Guest)';
+ $response['UserFriendlyName'] = $this->tokenManager->prepareGuestName($initiator->getGuestDisplayname());
if ($initiator->hasTemplateId()) {
$templateUrl = $wopi->getRemoteServer() . '/index.php/apps/richdocuments/wopi/template/' . $initiator->getTemplateId() . '?access_token=' . $initiator->getToken();
$response['TemplateSource'] = $templateUrl;