show a message at the log-in screen if inital encryption take place

This commit is contained in:
Bjoern Schiessle 2013-11-25 23:49:05 +01:00
parent 5310a5924b
commit d6fb2afa85
5 changed files with 73 additions and 7 deletions

View file

@ -0,0 +1,28 @@
<?php
/**
* Copyright (c) 2013, Bjoern Schiessle <schiessle@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*
* @brief check migration status
*/
use OCA\Encryption\Util;
\OCP\JSON::checkAppEnabled('files_encryption');
$user = isset($_GET['user']) ? $_GET['user'] : '';
$password = isset($_GET['password']) ? $_GET['password'] : '';
$migrationCompleted = true;
if ($user !== '' && $password !== '') {
if (\OCP\User::checkPassword($user, $password)) {
error_log("password ok");
$util = new Util(new \OC_FilesystemView('/'), $user);
if ($util->getMigrationStatus($user) !== Util::MIGRATION_COMPLETED) {
$migrationCompleted = false;
}
}
}
\OCP\JSON::success(array('data' => array('migrationCompleted' => $migrationCompleted)));

View file

@ -10,6 +10,8 @@ OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php';
OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php';
OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php';
\OCP\Util::addscript('files_encryption', 'detect-migration');
if (!OC_Config::getValue('maintenance', false)) {
OC_FileProxy::register(new OCA\Encryption\Proxy());
@ -52,4 +54,3 @@ if (!OC_Config::getValue('maintenance', false)) {
// Register settings scripts
OCP\App::registerAdmin('files_encryption', 'settings-admin');
OCP\App::registerPersonal('files_encryption', 'settings-personal');

View file

@ -0,0 +1,29 @@
/**
* Copyright (c) 2013
* Bjoern Schiessle <schiessle@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*/
$(document).ready(function(){
$('form[name="login"]').on('submit', function(ev) {
var user = $('#user').val();
var password = $('#password').val();
$.ajax({
type: 'GET',
url: OC.linkTo('files_encryption', 'ajax/getMigrationStatus.php'),
dataType: 'json',
data: {user: user, password: password},
async: false,
success: function(response) {
if (response.data.migrationCompleted === false) {
var message = t('files_encryption', 'Initial encryption started... This can take some time. Please wait.');
$('p[name="message"]').html('<img src="' + OC.imagePath('core', 'loading-small.gif') + '"/> ' + message);
$('p[name="message"]').removeClass('hidden').addClass('info');
}
}
});
});
});

View file

@ -1253,16 +1253,22 @@ class Util {
/**
* @brief check if files are already migrated to the encryption system
* @param string $uid user Id
* @return migration status, false = in case of no record
* @note If records are not being returned, check for a hidden space
* at the start of the uid in db
*/
public function getMigrationStatus() {
public function getMigrationStatus($uid = null) {
if($uid && \OCP\User::userExists($uid)) {
$userId = $uid;
} else {
$userId = $this->uid;
}
$sql = 'SELECT `migration_status` FROM `*PREFIX*encryption` WHERE `uid` = ?';
$args = array($this->userId);
$args = array($userId);
$query = \OCP\DB::prepare($sql);
$result = $query->execute($args);
@ -1282,11 +1288,11 @@ class Util {
// If no record is found
if (empty($migrationStatus)) {
\OCP\Util::writeLog('Encryption library', "Could not get migration status for " . $this->userId . ", no record found", \OCP\Util::ERROR);
\OCP\Util::writeLog('Encryption library', "Could not get migration status for " . $userId . ", no record found", \OCP\Util::ERROR);
// insert missing entry in DB with status open
$sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`,`migration_status`) VALUES (?,?,?,?)';
$args = array(
$this->userId,
$userId,
'server-side',
0,
self::MIGRATION_OPEN

View file

@ -1,5 +1,5 @@
<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}</style><![endif]-->
<form method="post">
<form method="post" name="login">
<fieldset>
<?php if (!empty($_['redirect_url'])) {
print_unescaped('<input type="hidden" name="redirect_url" value="' . OC_Util::sanitizeHTML($_['redirect_url']) . '" />');
@ -18,6 +18,8 @@
<small><?php p($l->t('Please contact your administrator.')); ?></small>
</div>
<?php endif; ?>
<p name="message" class="hidden">
</p>
<p class="infield grouptop">
<input type="text" name="user" id="user" placeholder=""
value="<?php p($_['username']); ?>"<?php p($_['user_autofocus'] ? ' autofocus' : ''); ?>