3535use OCP \AppFramework \OCS \OCSForbiddenException ;
3636use OCP \AppFramework \OCS \OCSNotFoundException ;
3737use OCP \AppFramework \OCSController ;
38+ use OCP \Constants ;
3839use OCP \Files \Node ;
3940use OCP \Files \NotFoundException ;
41+ use OCP \IConfig ;
4042use OCP \IGroupManager ;
4143use OCP \IL10N ;
4244use OCP \IUserManager ;
@@ -75,6 +77,8 @@ class ShareAPIController extends OCSController {
7577 private $ l ;
7678 /** @var \OCP\Files\Node */
7779 private $ lockedNode ;
80+ /** @var IConfig */
81+ private $ config ;
7882
7983 /**
8084 * Share20OCS constructor.
@@ -88,6 +92,7 @@ class ShareAPIController extends OCSController {
8892 * @param IURLGenerator $urlGenerator
8993 * @param string $userId
9094 * @param IL10N $l10n
95+ * @param IConfig $config
9196 */
9297 public function __construct (
9398 $ appName ,
@@ -98,7 +103,8 @@ public function __construct(
98103 IRootFolder $ rootFolder ,
99104 IURLGenerator $ urlGenerator ,
100105 $ userId ,
101- IL10N $ l10n
106+ IL10N $ l10n ,
107+ IConfig $ config
102108 ) {
103109 parent ::__construct ($ appName , $ request );
104110
@@ -110,6 +116,7 @@ public function __construct(
110116 $ this ->urlGenerator = $ urlGenerator ;
111117 $ this ->currentUser = $ userId ;
112118 $ this ->l = $ l10n ;
119+ $ this ->config = $ config ;
113120 }
114121
115122 /**
@@ -318,7 +325,7 @@ public function deleteShare($id) {
318325 */
319326 public function createShare (
320327 $ path = null ,
321- $ permissions = \ OCP \Constants:: PERMISSION_ALL ,
328+ $ permissions = null ,
322329 $ shareType = -1 ,
323330 $ shareWith = null ,
324331 $ publicUpload = 'false ' ,
@@ -327,6 +334,10 @@ public function createShare(
327334 ) {
328335 $ share = $ this ->shareManager ->newShare ();
329336
337+ if ($ permissions === null ) {
338+ $ permissions = $ this ->config ->getAppValue ('core ' , 'shareapi_default_permissions ' , Constants::PERMISSION_ALL );
339+ }
340+
330341 // Verify path
331342 if ($ path === null ) {
332343 throw new OCSNotFoundException ($ this ->l ->t ('Please specify a file or folder path ' ));
@@ -347,17 +358,17 @@ public function createShare(
347358 throw new OCSNotFoundException ($ this ->l ->t ('Could not create share ' ));
348359 }
349360
350- if ($ permissions < 0 || $ permissions > \ OCP \ Constants::PERMISSION_ALL ) {
361+ if ($ permissions < 0 || $ permissions > Constants::PERMISSION_ALL ) {
351362 throw new OCSNotFoundException ($ this ->l ->t ('invalid permissions ' ));
352363 }
353364
354365 // Shares always require read permissions
355- $ permissions |= \ OCP \ Constants::PERMISSION_READ ;
366+ $ permissions |= Constants::PERMISSION_READ ;
356367
357368 if ($ path instanceof \OCP \Files \File) {
358369 // Single file shares should never have delete or create permissions
359- $ permissions &= ~\ OCP \ Constants::PERMISSION_DELETE ;
360- $ permissions &= ~\ OCP \ Constants::PERMISSION_CREATE ;
370+ $ permissions &= ~Constants::PERMISSION_DELETE ;
371+ $ permissions &= ~Constants::PERMISSION_CREATE ;
361372 }
362373
363374 /*
@@ -414,13 +425,13 @@ public function createShare(
414425 }
415426
416427 $ share ->setPermissions (
417- \ OCP \ Constants::PERMISSION_READ |
418- \ OCP \ Constants::PERMISSION_CREATE |
419- \ OCP \ Constants::PERMISSION_UPDATE |
420- \ OCP \ Constants::PERMISSION_DELETE
428+ Constants::PERMISSION_READ |
429+ Constants::PERMISSION_CREATE |
430+ Constants::PERMISSION_UPDATE |
431+ Constants::PERMISSION_DELETE
421432 );
422433 } else {
423- $ share ->setPermissions (\ OCP \ Constants::PERMISSION_READ );
434+ $ share ->setPermissions (Constants::PERMISSION_READ );
424435 }
425436
426437 // Set password
@@ -447,13 +458,9 @@ public function createShare(
447458 $ share ->setPermissions ($ permissions );
448459 } else if ($ shareType === \OCP \Share::SHARE_TYPE_EMAIL ) {
449460 if ($ share ->getNodeType () === 'file ' ) {
450- $ share ->setPermissions (\ OCP \ Constants::PERMISSION_READ );
461+ $ share ->setPermissions (Constants::PERMISSION_READ );
451462 } else {
452- $ share ->setPermissions (
453- \OCP \Constants::PERMISSION_READ |
454- \OCP \Constants::PERMISSION_CREATE |
455- \OCP \Constants::PERMISSION_UPDATE |
456- \OCP \Constants::PERMISSION_DELETE );
463+ $ share ->setPermissions ($ permissions );
457464 }
458465 $ share ->setSharedWith ($ shareWith );
459466 } else if ($ shareType === \OCP \Share::SHARE_TYPE_CIRCLE ) {
@@ -698,33 +705,33 @@ public function updateShare(
698705
699706 $ newPermissions = null ;
700707 if ($ publicUpload === 'true ' ) {
701- $ newPermissions = \ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_CREATE | \ OCP \ Constants::PERMISSION_UPDATE | \ OCP \ Constants::PERMISSION_DELETE ;
708+ $ newPermissions = Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE | Constants::PERMISSION_DELETE ;
702709 } else if ($ publicUpload === 'false ' ) {
703- $ newPermissions = \ OCP \ Constants::PERMISSION_READ ;
710+ $ newPermissions = Constants::PERMISSION_READ ;
704711 }
705712
706713 if ($ permissions !== null ) {
707714 $ newPermissions = (int )$ permissions ;
708- $ newPermissions = $ newPermissions & ~\ OCP \ Constants::PERMISSION_SHARE ;
715+ $ newPermissions = $ newPermissions & ~Constants::PERMISSION_SHARE ;
709716 }
710717
711718 if ($ newPermissions !== null &&
712719 !in_array ($ newPermissions , [
713- \ OCP \ Constants::PERMISSION_READ ,
714- \ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_CREATE | \ OCP \ Constants::PERMISSION_UPDATE , // legacy
715- \ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_CREATE | \ OCP \ Constants::PERMISSION_UPDATE | \ OCP \ Constants::PERMISSION_DELETE , // correct
716- \ OCP \ Constants::PERMISSION_CREATE , // hidden file list
717- \ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_UPDATE , // allow to edit single files
720+ Constants::PERMISSION_READ ,
721+ Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE , // legacy
722+ Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE | Constants::PERMISSION_DELETE , // correct
723+ Constants::PERMISSION_CREATE , // hidden file list
724+ Constants::PERMISSION_READ | Constants::PERMISSION_UPDATE , // allow to edit single files
718725 ])
719726 ) {
720727 throw new OCSBadRequestException ($ this ->l ->t ('Can \'t change permissions for public share links ' ));
721728 }
722729
723730 if (
724731 // legacy
725- $ newPermissions === (\ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_CREATE | \ OCP \ Constants::PERMISSION_UPDATE ) ||
732+ $ newPermissions === (Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE ) ||
726733 // correct
727- $ newPermissions === (\ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_CREATE | \ OCP \ Constants::PERMISSION_UPDATE | \ OCP \ Constants::PERMISSION_DELETE )
734+ $ newPermissions === (Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE | Constants::PERMISSION_DELETE )
728735 ) {
729736 if (!$ this ->shareManager ->shareApiLinkAllowPublicUpload ()) {
730737 throw new OCSForbiddenException ($ this ->l ->t ('Public upload disabled by the administrator ' ));
@@ -735,7 +742,7 @@ public function updateShare(
735742 }
736743
737744 // normalize to correct public upload permissions
738- $ newPermissions = \ OCP \ Constants::PERMISSION_READ | \ OCP \ Constants::PERMISSION_CREATE | \ OCP \ Constants::PERMISSION_UPDATE | \ OCP \ Constants::PERMISSION_DELETE ;
745+ $ newPermissions = Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE | Constants::PERMISSION_DELETE ;
739746 }
740747
741748 if ($ newPermissions !== null ) {
0 commit comments