Skip to content

Commit da9da58

Browse files
committed
feat(federatedfilesharing): Create permanent refresh token when creating a remote share
Signed-off-by: Enrique Pérez Arnaud <enrique@cazalla.net>
1 parent 176a607 commit da9da58

1 file changed

Lines changed: 13 additions & 1 deletion

File tree

apps/federatedfilesharing/lib/FederatedShareProvider.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
*/
88
namespace OCA\FederatedFileSharing;
99

10+
use OC\Authentication\Token\IToken;
11+
use OC\Authentication\Token\PublicKeyTokenProvider;
1012
use OC\Share20\Exception\InvalidShare;
1113
use OC\Share20\Share;
1214
use OCP\Constants;
@@ -22,6 +24,8 @@
2224
use OCP\IDBConnection;
2325
use OCP\IL10N;
2426
use OCP\IUserManager;
27+
use OCP\Security\ISecureRandom;
28+
use OCP\Server;
2529
use OCP\Share\Exceptions\GenericShareException;
2630
use OCP\Share\Exceptions\ShareNotFound;
2731
use OCP\Share\IShare;
@@ -170,7 +174,15 @@ public function create(IShare $share): IShare {
170174
* @throws \Exception
171175
*/
172176
protected function createFederatedShare(IShare $share): string {
173-
$token = $this->tokenHandler->generateToken();
177+
178+
$provider = Server::get(PublicKeyTokenProvider::class);
179+
$token = Server::get(ISecureRandom::class)->generate(32, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_DIGITS);
180+
$uid = $share->getSharedBy();
181+
$user = $this->userManager->get($uid);
182+
$name = $user->getDisplayName();
183+
$pass = $share->getPassword();
184+
185+
$dbToken = $provider->generateToken($token, $uid, $uid, $pass, $name, type: IToken::PERMANENT_TOKEN);
174186
$shareId = $this->addShareToDB(
175187
$share->getNodeId(),
176188
$share->getNodeType(),

0 commit comments

Comments
 (0)