diff options
author | Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com> | 2024-01-09 00:46:26 +0100 |
---|---|---|
committer | Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com> | 2024-01-09 17:28:11 +0100 |
commit | cc3a2c351a2db4c30a2f0dc1bde73ba024e88602 (patch) | |
tree | 74e8512c4e6eec33b812296dfa90899037daad33 /apps/files_sharing/lib/Controller/ShareAPIController.php | |
parent | d72db91785174ad19b0057264506f24cfc03494c (diff) | |
download | nextcloud-server-cc3a2c351a2db4c30a2f0dc1bde73ba024e88602.tar.gz nextcloud-server-cc3a2c351a2db4c30a2f0dc1bde73ba024e88602.zip |
fix(share): use user timezone to parse share expiration date
If an user in UTC+1 try to create a share at 00:00, it's day D for him, but
D-1 for the server (UTC).
This fix aims to apply the correct offset
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
Diffstat (limited to 'apps/files_sharing/lib/Controller/ShareAPIController.php')
-rw-r--r-- | apps/files_sharing/lib/Controller/ShareAPIController.php | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 98423e7dd1f..aa239ae8bb6 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -70,6 +70,7 @@ use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\Files\NotFoundException; use OCP\IConfig; +use OCP\IDateTimeZone; use OCP\IGroupManager; use OCP\IL10N; use OCP\IPreview; @@ -124,20 +125,6 @@ class ShareAPIController extends OCSController { /** * Share20OCS constructor. - * - * @param string $appName - * @param IRequest $request - * @param IManager $shareManager - * @param IGroupManager $groupManager - * @param IUserManager $userManager - * @param IRootFolder $rootFolder - * @param IURLGenerator $urlGenerator - * @param string $userId - * @param IL10N $l10n - * @param IConfig $config - * @param IAppManager $appManager - * @param IServerContainer $serverContainer - * @param IUserStatusManager $userStatusManager */ public function __construct( string $appName, @@ -153,7 +140,8 @@ class ShareAPIController extends OCSController { IAppManager $appManager, IServerContainer $serverContainer, IUserStatusManager $userStatusManager, - IPreview $previewManager + IPreview $previewManager, + private IDateTimeZone $dateTimeZone, ) { parent::__construct($appName, $request); @@ -597,7 +585,7 @@ class ShareAPIController extends OCSController { * @param string $publicUpload If public uploading is allowed * @param string $password Password for the share * @param string|null $sendPasswordByTalk Send the password for the share over Talk - * @param string $expireDate Expiry date of the share + * @param string $expireDate Expiry date of the share using user timezone at 00:00. It means date in UTC timezone will be used. * @param string $note Note for the share * @param string $label Label for the share (only used in link and email) * @param string|null $attributes Additional attributes for the share @@ -1706,11 +1694,12 @@ class ShareAPIController extends OCSController { */ private function parseDate(string $expireDate): \DateTime { try { - $date = new \DateTime(trim($expireDate, "\"")); + $date = new \DateTime(trim($expireDate, "\""), $this->dateTimeZone->getTimeZone()); } catch (\Exception $e) { throw new \Exception('Invalid date. Format must be YYYY-MM-DD'); } + $date->setTimezone(new \DateTimeZone(date_default_timezone_get())); $date->setTime(0, 0, 0); return $date; |