From a4e9e2fc792f6300d93febd83a8b826c80bbcdc1 Mon Sep 17 00:00:00 2001
From: Florin Peter <github@florin-peter.de>
Date: Mon, 13 May 2013 22:49:27 +0200
Subject: [PATCH] added post_deleteUser hook for cleanup public key

---
 apps/files_encryption/hooks/hooks.php | 19 +++++++++++++++++++
 apps/files_encryption/lib/helper.php  |  1 +
 2 files changed, 20 insertions(+)

diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php
index ebaa9c5145..134b038e7e 100644
--- a/apps/files_encryption/hooks/hooks.php
+++ b/apps/files_encryption/hooks/hooks.php
@@ -127,6 +127,25 @@ class Hooks {
         Helper::setupUser($util, $params['password']);
     }
 
+    /**
+     * @brief cleanup encryption backend upon user deleted
+     * @note This method should never be called for users using client side encryption
+     */
+    public static function postDeleteUser( $params ) {
+        $view = new \OC_FilesystemView( '/' );
+
+        // cleanup public key
+        $publicKey = '/public-keys/' . $params['uid'] . '.public.key';
+
+        // Disable encryption proxy to prevent recursive calls
+        $proxyStatus = \OC_FileProxy::$enabled;
+        \OC_FileProxy::$enabled = false;
+
+        $view->unlink($publicKey);
+
+        \OC_FileProxy::$enabled = $proxyStatus;
+    }
+
     /**
 	 * @brief Change a user's encryption passphrase
 	 * @param array $params keys: uid, password
diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php
index 3a5b2f78ce..783cebeee5 100755
--- a/apps/files_encryption/lib/helper.php
+++ b/apps/files_encryption/lib/helper.php
@@ -49,6 +49,7 @@ class Helper {
         \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' );
         \OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' );
         \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' );
+        \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' );
     }
 
     /**
-- 
GitLab