aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2025-03-08 20:54:48 +0100
committerFerdinand Thiessen <opensource@fthiessen.de>2025-03-21 15:14:31 +0100
commit890c1399d3bdb64e510c495aa5b6bed7d01c10f7 (patch)
tree5df62b6fc9074b8fb70e9171493773bce5a33321
parent3d38a4bddeb8d002269b965ac2f4cc2bc06492f5 (diff)
downloadnextcloud-server-890c1399d3bdb64e510c495aa5b6bed7d01c10f7.tar.gz
nextcloud-server-890c1399d3bdb64e510c495aa5b6bed7d01c10f7.zip
fix(federatedfilesharing): warn when enabling lookup server data upload
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
-rw-r--r--apps/federatedfilesharing/src/components/AdminSettings.vue78
1 files changed, 73 insertions, 5 deletions
diff --git a/apps/federatedfilesharing/src/components/AdminSettings.vue b/apps/federatedfilesharing/src/components/AdminSettings.vue
index 9f565aea3f6..22031aa27a3 100644
--- a/apps/federatedfilesharing/src/components/AdminSettings.vue
+++ b/apps/federatedfilesharing/src/components/AdminSettings.vue
@@ -36,16 +36,16 @@
<legend>{{ t('federatedfilesharing', 'The lookup server is only available for global scale.') }}</legend>
<NcCheckboxRadioSwitch type="switch"
- :checked.sync="lookupServerEnabled"
+ :checked="lookupServerEnabled"
disabled
- @update:checked="update('lookupServerEnabled', lookupServerEnabled)">
+ @update:checked="showLookupServerConfirmation">
{{ t('federatedfilesharing', 'Search global and public address book for people') }}
</NcCheckboxRadioSwitch>
<NcCheckboxRadioSwitch type="switch"
- :checked.sync="lookupServerUploadEnabled"
+ :checked="lookupServerUploadEnabled"
disabled
- @update:checked="update('lookupServerUploadEnabled', lookupServerUploadEnabled)">
+ @update:checked="showLookupServerUploadConfirmation">
{{ t('federatedfilesharing', 'Allow people to publish their data to a global and public address book') }}
</NcCheckboxRadioSwitch>
</fieldset>
@@ -66,7 +66,7 @@
<script>
import { loadState } from '@nextcloud/initial-state'
-import { showError } from '@nextcloud/dialogs'
+import { DialogBuilder, DialogSeverity, showError } from '@nextcloud/dialogs'
import { generateOcsUrl } from '@nextcloud/router'
import { confirmPassword } from '@nextcloud/password-confirmation'
import axios from '@nextcloud/axios'
@@ -98,6 +98,74 @@ export default {
}
},
methods: {
+ setLookupServerUploadEnabled(state) {
+ if (state === this.lookupServerUploadEnabled) {
+ return
+ }
+ this.lookupServerUploadEnabled = state
+ this.update('lookupServerUploadEnabled', state)
+ },
+
+ async showLookupServerUploadConfirmation(state) {
+ // No confirmation needed for disabling
+ if (state === false) {
+ return this.setLookupServerUploadEnabled(false)
+ }
+
+ const dialog = new DialogBuilder(t('federatedfilesharing', 'Confirm data upload to lookup server'))
+ await dialog
+ .setSeverity(DialogSeverity.Warning)
+ .setText(
+ t('federatedfilesharing', 'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'),
+ )
+ .addButton({
+ callback: () => this.setLookupServerUploadEnabled(false),
+ label: t('federatedfilesharing', 'Disable upload'),
+ })
+ .addButton({
+ callback: () => this.setLookupServerUploadEnabled(true),
+ label: t('federatedfilesharing', 'Enable data upload'),
+ type: 'error',
+ })
+ .build()
+ .show()
+ },
+
+ setLookupServerEnabled(state) {
+ if (state === this.lookupServerEnabled) {
+ return
+ }
+ this.lookupServerEnabled = state
+ this.update('lookupServerEnabled', state)
+ },
+
+ async showLookupServerConfirmation(state) {
+ // No confirmation needed for disabling
+ if (state === false) {
+ return this.setLookupServerEnabled(false)
+ }
+
+ const dialog = new DialogBuilder(t('federatedfilesharing', 'Confirm querying lookup server'))
+ await dialog
+ .setSeverity(DialogSeverity.Warning)
+ .setText(
+ t('federatedfilesharing', 'When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.')
+ + t('federatedfilesharing', 'This is used to retrieve the federated cloud ID to make federated sharing easier.')
+ + t('federatedfilesharing', 'Moreover email addresses of users might be sent to that system in order to verify it.'),
+ )
+ .addButton({
+ callback: () => this.setLookupServerEnabled(false),
+ label: t('federatedfilesharing', 'Disable querying'),
+ })
+ .addButton({
+ callback: () => this.setLookupServerEnabled(true),
+ label: t('federatedfilesharing', 'Enable querying'),
+ type: 'error',
+ })
+ .build()
+ .show()
+ },
+
async update(key, value) {
await confirmPassword()