%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Helper/User/ |
Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Helper/User/DeleteUserDataHelper.php |
<?php /** * This file is part of the Passwords App * created by Marius David Wieschollek * and licensed under the AGPL. */ namespace OCA\Passwords\Helper\User; use Exception; use OCA\Passwords\Db\SessionMapper; use OCA\Passwords\Helper\Settings\UserSettingsHelper; use OCA\Passwords\Services\ConfigurationService; use OCA\Passwords\Services\EnvironmentService; use OCA\Passwords\Services\Object\AbstractModelService; use OCA\Passwords\Services\Object\AbstractService; use OCA\Passwords\Services\Object\ChallengeService; use OCA\Passwords\Services\Object\FolderService; use OCA\Passwords\Services\Object\KeychainService; use OCA\Passwords\Services\Object\PasswordService; use OCA\Passwords\Services\Object\ShareService; use OCA\Passwords\Services\Object\TagService; /** * Class DeleteUserDataHelper * * @package OCA\Passwords\Helper\User */ class DeleteUserDataHelper { /** * @var null|string */ protected ?string $userId; /** * @var ConfigurationService */ protected ConfigurationService $config; /** * @var TagService */ protected TagService $tagService; /** * @var UserSettingsHelper */ protected UserSettingsHelper $settings; /** * @var FolderService */ protected FolderService $folderService; /** * @var PasswordService */ protected PasswordService $passwordService; /** * @var ShareService */ protected ShareService $shareService; /** * @var KeychainService */ protected KeychainService $keychainService; /** * @var ChallengeService */ protected ChallengeService $challengeService; /** * @var SessionMapper */ protected SessionMapper $sessionMapper; /** * @var array */ protected array $userConfigKeys = [ 'SSEv1UserKey', 'client/settings', 'user/challenge/id', 'login/attempts/failed' ]; /** * DeleteUserDataHelper constructor. * * @param TagService $tagService * @param ShareService $shareService * @param SessionMapper $sessionMapper * @param UserSettingsHelper $settings * @param FolderService $folderService * @param ConfigurationService $config * @param EnvironmentService $environment * @param PasswordService $passwordService * @param KeychainService $keychainService * @param ChallengeService $challengeService */ public function __construct( TagService $tagService, ShareService $shareService, SessionMapper $sessionMapper, UserSettingsHelper $settings, FolderService $folderService, ConfigurationService $config, EnvironmentService $environment, PasswordService $passwordService, KeychainService $keychainService, ChallengeService $challengeService ) { $this->userId = $environment->getUserId(); $this->config = $config; $this->settings = $settings; $this->tagService = $tagService; $this->shareService = $shareService; $this->sessionMapper = $sessionMapper; $this->folderService = $folderService; $this->passwordService = $passwordService; $this->keychainService = $keychainService; $this->challengeService = $challengeService; } /** * @param string $userId * * @throws Exception */ public function deleteUserData(string $userId): void { if($this->userId !== null && $this->userId !== $userId) throw new Exception('Invalid user id '.$userId); $this->closeSessions($userId); $this->deleteObjects($this->challengeService, $userId); $this->deleteObjects($this->keychainService, $userId); $this->deleteObjects($this->tagService, $userId); $this->deleteObjects($this->folderService, $userId); $this->deleteObjects($this->passwordService, $userId); $this->deleteObjects($this->shareService, $userId); $this->deleteUserSettings($userId); $this->deleteUserConfig($userId); } /** * @param AbstractModelService|ShareService|AbstractService $service * @param string $userId * * @throws Exception */ protected function deleteObjects(AbstractService $service, string $userId): void { $objects = $service->findByUserId($userId); foreach($objects as $object) { $service->delete($object); } } /** * @param string $userId * * @throws Exception */ protected function deleteUserSettings(string $userId): void { $settings = array_keys($this->settings->list($userId)); foreach($settings as $setting) { $this->settings->reset($setting, $userId); } } /** * @param string $userId * * @throws Exception */ protected function deleteUserConfig(string $userId): void { foreach($this->userConfigKeys as $key) { $this->config->deleteUserValue($key, $userId); } } /** * @param string $userId * * @throws Exception */ protected function closeSessions(string $userId): void { $sessions = $this->sessionMapper->findAllByUserId($userId); foreach($sessions as $session) { $this->sessionMapper->delete($session); } } }