From 4b53f72d0d749cceec7a9fa7be5d8bc6bab722c6 Mon Sep 17 00:00:00 2001 From: Sam Tuke Date: Tue, 7 May 2013 16:17:38 +0200 Subject: [PATCH] Added facility to manually encrypt all files from personal settings Added success/fail feedback to personal settings functions Improved look/layout of personal settings page Fixed misplaced plain text in ajax scripts --- apps/files_encryption/ajax/adminrecovery.php | 5 +-- apps/files_encryption/ajax/encryptall.php | 40 +++++++++++++++++++ apps/files_encryption/ajax/userrecovery.php | 22 +++++----- .../css/settings-personal.css | 10 +++++ apps/files_encryption/js/settings-personal.js | 39 +++++++++++++++++- apps/files_encryption/settings-personal.php | 3 ++ .../templates/settings-personal.php | 32 +++++++++++---- 7 files changed, 127 insertions(+), 24 deletions(-) create mode 100644 apps/files_encryption/ajax/encryptall.php create mode 100644 apps/files_encryption/css/settings-personal.css diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index eeeaf4c6ed..c3c19943c0 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -1,5 +1,3 @@ -setValue( $app, $key, $value ) - @@ -91,4 +89,5 @@ if ( } -($return) ? OC_JSON::success() : OC_JSON::error(); \ No newline at end of file +// Return success or failure +( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/ajax/encryptall.php b/apps/files_encryption/ajax/encryptall.php new file mode 100644 index 0000000000..ce613ca443 --- /dev/null +++ b/apps/files_encryption/ajax/encryptall.php @@ -0,0 +1,40 @@ + + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + * + * @brief Script to handle manual trigger of \OCA\Encryption\Util{}->encryptAll() + */ + +use OCA\Encryption; + +\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::callCheck(); + +$return = false; + +if ( + isset( $_POST['encryptAll'] ) + && ! empty( $_POST['userPassword'] ) +) { + + $view = new \OC_FilesystemView( '' ); + $userId = \OCP\User::getUser(); + $util = new \OCA\Encryption\Util( $view, $userId ); + $session = new \OCA\Encryption\Session( $view ); + $publicKey = \OCA\Encryption\Keymanager::getPublicKey( $view, $userId ); + $path = '/' . $userId . '/' . 'files'; + + $util->encryptAll( $publicKey, $path, $session->getLegacyKey(), $_POST['userPassword'] ); + + $return = true; + +} else { + + $return = false; + +} + +// Return success or failure +( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index f72be3181e..85a799011d 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -1,5 +1,3 @@ -setValue( $app, $key, $value ) - @@ -13,6 +11,7 @@ use OCA\Encryption; \OCP\JSON::checkLoggedIn(); \OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::callCheck(); if ( isset( $_POST['userEnableRecovery'] ) @@ -24,16 +23,13 @@ if ( $util = new \OCA\Encryption\Util( $view, $userId ); // Save recovery preference to DB - $result = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); + $return = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); - if ( $result ) { +} else { + + $return = false; - \OCP\JSON::success(); - - } else { - - \OCP\JSON::error(); - - } - -} \ No newline at end of file +} + +// Return success or failure +( $return ) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/css/settings-personal.css b/apps/files_encryption/css/settings-personal.css new file mode 100644 index 0000000000..4ee0acc976 --- /dev/null +++ b/apps/files_encryption/css/settings-personal.css @@ -0,0 +1,10 @@ +/* Copyright (c) 2013, Sam Tuke, + This file is licensed under the Affero General Public License version 3 or later. + See the COPYING-README file. */ + +#encryptAllError +, #encryptAllSuccess +, #recoveryEnabledError +, #recoveryEnabledSuccess { + display: none; +} \ No newline at end of file diff --git a/apps/files_encryption/js/settings-personal.js b/apps/files_encryption/js/settings-personal.js index e4a1b7448f..3b9b00dc79 100644 --- a/apps/files_encryption/js/settings-personal.js +++ b/apps/files_encryption/js/settings-personal.js @@ -9,15 +9,52 @@ $(document).ready(function(){ $( 'input:radio[name="userEnableRecovery"]' ).change( function() { + // Hide feedback messages in case they're already visible + $('#recoveryEnabledSuccess').hide(); + $('#recoveryEnabledError').hide(); + var recoveryStatus = $( this ).val(); $.post( OC.filePath( 'files_encryption', 'ajax', 'userrecovery.php' ) , { userEnableRecovery: recoveryStatus } , function( data ) { - alert( data ); + if ( data.status == "success" ) { + $('#recoveryEnabledSuccess').show(); + } else { + $('#recoveryEnabledError').show(); + } } ); + // Ensure page is not reloaded on form submit + return false; } ); + + $("#encryptAll").click( + function(){ + + // Hide feedback messages in case they're already visible + $('#encryptAllSuccess').hide(); + $('#encryptAllError').hide(); + + var userPassword = $( '#userPassword' ).val(); + var encryptAll = $( '#encryptAll' ).val(); + + $.post( + OC.filePath( 'files_encryption', 'ajax', 'encryptall.php' ) + , { encryptAll: encryptAll, userPassword: userPassword } + , function( data ) { + if ( data.status == "success" ) { + $('#encryptAllSuccess').show(); + } else { + $('#encryptAllError').show(); + } + } + ); + // Ensure page is not reloaded on form submit + return false; + } + + ); }) \ No newline at end of file diff --git a/apps/files_encryption/settings-personal.php b/apps/files_encryption/settings-personal.php index c6d9d80f0b..46efb61b02 100644 --- a/apps/files_encryption/settings-personal.php +++ b/apps/files_encryption/settings-personal.php @@ -6,6 +6,9 @@ * See the COPYING-README file. */ +// Add CSS stylesheet +\OC_Util::addStyle( 'files_encryption', 'settings-personal' ); + $tmpl = new OCP\Template( 'files_encryption', 'settings-personal'); $blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index c81f361ced..00f567ecb2 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -1,15 +1,17 @@
- t( 'Encryption' )); ?> + t( 'Encryption' ) ); ?>

- t( 'File encryption is enabled.' )); ?> +

- t( 'The following file types will not be encrypted:' )); ?> + File types +
+ t( 'The following file types will not be encrypted:' ) ); ?>

    @@ -20,17 +22,19 @@
- +

- t( "Enable password recovery by sharing all files with administrator:" )); ?> + +
+ t( "Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" ) ); ?>
/> - t( "Enabled" )); ?> + t( "Enabled" ) ); ?>
/> - t( "Disabled" )); ?> + t( "Disabled" ) ); ?> +

t( 'File recovery settings updated' ) ); ?>
+
t( 'Could not update file recovery' ) ); ?>

+
+

+ +
+ t( "Use this if you suspect that you still have files which are unencrypted, or encrypted using ownCloud 4 or older." ) ); ?> +
+ + + +

t( 'Scan complete' ) );?>
+
t( 'Unable to scan and encrypt files' ) );?>
+