summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing')
-rw-r--r--apps/files_sharing/l10n/ja.js1
-rw-r--r--apps/files_sharing/l10n/ja.json1
-rw-r--r--apps/files_sharing/l10n/sl.js2
-rw-r--r--apps/files_sharing/l10n/sl.json2
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php2
-rw-r--r--apps/files_sharing/src/components/SharingEntryLink.vue20
-rw-r--r--apps/files_sharing/src/mixins/ShareRequests.js3
-rw-r--r--apps/files_sharing/src/mixins/SharesMixin.js5
-rw-r--r--apps/files_sharing/src/models/Share.js21
9 files changed, 54 insertions, 3 deletions
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index 55ef84609bd..501b6748aef 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -157,6 +157,7 @@ OC.L10N.register(
"Read" : "読み込み",
"Upload" : "アップロード",
"Edit" : "編集",
+ "Bundled permissions" : "バンドルされているパーミッション",
"Allow creating" : "作成許可",
"Allow deleting" : "削除許可",
"Allow resharing" : "再共有を許可する",
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index b728daed117..318b9c3622f 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -155,6 +155,7 @@
"Read" : "読み込み",
"Upload" : "アップロード",
"Edit" : "編集",
+ "Bundled permissions" : "バンドルされているパーミッション",
"Allow creating" : "作成許可",
"Allow deleting" : "削除許可",
"Allow resharing" : "再共有を許可する",
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index 41123c0d8c6..be5f860e53c 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -101,6 +101,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Napačen ID mesta uporabe; mesto ne obstaja!",
"Could not delete share" : "Mesta souporabe ni mogoče izbrisati",
"Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape",
+ "Wrong path, file/folder does not exist" : "Napačna pot; datoteka ali mapa ne obstaja",
"Could not create share" : "Mesta souporabe ni mogoče ustvariti",
"Invalid permissions" : "Neustrezna dovoljenja",
"Please specify a valid user" : "Navesti je treba veljavnega uporabnika.",
@@ -138,6 +139,7 @@ OC.L10N.register(
"This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Program omogoča uporabnikom souporabo in izmenjavo datotek v oblaku Nextcloud. Izbrana možnost omogoča skrbnikom izbor skupin, ki imajo dovoljenja za omogočanje souporabe znotraj oblaka. Če je omogočena tudi možnost souporabe prek povezave, je na voljo tudi zunanja povezava za zunanje uporabnike. Skrbniki lahko omogočijo tudi gesla, pretek povezave in objavljanje prek mobilnih naprav.\nOnemogočanje storitve odstrani vse datoteke in mape v souporabi, prav tako programe za usklajevanje in mobilne naprave. Več podrobnosti je na voljo v dokumentaciji Nextcloud.",
"Sharing" : "Souporaba",
"Accept user and group shares by default" : "Privzeto sprejmi uporabniško in skupinsko souporabo predmetov",
+ "Error while toggling options" : "Prišlo je do napake med preklapljanjem možnosti",
"Reset" : "Ponastavi",
"Invalid path selected" : "Izbrana je neveljavna pot",
"Unknown error" : "Neznana napaka",
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index fdad4b322bb..f47903e9f6d 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -99,6 +99,7 @@
"Wrong share ID, share doesn't exist" : "Napačen ID mesta uporabe; mesto ne obstaja!",
"Could not delete share" : "Mesta souporabe ni mogoče izbrisati",
"Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape",
+ "Wrong path, file/folder does not exist" : "Napačna pot; datoteka ali mapa ne obstaja",
"Could not create share" : "Mesta souporabe ni mogoče ustvariti",
"Invalid permissions" : "Neustrezna dovoljenja",
"Please specify a valid user" : "Navesti je treba veljavnega uporabnika.",
@@ -136,6 +137,7 @@
"This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Program omogoča uporabnikom souporabo in izmenjavo datotek v oblaku Nextcloud. Izbrana možnost omogoča skrbnikom izbor skupin, ki imajo dovoljenja za omogočanje souporabe znotraj oblaka. Če je omogočena tudi možnost souporabe prek povezave, je na voljo tudi zunanja povezava za zunanje uporabnike. Skrbniki lahko omogočijo tudi gesla, pretek povezave in objavljanje prek mobilnih naprav.\nOnemogočanje storitve odstrani vse datoteke in mape v souporabi, prav tako programe za usklajevanje in mobilne naprave. Več podrobnosti je na voljo v dokumentaciji Nextcloud.",
"Sharing" : "Souporaba",
"Accept user and group shares by default" : "Privzeto sprejmi uporabniško in skupinsko souporabo predmetov",
+ "Error while toggling options" : "Prišlo je do napake med preklapljanjem možnosti",
"Reset" : "Ponastavi",
"Invalid path selected" : "Izbrana je neveljavna pot",
"Unknown error" : "Neznana napaka",
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index c0441485132..f531954d5da 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -279,7 +279,7 @@ class ShareAPIController extends OCSController {
} elseif ($share->getShareType() === IShare::TYPE_EMAIL) {
$result['share_with'] = $share->getSharedWith();
$result['password'] = $share->getPassword();
- $result['password_expiration_time'] = $share->getPasswordExpirationTime();
+ $result['password_expiration_time'] = $share->getPasswordExpirationTime() !== null ? $share->getPasswordExpirationTime()->format(\DateTime::ATOM) : null;
$result['send_password_by_talk'] = $share->getSendPasswordByTalk();
$result['share_with_displayname'] = $this->getDisplayNameFromAddressBook($share->getSharedWith(), 'EMAIL');
$result['token'] = $share->getToken();
diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue
index ee7e8d4b930..638cdf485b0 100644
--- a/apps/files_sharing/src/components/SharingEntryLink.vue
+++ b/apps/files_sharing/src/components/SharingEntryLink.vue
@@ -192,6 +192,12 @@
@submit="onPasswordSubmit">
{{ t('files_sharing', 'Enter a password') }}
</ActionInput>
+ <ActionText v-if="isEmailShareType && passwordExpirationTime" icon="icon-info">
+ {{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}
+ </ActionText>
+ <ActionText v-else-if="isEmailShareType && passwordExpirationTime !== null" icon="icon-error">
+ {{ t('files_sharing', 'Password expired') }}
+ </ActionText>
<!-- password protected by Talk -->
<ActionCheckbox v-if="isPasswordProtectedByTalkAvailable"
@@ -461,6 +467,20 @@ export default {
},
},
+ passwordExpirationTime() {
+ if (this.share.passwordExpirationTime === null) {
+ return null
+ }
+
+ const expirationTime = moment(this.share.passwordExpirationTime)
+
+ if (expirationTime.diff(moment()) < 0) {
+ return false
+ }
+
+ return expirationTime.fromNow()
+ },
+
/**
* Is Talk enabled?
*
diff --git a/apps/files_sharing/src/mixins/ShareRequests.js b/apps/files_sharing/src/mixins/ShareRequests.js
index bc6e3bf1644..e2668c15d65 100644
--- a/apps/files_sharing/src/mixins/ShareRequests.js
+++ b/apps/files_sharing/src/mixins/ShareRequests.js
@@ -103,8 +103,9 @@ export default {
const request = await axios.put(shareUrl + `/${id}`, properties)
if (!request?.data?.ocs) {
throw request
+ } else {
+ return request.data.ocs.data
}
- return true
} catch (error) {
console.error('Error while updating share', error)
if (error.response.status !== 400) {
diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js
index 950b0355175..daeacfa4b8b 100644
--- a/apps/files_sharing/src/mixins/SharesMixin.js
+++ b/apps/files_sharing/src/mixins/SharesMixin.js
@@ -235,11 +235,14 @@ export default {
this.saving = true
this.errors = {}
try {
- await this.updateShare(this.share.id, properties)
+ const updatedShare = await this.updateShare(this.share.id, properties)
if (propertyNames.indexOf('password') >= 0) {
// reset password state after sync
this.$delete(this.share, 'newPassword')
+
+ // updates password expiration time after sync
+ this.share.passwordExpirationTime = updatedShare.password_expiration_time
}
// clear any previous errors
diff --git a/apps/files_sharing/src/models/Share.js b/apps/files_sharing/src/models/Share.js
index 87c2fec86f2..5644ce0c2b3 100644
--- a/apps/files_sharing/src/models/Share.js
+++ b/apps/files_sharing/src/models/Share.js
@@ -359,6 +359,27 @@ export default class Share {
}
/**
+ * Password expiration time
+ *
+ * @return {string}
+ * @readonly
+ * @memberof Share
+ */
+ get passwordExpirationTime() {
+ return this._share.password_expiration_time
+ }
+
+ /**
+ * Password expiration time
+ *
+ * @param {string} password exipration time
+ * @memberof Share
+ */
+ set passwordExpirationTime(passwordExpirationTime) {
+ this._share.password_expiration_time = passwordExpirationTime
+ }
+
+ /**
* Password protection by Talk of the share
*
* @return {boolean}