mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2025-01-23 17:26:46 +00:00
refactor(tokens-repo): break out storing recovery keys
This commit is contained in:
parent
baf72b730b
commit
817f414dd9
|
@ -123,6 +123,10 @@ class AbstractTokensRepository(ABC):
|
||||||
return False
|
return False
|
||||||
return recovery_key.is_valid()
|
return recovery_key.is_valid()
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def _store_recovery_key(self, recovery_key: RecoveryKey) -> None:
|
||||||
|
"""Store recovery key directly"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def _delete_recovery_key(self) -> None:
|
def _delete_recovery_key(self) -> None:
|
||||||
"""Delete the recovery key"""
|
"""Delete the recovery key"""
|
||||||
|
|
|
@ -103,6 +103,11 @@ class JsonTokensRepository(AbstractTokensRepository):
|
||||||
|
|
||||||
recovery_key = RecoveryKey.generate(expiration, uses_left)
|
recovery_key = RecoveryKey.generate(expiration, uses_left)
|
||||||
|
|
||||||
|
self._store_recovery_key(recovery_key)
|
||||||
|
|
||||||
|
return recovery_key
|
||||||
|
|
||||||
|
def _store_recovery_key(self, recovery_key: RecoveryKey) -> None:
|
||||||
with WriteUserData(UserDataFiles.TOKENS) as tokens_file:
|
with WriteUserData(UserDataFiles.TOKENS) as tokens_file:
|
||||||
key_expiration: Optional[str] = None
|
key_expiration: Optional[str] = None
|
||||||
if recovery_key.expires_at is not None:
|
if recovery_key.expires_at is not None:
|
||||||
|
@ -114,8 +119,6 @@ class JsonTokensRepository(AbstractTokensRepository):
|
||||||
"uses_left": recovery_key.uses_left,
|
"uses_left": recovery_key.uses_left,
|
||||||
}
|
}
|
||||||
|
|
||||||
return recovery_key
|
|
||||||
|
|
||||||
def _decrement_recovery_token(self):
|
def _decrement_recovery_token(self):
|
||||||
"""Decrement recovery key use count by one"""
|
"""Decrement recovery key use count by one"""
|
||||||
if self.is_recovery_key_valid():
|
if self.is_recovery_key_valid():
|
||||||
|
|
|
@ -65,9 +65,12 @@ class RedisTokensRepository(AbstractTokensRepository):
|
||||||
) -> RecoveryKey:
|
) -> RecoveryKey:
|
||||||
"""Create the recovery key"""
|
"""Create the recovery key"""
|
||||||
recovery_key = RecoveryKey.generate(expiration=expiration, uses_left=uses_left)
|
recovery_key = RecoveryKey.generate(expiration=expiration, uses_left=uses_left)
|
||||||
self._store_model_as_hash(RECOVERY_KEY_REDIS_KEY, recovery_key)
|
self._store_recovery_key(recovery_key)
|
||||||
return recovery_key
|
return recovery_key
|
||||||
|
|
||||||
|
def _store_recovery_key(self, recovery_key: RecoveryKey) -> None:
|
||||||
|
self._store_model_as_hash(RECOVERY_KEY_REDIS_KEY, recovery_key)
|
||||||
|
|
||||||
def _delete_recovery_key(self) -> None:
|
def _delete_recovery_key(self) -> None:
|
||||||
"""Delete the recovery key"""
|
"""Delete the recovery key"""
|
||||||
redis = self.connection
|
redis = self.connection
|
||||||
|
|
Loading…
Reference in a new issue