[Pkg-owncloud-commits] [owncloud] 18/165: display warning if password changed or if the keys are not initialized

David Prévot taffit at moszumanska.debian.org
Thu Apr 23 04:06:16 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit e93f262eac858bc149872966c85e8019a1970d0a
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date:   Thu Apr 16 13:47:27 2015 +0200

    display warning if password changed or if the keys are not initialized
---
 apps/encryption/appinfo/app.php                 |  2 +
 apps/encryption/appinfo/application.php         | 22 +++++-
 apps/encryption/appinfo/routes.php              |  7 +-
 apps/encryption/controller/statuscontroller.php | 89 +++++++++++++++++++++++++
 apps/encryption/js/encryption.js                | 33 +++++++--
 apps/encryption/lib/keymanager.php              | 12 +++-
 6 files changed, 155 insertions(+), 10 deletions(-)

diff --git a/apps/encryption/appinfo/app.php b/apps/encryption/appinfo/app.php
index 6bbf211..cbc50e6 100644
--- a/apps/encryption/appinfo/app.php
+++ b/apps/encryption/appinfo/app.php
@@ -23,6 +23,8 @@
 
 namespace OCA\Encryption\AppInfo;
 
+\OCP\Util::addscript('encryption', 'encryption');
+
 $app = new Application();
 $app->registerEncryptionModule();
 $app->registerHooks();
diff --git a/apps/encryption/appinfo/application.php b/apps/encryption/appinfo/application.php
index 34845ec..267f14e 100644
--- a/apps/encryption/appinfo/application.php
+++ b/apps/encryption/appinfo/application.php
@@ -31,6 +31,7 @@ use OCA\Encryption\HookManager;
 use OCA\Encryption\Hooks\UserHooks;
 use OCA\Encryption\KeyManager;
 use OCA\Encryption\Recovery;
+use OCA\Encryption\Session;
 use OCA\Encryption\Users\Setup;
 use OCA\Encryption\Util;
 use OCP\App;
@@ -73,7 +74,7 @@ class Application extends \OCP\AppFramework\App {
 					$container->query('UserSetup'),
 					$server->getUserSession(),
 					$container->query('Util'),
-					new \OCA\Encryption\Session($server->getSession()),
+					$container->query('Session'),
 					$container->query('Crypt'),
 					$container->query('Recovery'))
 			]);
@@ -109,6 +110,13 @@ class Application extends \OCP\AppFramework\App {
 					$server->getConfig());
 			});
 
+		$container->registerService('Session',
+			function (IAppContainer $c) {
+				$server = $c->getServer();
+				return new Session($server->getSession());
+			}
+		);
+
 		$container->registerService('KeyManager',
 			function (IAppContainer $c) {
 				$server = $c->getServer();
@@ -138,7 +146,7 @@ class Application extends \OCP\AppFramework\App {
 					new \OC\Files\View());
 			});
 
