diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-05-14 10:34:30 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-05-14 10:34:30 +0300 |
commit | fe6272f411f502b5734f74270f62fed17a0a8156 (patch) | |
tree | a518a1d6b1ffb0def71ea30d72502909dc858cf2 /lib/Controller/PublicSessionController.php | |
parent | fd1e342338fbf6007ccbcd4fc2a34cdf8c8b2140 (diff) |
Add public endpoints
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/Controller/PublicSessionController.php')
-rw-r--r-- | lib/Controller/PublicSessionController.php | 74 |
1 files changed, 64 insertions, 10 deletions
diff --git a/lib/Controller/PublicSessionController.php b/lib/Controller/PublicSessionController.php index 446b02fde..ee5b446fc 100644 --- a/lib/Controller/PublicSessionController.php +++ b/lib/Controller/PublicSessionController.php @@ -26,26 +26,80 @@ declare(strict_types=1); namespace OCA\Text\Controller; -use OCP\AppFramework\Controller; +use OCA\Text\Service\ApiService; +use OCP\AppFramework\Http\Response; +use OCP\AppFramework\PublicShareController; +use OCP\ISession; +use OCP\Share\Exceptions\ShareNotFound; +use OCP\Share\IManager as ShareManager; use OCP\AppFramework\Http\DataResponse; -use OCP\AppFramework\Http\FileDisplayResponse; -use OCP\Files\IRootFolder; -use OCP\ICacheFactory; use OCP\IRequest; -use OCP\ITempManager; -use OCP\Security\ISecureRandom; +use OCP\Share\IShare; -class PublicSessionController extends SessionController { +class PublicSessionController extends PublicShareController { + + /** @var ShareManager */ + private $shareManager; + + /** @var IShare */ + private $share; + + /** @var ApiService */ + private $apiService; + + public function __construct(string $appName, IRequest $request, ISession $session, ShareManager $shareManager, ApiService $apiService) { + parent::__construct($appName, $request, $session); + $this->shareManager = $shareManager; + $this->apiService = $apiService; + } + + protected function getPasswordHash(): string { + return $this->share->getPassword(); + } + + public function isValidToken(): bool { + try { + $this->share = $this->shareManager->getShareByToken($this->getToken()); + return true; + } catch (ShareNotFound $e) { + return false; + } + } + + protected function isPasswordProtected(): bool { + return $this->share->getPassword() !== null; + } /** - * TODO: maybe set guestUserId in middleware + * @NoAdminRequired + * @PublicPage */ + public function create(string $token, string $file = null): DataResponse { + return $this->apiService->create(null, $file, $token); + } + + /** + * @NoAdminRequired + * @PublicPage + */ + public function fetch(int $documentId, string $sessionId, string $sessionToken): Response { + return $this->apiService->fetch($documentId, $sessionId, $sessionToken); + } + + /** + * @NoAdminRequired + * @PublicPage + */ + public function push(int $documentId, int $sessionId, string $sessionToken, int $version, array $steps): DataResponse { + return $this->apiService->push($documentId, $sessionId, $sessionToken, $version, $steps); + } /** + * @NoAdminRequired * @PublicPage */ - public function push($transaction): DataResponse { - parent::push($transaction); + public function sync(string $token, int $documentId, int $sessionId, string $sessionToken, int $version = 0, string $autosaveContent = null, bool $force = false, bool $manualSave = false): DataResponse { + return $this->apiService->sync($documentId, $sessionId, $sessionToken, $version, $autosaveContent, $force, $manualSave, $token); } } |