Loading lib/Exception/DeletingUserWithActiveSubscriptionException.php 0 → 100644 +9 −0 Original line number Diff line number Diff line <?php namespace OCA\EcloudAccounts\Exception; class DeletingUserWithActiveSubscriptionException extends \Exception { public function __construct($message = null, $code = 0) { parent::__construct($message, $code); } } lib/Listeners/BeforeUserDeletedListener.php +15 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ use OCP\User\Events\BeforeUserDeletedEvent; use OCA\EcloudAccounts\Service\LDAPConnectionService; use OCA\EcloudAccounts\Service\ShopAccountService; use OCA\EcloudAccounts\Service\UserService; use OCA\EcloudAccounts\Exception\DeletingUserWithActiveSubscriptionException; class BeforeUserDeletedListener implements IEventListener { private $logger; Loading @@ -38,6 +39,10 @@ class BeforeUserDeletedListener implements IEventListener { $user = $event->getUser(); $email = $user->getEMailAddress(); $uid = $user->getUID(); // Handle shop accounts first; none of the other things should happen before the active subscription check $this->handleShopAccounts($uid, $email); $isUserOnLDAP = $this->LDAPConnectionService->isUserOnLDAPBackend($user); $this->logger->info("PostDelete user {user}", array('user' => $uid)); Loading @@ -58,12 +63,22 @@ class BeforeUserDeletedListener implements IEventListener { } catch (Exception $e) { $this->logger->error('Error deleting aliases for user '. $uid . ' :' . $e->getMessage()); } } private function handleShopAccounts(string $uid, string $email) { $deleteShopAccount = $this->shopAccountService->getShopDeletePreference($uid); $shopUsers = $this->shopAccountService->getUsers($email); if (!empty($shopUsers)) { foreach ($shopUsers as $shopUser) { if ($shopUser['has_active_subscription']) { throw new DeletingUserWithActiveSubscriptionException('Cannot delete user ' . $uid . ' as an active subscription exists'); } if (!isset($shopUser['id'])) { continue; } if ($deleteShopAccount) { $this->shopAccountService->deleteUser($shopUser['shop_url'], $shopUser['id']); } else { Loading Loading
lib/Exception/DeletingUserWithActiveSubscriptionException.php 0 → 100644 +9 −0 Original line number Diff line number Diff line <?php namespace OCA\EcloudAccounts\Exception; class DeletingUserWithActiveSubscriptionException extends \Exception { public function __construct($message = null, $code = 0) { parent::__construct($message, $code); } }
lib/Listeners/BeforeUserDeletedListener.php +15 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ use OCP\User\Events\BeforeUserDeletedEvent; use OCA\EcloudAccounts\Service\LDAPConnectionService; use OCA\EcloudAccounts\Service\ShopAccountService; use OCA\EcloudAccounts\Service\UserService; use OCA\EcloudAccounts\Exception\DeletingUserWithActiveSubscriptionException; class BeforeUserDeletedListener implements IEventListener { private $logger; Loading @@ -38,6 +39,10 @@ class BeforeUserDeletedListener implements IEventListener { $user = $event->getUser(); $email = $user->getEMailAddress(); $uid = $user->getUID(); // Handle shop accounts first; none of the other things should happen before the active subscription check $this->handleShopAccounts($uid, $email); $isUserOnLDAP = $this->LDAPConnectionService->isUserOnLDAPBackend($user); $this->logger->info("PostDelete user {user}", array('user' => $uid)); Loading @@ -58,12 +63,22 @@ class BeforeUserDeletedListener implements IEventListener { } catch (Exception $e) { $this->logger->error('Error deleting aliases for user '. $uid . ' :' . $e->getMessage()); } } private function handleShopAccounts(string $uid, string $email) { $deleteShopAccount = $this->shopAccountService->getShopDeletePreference($uid); $shopUsers = $this->shopAccountService->getUsers($email); if (!empty($shopUsers)) { foreach ($shopUsers as $shopUser) { if ($shopUser['has_active_subscription']) { throw new DeletingUserWithActiveSubscriptionException('Cannot delete user ' . $uid . ' as an active subscription exists'); } if (!isset($shopUser['id'])) { continue; } if ($deleteShopAccount) { $this->shopAccountService->deleteUser($shopUser['shop_url'], $shopUser['id']); } else { Loading