Make auto accepting the default and provide setting to enforce the share acceptance process

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2020-01-16 18:42:58 +01:00 committed by Roeland Jago Douma
parent fa966ebaf1
commit eb4c42d3d1
No known key found for this signature in database
GPG Key ID: F941078878347C0C
4 changed files with 21 additions and 12 deletions

View File

@ -26,6 +26,7 @@ declare(strict_types=1);
namespace OCA\Files_Sharing\Listener; namespace OCA\Files_Sharing\Listener;
use OCA\Files_Sharing\AppInfo\Application;
use OCP\EventDispatcher\Event; use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener; use OCP\EventDispatcher\IEventListener;
use OCP\IConfig; use OCP\IConfig;
@ -74,7 +75,9 @@ class UserShareAcceptanceListener implements IEventListener {
} }
private function handleAutoAccept(IShare $share, string $userId) { private function handleAutoAccept(IShare $share, string $userId) {
if ($this->config->getUserValue($userId, 'files_sharing','default_accept','no') === 'yes') { $defaultAcceptSystemConfig = $this->config->getSystemValueBool('sharing.enable_share_accept', false) ? 'no' : 'yes';
$acceptDefault = $this->config->getUserValue($userId, Application::APP_ID, 'default_accept', $defaultAcceptSystemConfig) === 'yes';
if (!$this->config->getSystemValueBool('sharing.force_share_accept', false) && $acceptDefault) {
$this->shareManager->acceptShare($share, $userId); $this->shareManager->acceptShare($share, $userId);
} }
} }

View File

@ -48,8 +48,11 @@ class Personal implements ISettings {
} }
public function getForm(): TemplateResponse { public function getForm(): TemplateResponse {
$value = $this->config->getUserValue($this->userId, Application::APP_ID, 'default_accept', 'no') === 'yes'; $defaultAcceptSystemConfig = $this->config->getSystemValueBool('sharing.enable_share_accept', false) ? 'no' : 'yes';
$this->initialState->provideInitialState(Application::APP_ID, 'accept_default', $value); $acceptDefault = $this->config->getUserValue($this->userId, Application::APP_ID, 'default_accept', $defaultAcceptSystemConfig) === 'yes';
$enforceAccept = $this->config->getSystemValueBool('sharing.force_share_accept', false);
$this->initialState->provideInitialState(Application::APP_ID, 'accept_default', $acceptDefault);
$this->initialState->provideInitialState(Application::APP_ID, 'enforce_accept', $enforceAccept);
return new TemplateResponse('files_sharing', 'Settings/personal'); return new TemplateResponse('files_sharing', 'Settings/personal');
} }

View File

@ -20,7 +20,7 @@
--> -->
<template> <template>
<div id="files-sharing-personal-settings" class="section"> <div id="files-sharing-personal-settings" class="section" v-if="!enforceAcceptShares">
<h2>{{ t('files', 'Sharing') }}</h2> <h2>{{ t('files', 'Sharing') }}</h2>
<p> <p>
<input id="files-sharing-personal-settings-accept" <input id="files-sharing-personal-settings-accept"
@ -42,12 +42,10 @@ export default {
name: 'PersonalSettings', name: 'PersonalSettings',
data() { data() {
return { return {
accepting: true, accepting: loadState('files_sharing', 'accept_default'),
enforceAcceptShares: loadState('files_sharing', 'enforce_accept'),
} }
}, },
mounted() {
this.accepting = loadState('files_sharing', 'accept_default')
},
methods: { methods: {
toggleEnabled() { toggleEnabled() {
axios.put( axios.put(

View File

@ -1339,11 +1339,16 @@ $CONFIG = array(
'sharing.minSearchStringLength' => 0, 'sharing.minSearchStringLength' => 0,
/** /**
* Starting with Nextcloud 18 also internal shares have to be accepted. Setting * Set to true to enable that internal shares need to be accepted by the users by default.
* this setting to true forces all internal shares to be accepted directly. * Users can change this for their account in their personal sharing settings
* (resulting in pre 18 behavior).
*/ */
'sharing.interal_shares_accepted' => false, 'sharing.enable_share_accept' => false,
/**
* Set to true to enforce that internal shares need to be accepted
*/
'sharing.force_share_accept' => false,
/** /**
* All other configuration options * All other configuration options