getSecureRandom()->getMediumStrengthGenerator()->generate(32, \OCP\Security\ISecureRandom::CHAR_LOWER . \OCP\Security\ISecureRandom::CHAR_UPPER . \OCP\Security\ISecureRandom::CHAR_DIGITS); $wopi = new \OCA\Richdocuments\Db\Wopi([ $fileId, $owner, $editor, $version, $updatable, $serverHost, $token, time() + self::TOKEN_LIFETIME_SECONDS ]); if (!$wopi->insert()) { throw new \Exception('Failed to add wopi token into database'); } return $token; } /* * Given a token, validates it and * constructs and validates the path. * Returns the path, if valid, else false. */ public function getPathForToken($fileId, $token){ $wopi = new Wopi(); $row = $wopi->loadBy('token', $token)->getData(); \OC::$server->getLogger()->debug('Loaded WOPI Token record: {row}.', [ 'row' => $row ]); if (count($row) === 0) { // Invalid token. http_response_code(401); return false; } //TODO: validate. if ($row['expiry'] > time()){ // Expired token! //http_response_code(404); //$wopi->deleteBy('id', $row['id']); //return false; } return array( 'owner' => $row['owner_uid'], 'editor' => $row['editor_uid'], 'canwrite' => $row['canwrite'], 'server_host' => $row['server_host'] ); } }