diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php index 41fdad148a..7db686c33a 100644 --- a/lib/private/Accounts/AccountManager.php +++ b/lib/private/Accounts/AccountManager.php @@ -113,6 +113,19 @@ class AccountManager { } } + /** + * delete user from accounts table + * + * @param IUser $user + */ + public function deleteUser(IUser $user) { + $uid = $user->getUID(); + $query = $this->connection->getQueryBuilder(); + $query->delete($this->table) + ->where($query->expr()->eq('uid', $query->createNamedParameter($uid))) + ->execute(); + } + /** * get stored data from a given user * diff --git a/lib/private/User/User.php b/lib/private/User/User.php index f55807bc76..5e5d3f0d77 100644 --- a/lib/private/User/User.php +++ b/lib/private/User/User.php @@ -30,6 +30,7 @@ namespace OC\User; +use OC\Accounts\AccountManager; use OC\Files\Cache\Storage; use OC\Hooks\Emitter; use OC_Helper; @@ -235,6 +236,10 @@ class User implements IUser { $notification->setUser($this->uid); \OC::$server->getNotificationManager()->markProcessed($notification); + /** @var AccountManager $accountManager */ + $accountManager = \OC::$server->query(AccountManager::class); + $accountManager->deleteUser($this); + if ($this->emitter) { $this->emitter->emit('\OC\User', 'postDelete', array($this)); }