]> source.dussan.org Git - nextcloud-server.git/commitdiff
remove user from cache if he was deleted successfully
authorBjoern Schiessle <schiessle@owncloud.com>
Tue, 29 Oct 2013 14:50:33 +0000 (15:50 +0100)
committerBjoern Schiessle <schiessle@owncloud.com>
Tue, 29 Oct 2013 14:50:33 +0000 (15:50 +0100)
lib/private/user.php
lib/private/user/manager.php

index 6b350d4cf1b3cad331b6062e08fee83e585a1a35..710f0fd66dbb1a32fe12d5bddd7bcc25e2e6edfb 100644 (file)
@@ -187,18 +187,25 @@ class OC_User {
        public static function deleteUser($uid) {
                $user = self::getManager()->get($uid);
                if ($user) {
-                       $user->delete();
+                       $result = $user->delete();
 
-                       // We have to delete the user from all groups
-                       foreach (OC_Group::getUserGroups($uid) as $i) {
-                               OC_Group::removeFromGroup($uid, $i);
+                       // if delete was successful we clean-up the rest
+                       if ($result) {
+
+                               // We have to delete the user from all groups
+                               foreach (OC_Group::getUserGroups($uid) as $i) {
+                                       OC_Group::removeFromGroup($uid, $i);
+                                       }
+                               // Delete the user's keys in preferences
+                                       OC_Preferences::deleteUser($uid);
+
+                               // Delete user files in /data/
+                               OC_Helper::rmdirr(OC_Config::getValue('datadirectory', OC::$SERVERROOT . '/data') . '/' . $uid . '/');
+
+                               // Remove it from the Cache
+                               self::getManager()->delete($uid);
                        }
-                       // Delete the user's keys in preferences
-                       OC_Preferences::deleteUser($uid);
 
-                       // Delete user files in /data/
-                       OC_Helper::rmdirr(OC_Config::getValue('datadirectory', OC::$SERVERROOT . '/data') . '/' . $uid . '/');
-                       
                        return true;
                } else {
                        return false;
index 13286bc28a48ad964ca7278de0373c554e8654c9..703c8cd7413ddfd273934dd3775fcc3a2700ab2e 100644 (file)
@@ -118,6 +118,20 @@ class Manager extends PublicEmitter {
                return ($user !== null);
        }
 
+       /**
+        * remove deleted user from cache
+        *
+        * @param string $uid
+        * @return bool
+        */
+       public function delete($uid) {
+               if (isset($this->cachedUsers[$uid])) {
+                       unset($this->cachedUsers[$uid]);
+                       return true;
+               }
+               return false;
+       }
+
        /**
         * Check if the password is valid for the user
         *