Browse Source

feat(sharing): Allow updating share token

Signed-off-by: Christopher Ng <chrng8@gmail.com>
pull/49317/head
Christopher Ng 11 months ago
parent
commit
f92875cf6a
  1. 22
      apps/files_sharing/lib/Controller/ShareAPIController.php

22
apps/files_sharing/lib/Controller/ShareAPIController.php

@ -1164,6 +1164,7 @@ class ShareAPIController extends OCSController {
* Considering the share already exists, no mail will be send after the share is updated. * Considering the share already exists, no mail will be send after the share is updated.
* You will have to use the sendMail action to send the mail. * You will have to use the sendMail action to send the mail.
* @param string|null $shareWith New recipient for email shares * @param string|null $shareWith New recipient for email shares
* @param string|null $token New token
* @return DataResponse<Http::STATUS_OK, Files_SharingShare, array{}> * @return DataResponse<Http::STATUS_OK, Files_SharingShare, array{}>
* @throws OCSBadRequestException Share could not be updated because the requested changes are invalid * @throws OCSBadRequestException Share could not be updated because the requested changes are invalid
* @throws OCSForbiddenException Missing permissions to update the share * @throws OCSForbiddenException Missing permissions to update the share
@ -1184,6 +1185,7 @@ class ShareAPIController extends OCSController {
?string $hideDownload = null, ?string $hideDownload = null,
?string $attributes = null, ?string $attributes = null,
?string $sendMail = null, ?string $sendMail = null,
?string $token = null,
): DataResponse { ): DataResponse {
try { try {
$share = $this->getShareById($id); $share = $this->getShareById($id);
@ -1211,7 +1213,8 @@ class ShareAPIController extends OCSController {
$label === null && $label === null &&
$hideDownload === null && $hideDownload === null &&
$attributes === null && $attributes === null &&
$sendMail === null
$sendMail === null &&
$token === null
) { ) {
throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given')); throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
} }
@ -1324,6 +1327,13 @@ class ShareAPIController extends OCSController {
} elseif ($sendPasswordByTalk !== null) { } elseif ($sendPasswordByTalk !== null) {
$share->setSendPasswordByTalk(false); $share->setSendPasswordByTalk(false);
} }
if ($token !== null) {
if (!$this->validateToken($token)) {
throw new OCSBadRequestException($this->l->t('Tokens must contain at least 1 character and may only contain letters, numbers, or a hyphen'));
}
$share->setToken($token);
}
} }
// NOT A LINK SHARE // NOT A LINK SHARE
@ -1357,6 +1367,16 @@ class ShareAPIController extends OCSController {
return new DataResponse($this->formatShare($share)); return new DataResponse($this->formatShare($share));
} }
private function validateToken(string $token): bool {
if (mb_strlen($token) === 0) {
return false;
}
if (!preg_match('/^[a-z0-9-]+$/i', $token)) {
return false;
}
return true;
}
/** /**
* Get all shares that are still pending * Get all shares that are still pending
* *

Loading…
Cancel
Save