From baf72b730b406483477202911e9f56c0cbfe0907 Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Fri, 13 Jan 2023 09:59:27 +0000 Subject: [PATCH] refactor(tokens-repo): move reset to AbstractTokensRepo --- .../tokens/abstract_tokens_repository.py | 10 ++++++++++ .../repositories/tokens/json_tokens_repository.py | 7 +++++++ .../repositories/tokens/redis_tokens_repository.py | 12 +++++------- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py b/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py index 3a20ede..d9a250e 100644 --- a/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py +++ b/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py @@ -123,6 +123,10 @@ class AbstractTokensRepository(ABC): return False return recovery_key.is_valid() + @abstractmethod + def _delete_recovery_key(self) -> None: + """Delete the recovery key""" + def get_new_device_key(self) -> NewDeviceKey: """Creates and returns the new device key""" new_device_key = NewDeviceKey.generate() @@ -156,6 +160,12 @@ class AbstractTokensRepository(ABC): return new_token + def reset(self): + for token in self.get_tokens(): + self.delete_token(token) + self.delete_new_device_key() + self._delete_recovery_key() + @abstractmethod def _store_token(self, new_token: Token): """Store a token directly""" diff --git a/selfprivacy_api/repositories/tokens/json_tokens_repository.py b/selfprivacy_api/repositories/tokens/json_tokens_repository.py index 09204a8..4cb7b3f 100644 --- a/selfprivacy_api/repositories/tokens/json_tokens_repository.py +++ b/selfprivacy_api/repositories/tokens/json_tokens_repository.py @@ -123,6 +123,13 @@ class JsonTokensRepository(AbstractTokensRepository): if tokens["recovery_token"]["uses_left"] is not None: tokens["recovery_token"]["uses_left"] -= 1 + def _delete_recovery_key(self) -> None: + """Delete the recovery key""" + with WriteUserData(UserDataFiles.TOKENS) as tokens_file: + if "recovery_token" in tokens_file: + del tokens_file["recovery_token"] + return + def _store_new_device_key(self, new_device_key: NewDeviceKey) -> None: with WriteUserData(UserDataFiles.TOKENS) as tokens_file: tokens_file["new_device"] = { diff --git a/selfprivacy_api/repositories/tokens/redis_tokens_repository.py b/selfprivacy_api/repositories/tokens/redis_tokens_repository.py index a16b79d..27271b7 100644 --- a/selfprivacy_api/repositories/tokens/redis_tokens_repository.py +++ b/selfprivacy_api/repositories/tokens/redis_tokens_repository.py @@ -51,13 +51,6 @@ class RedisTokensRepository(AbstractTokensRepository): raise TokenNotFound redis.delete(key) - def reset(self): - for token in self.get_tokens(): - self.delete_token(token) - self.delete_new_device_key() - redis = self.connection - redis.delete(RECOVERY_KEY_REDIS_KEY) - def get_recovery_key(self) -> Optional[RecoveryKey]: """Get the recovery key""" redis = self.connection @@ -75,6 +68,11 @@ class RedisTokensRepository(AbstractTokensRepository): self._store_model_as_hash(RECOVERY_KEY_REDIS_KEY, recovery_key) return recovery_key + def _delete_recovery_key(self) -> None: + """Delete the recovery key""" + redis = self.connection + redis.delete(RECOVERY_KEY_REDIS_KEY) + def _store_new_device_key(self, new_device_key: NewDeviceKey) -> None: """Store new device key directly""" self._store_model_as_hash(NEW_DEVICE_KEY_REDIS_KEY, new_device_key)