-			$container->registerService('RecoveryController', function (IAppContainer $c) {
+		$container->registerService('RecoveryController', function (IAppContainer $c) {
 			$server = $c->getServer();
 			return new \OCA\Encryption\Controller\RecoveryController(
 				$c->getAppName(),
@@ -148,6 +156,16 @@ class Application extends \OCP\AppFramework\App {
 				$c->query('Recovery'));
 		});
 
+		$container->registerService('StatusController', function (IAppContainer $c) {
+			$server = $c->getServer();
+			return new \OCA\Encryption\Controller\StatusController(
+				$c->getAppName(),
+				$server->getRequest(),
+				$server->getL10N($c->getAppName()),
+				$c->query('Session')
+			);
+		});
+
 		$container->registerService('UserSetup',
 			function (IAppContainer $c) {
 				$server = $c->getServer();
diff --git a/apps/encryption/appinfo/routes.php b/apps/encryption/appinfo/routes.php
index 0dab4a0..4194308 100644
--- a/apps/encryption/appinfo/routes.php
+++ b/apps/encryption/appinfo/routes.php
@@ -35,10 +35,15 @@ namespace OCA\Encryption\AppInfo;
 		'url' => '/ajax/changeRecoveryPassword',
 		'verb' => 'POST'
 	],
-		[
+	[
 		'name' => 'Recovery#userSetRecovery',
 		'url' => '/ajax/userSetRecovery',
 		'verb' => 'POST'
+	],
+	[
+		'name' => 'Status#getStatus',
+		'url' => '/ajax/getStatus',
+		'verb' => 'GET'
 	]
 
 
diff --git a/apps/encryption/controller/statuscontroller.php b/apps/encryption/controller/statuscontroller.php
new file mode 100644
index 0000000..fc06d7f
--- /dev/null
+++ b/apps/encryption/controller/statuscontroller.php
@@ -0,0 +1,89 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle at owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+
+namespace OCA\Encryption\Controller;
+
+
+use OCA\Encryption\Session;
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\IL10N;
+use OCP\IRequest;
+
+class StatusController extends Controller {
+
+	/** @var IL10N */
+	private $l;
+
+	/** @var Session */
+	private $session;
+
+	/**
+	 * @param string $AppName
+	 * @param IRequest $request
+	 * @param IL10N $l10n
+	 * @param Session $session
+	 */
+	public function __construct($AppName,
+								IRequest $request,
+								IL10N $l10n,
+								Session $session
+								) {
+		parent::__construct($AppName, $request);
+		$this->l = $l10n;
+		$this->session = $session;
+	}
+
+	/**
+	 * @NoAdminRequired
+	 * @return DataResponse
+	 */
+	public function getStatus() {
+
+		switch( $this->session->getStatus()) {
+			case Session::INIT_EXECUTED:
+				$status = 'success';
+				$message = (string)$this->l->t(
+					'Invalid private key for Encryption App. Please update your private'
+					. ' key password in your personal settings to recover access to your'
+					. ' encrypted files.', array('app' => 'encryption'));
+				break;
+			case Session::NOT_INITIALIZED:
+				$status = 'success';
+				$message = (string)$this->l->t(
+					'Encryption App is enabled but your keys are not initialized,'
+					. ' please log-out and log-in again', array('app' => 'encryption'));
+				break;
+			default:
+				$status = 'error';
+		}
+
+		return new DataResponse(
+			array(
+				'status' => $status,
+				'data' => array(
+					'message' => $message)
+			)
+		);
+	}
+
+}
diff --git a/apps/encryption/js/encryption.js b/apps/encryption/js/encryption.js
index d2d1c3a..c02b4d7 100644
--- a/apps/encryption/js/encryption.js
+++ b/apps/encryption/js/encryption.js
@@ -9,8 +9,33 @@
  * @namespace
  * @memberOf OC
  */
-OC.Encryption={
-	MIGRATION_OPEN:0,
-	MIGRATION_COMPLETED:1,
-	MIGRATION_IN_PROGRESS:-1,
+OC.Encryption= {
+	MIGRATION_OPEN: 0,
+	MIGRATION_COMPLETED: 1,
+	MIGRATION_IN_PROGRESS: -1,
+
+
+	displayEncryptionWarning: function () {
+
+		if (!OC.Notification.isHidden()) {
+			return;
+		}
+
+		$.get(
+			OC.generateUrl('/apps/encryption/ajax/getStatus')
+			,  function( result ) {
+				if (result.status === "success") {
+					OC.Notification.show(result.data.message);
+				}
+			}
+		);
+	}
 };
+
+$(document).ready(function() {
+	// wait for other apps/extensions to register their event handlers and file actions
+	// in the "ready" clause
+	_.defer(function() {
+		OC.Encryption.displayEncryptionWarning();
+	});
+});
diff --git a/apps/encryption/lib/keymanager.php b/apps/encryption/lib/keymanager.php
index 87adf75..0661b67 100644
--- a/apps/encryption/lib/keymanager.php
+++ b/apps/encryption/lib/keymanager.php
@@ -295,6 +295,9 @@ class KeyManager {
 	 * @return boolean
 	 */
 	public function init($uid, $passPhrase) {
+
+		$this->session->setStatus(Session::INIT_EXECUTED);
+
 		try {
 			$privateKey = $this->getPrivateKey($uid);
 			$privateKey = $this->crypt->decryptPrivateKey($privateKey,
@@ -305,10 +308,13 @@ class KeyManager {
 			return false;
 		}
 
-		$this->session->setPrivateKey($privateKey);
-		$this->session->setStatus(Session::INIT_SUCCESSFUL);
+		if ($privateKey) {
+			$this->session->setPrivateKey($privateKey);
+			$this->session->setStatus(Session::INIT_SUCCESSFUL);
+			return true;
+		}
 
-		return true;
+		return false;
 	}
 
 	/**

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list