2015-09-07 06:38:55 -04:00
< ? php
2024-05-28 10:42:42 -04:00
2015-09-07 06:38:55 -04:00
/**
2024-05-28 10:42:42 -04:00
* SPDX - FileCopyrightText : 2019 - 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX - FileCopyrightText : 2016 ownCloud , Inc .
* SPDX - License - Identifier : AGPL - 3.0 - only
2015-09-07 06:38:55 -04:00
*/
namespace OCA\Encryption\Command ;
use OCA\Encryption\Util ;
2025-10-01 09:00:20 -04:00
use OCP\AppFramework\Services\IAppConfig ;
2015-09-07 06:38:55 -04:00
use Symfony\Component\Console\Command\Command ;
use Symfony\Component\Console\Helper\QuestionHelper ;
use Symfony\Component\Console\Input\InputInterface ;
use Symfony\Component\Console\Output\OutputInterface ;
use Symfony\Component\Console\Question\ConfirmationQuestion ;
class EnableMasterKey extends Command {
2023-08-03 07:06:40 -04:00
public function __construct (
protected Util $util ,
2025-10-01 09:00:20 -04:00
protected IAppConfig $config ,
2023-08-03 07:06:40 -04:00
protected QuestionHelper $questionHelper ,
) {
2015-09-07 06:38:55 -04:00
parent :: __construct ();
}
2023-08-03 07:06:40 -04:00
protected function configure () : void {
2015-09-07 06:38:55 -04:00
$this
-> setName ( 'encryption:enable-master-key' )
-> setDescription ( 'Enable the master key. Only available for fresh installations with no existing encrypted data! There is also no way to disable it again.' );
}
2020-06-26 09:12:11 -04:00
protected function execute ( InputInterface $input , OutputInterface $output ) : int {
2015-09-07 06:38:55 -04:00
$isAlreadyEnabled = $this -> util -> isMasterKeyEnabled ();
2020-04-10 08:19:56 -04:00
if ( $isAlreadyEnabled ) {
2015-09-07 06:38:55 -04:00
$output -> writeln ( 'Master key already enabled' );
2023-08-03 07:20:33 -04:00
return self :: SUCCESS ;
}
$question = new ConfirmationQuestion (
'Warning: Only available for fresh installations with no existing encrypted data! '
2015-09-07 06:38:55 -04:00
. 'There is also no way to disable it again. Do you want to continue? (y/n) ' , false );
2023-08-03 07:20:33 -04:00
if ( $this -> questionHelper -> ask ( $input , $output , $question )) {
2025-10-01 09:00:20 -04:00
$this -> config -> setAppValueBool ( 'useMasterKey' , true );
2023-08-03 07:20:33 -04:00
$output -> writeln ( 'Master key successfully enabled.' );
return self :: SUCCESS ;
2015-09-07 06:38:55 -04:00
}
2023-08-03 07:20:33 -04:00
$output -> writeln ( 'aborted.' );
return self :: FAILURE ;
2015-09-07 06:38:55 -04:00
}
}