Skip to content

Commit

Permalink
Merge pull request #894 from nextcloud/stable10-implement_712
Browse files Browse the repository at this point in the history
[Stable10] Backport 796
  • Loading branch information
LukasReschke committed Aug 17, 2016
2 parents 737591f + 1f177aa commit a2942c3
Show file tree
Hide file tree
Showing 106 changed files with 5,650 additions and 1,354 deletions.
6 changes: 4 additions & 2 deletions apps/encryption/appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@
<admin>admin-encryption</admin>
</documentation>
<rememberlogin>false</rememberlogin>
<version>1.3.0</version>
<version>1.3.1</version>
<types>
<filesystem/>
</types>
<dependencies>
<lib>openssl</lib>
<owncloud min-version="9.1" max-version="9.1" />
</dependencies>

<settings>
<admin>OCA\Encryption\Settings\Admin</admin>
</settings>
</info>
1 change: 0 additions & 1 deletion apps/encryption/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,6 @@ function (IAppContainer $c) {

public function registerSettings() {
// Register settings scripts
App::registerAdmin('encryption', 'settings/settings-admin');
App::registerPersonal('encryption', 'settings/settings-personal');
}
}
127 changes: 127 additions & 0 deletions apps/encryption/lib/Settings/Admin.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<?php
/**
* @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

namespace OCA\Encryption\Settings;

use OC\Files\View;
use OCA\Encryption\Crypto\Crypt;
use OCA\Encryption\Session;
use OCA\Encryption\Util;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IL10N;
use OCP\ILogger;
use OCP\ISession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Settings\ISettings;
use OCP\IConfig;

class Admin implements ISettings {

/** @var IL10N */
private $l;

/** @var ILogger */
private $logger;

/** @var IUserSession */
private $userSession;

/** @var IConfig */
private $config;

/** @var IUserManager */
private $userManager;

/** @var ISession */
private $session;

public function __construct(
IL10N $l,
ILogger $logger,
IUserSession $userSession,
IConfig $config,
IUserManager $userManager,
ISession $session
) {
$this->l = $l;
$this->logger = $logger;
$this->userSession = $userSession;
$this->config = $config;
$this->userManager = $userManager;
$this->session = $session;
}

/**
* @return TemplateResponse
*/
public function getForm() {
$crypt = new Crypt(
$this->logger,
$this->userSession,
$this->config,
$this->l);

$util = new Util(
new View(),
$crypt,
$this->logger,
$this->userSession,
$this->config,
$this->userManager);

// Check if an adminRecovery account is enabled for recovering files after lost pwd
$recoveryAdminEnabled = $this->config->getAppValue('encryption', 'recoveryAdminEnabled', '0');
$session = new Session($this->session);

$encryptHomeStorage = $util->shouldEncryptHomeStorage();

$parameters = [
'recoveryEnabled' => $recoveryAdminEnabled,
'initStatus' => $session->getStatus(),
'encryptHomeStorage' => $encryptHomeStorage,
'masterKeyEnabled' => $util->isMasterKeyEnabled(),
];

return new TemplateResponse('encryption', 'settings-admin', $parameters, '');
}

/**
* @return string the section ID, e.g. 'sharing'
*/
public function getSection() {
return 'encryption';
}

/**
* @return int whether the form should be rather on the top or bottom of
* the admin section. The forms are arranged in ascending order of the
* priority values. It is required to return a value between 0 and 100.
*
* E.g.: 70
*/
public function getPriority() {
return 5;
}

}
53 changes: 0 additions & 53 deletions apps/encryption/settings/settings-admin.php

This file was deleted.

1 change: 1 addition & 0 deletions apps/encryption/templates/settings-admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
style('encryption', 'settings-admin');
?>
<form id="ocDefaultEncryptionModule" class="sub-section">
<h3><?php p($l->t("Default encryption module")); ?></h3>
<?php if(!$_["initStatus"]): ?>
<?php p($l->t("Encryption app is enabled but your keys are not initialized, please log-out and log-in again")); ?>
<?php else: ?>
Expand Down
100 changes: 100 additions & 0 deletions apps/encryption/tests/Settings/AdminTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

namespace OCA\Encryption\Tests\Settings;

use OCA\Encryption\Settings\Admin;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IConfig;
use OCP\ISession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\IL10N;
use OCP\ILogger;
use Test\TestCase;

class AdminTest extends TestCase {
/** @var Admin */
private $admin;
/** @var IL10N */
private $l;
/** @var ILogger */
private $logger;
/** @var IUserSession */
private $userSession;
/** @var IConfig */
private $config;
/** @var IUserManager */
private $userManager;
/** @var ISession */
private $session;

public function setUp() {
parent::setUp();

$this->l = $this->getMockBuilder('\OCP\IL10N')->getMock();
$this->logger = $this->getMockBuilder('\OCP\ILogger')->getMock();
$this->userSession = $this->getMockBuilder('\OCP\IUserSession')->getMock();
$this->config = $this->getMockBuilder('\OCP\IConfig')->getMock();
$this->userManager = $this->getMockBuilder('\OCP\IUserManager')->getMock();
$this->session = $this->getMockBuilder('\OCP\ISession')->getMock();

$this->admin = new Admin(
$this->l,
$this->logger,
$this->userSession,
$this->config,
$this->userManager,
$this->session
);
}

public function testGetForm() {
$this->config
->expects($this->at(0))
->method('getAppValue')
->with('encryption', 'recoveryAdminEnabled', '0')
->willReturn(1);
$this->config
->expects($this->at(1))
->method('getAppValue')
->with('encryption', 'encryptHomeStorage', '1')
->willReturn(1);
$params = [
'recoveryEnabled' => 1,
'initStatus' => '0',
'encryptHomeStorage' => false,
'masterKeyEnabled' => false
];
$expected = new TemplateResponse('encryption', 'settings-admin', $params, '');
$this->assertEquals($expected, $this->admin->getForm());
}

public function testGetSection() {
$this->assertSame('encryption', $this->admin->getSection());
}

public function testGetPriority() {
$this->assertSame(5, $this->admin->getPriority());
}
}
5 changes: 4 additions & 1 deletion apps/federatedfilesharing/appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
<description>Provide federated file sharing across servers</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle, Roeland Jago Douma</author>
<version>1.0.0</version>
<version>1.0.1</version>
<namespace>FederatedFileSharing</namespace>
<category>other</category>
<dependencies>
<owncloud min-version="9.1" max-version="9.1" />
</dependencies>
<settings>
<admin>OCA\FederatedFileSharing\Settings\Admin</admin>
</settings>
</info>
1 change: 0 additions & 1 deletion apps/federatedfilesharing/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ public function __construct() {
* register personal and admin settings page
*/
public function registerSettings() {
\OCP\App::registerAdmin('federatedfilesharing', 'settings-admin');
\OCP\App::registerPersonal('federatedfilesharing', 'settings-personal');
}

Expand Down
Loading

0 comments on commit a2942c3

Please sign in to comment.