passphera-core 0.9.0__py3-none-any.whl → 0.9.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
File without changes
@@ -0,0 +1,78 @@
1
+ from datetime import datetime, timezone
2
+ from uuid import UUID
3
+
4
+ from passphera_core.entities import Generator, GeneratorConfig
5
+ from passphera_core.interfaces import GeneratorRepository, GeneratorConfigRepository
6
+
7
+
8
+ class GetGeneratorUseCase:
9
+ def __init__(self, generator_repository: GeneratorRepository):
10
+ self.generator_repository: GeneratorRepository = generator_repository
11
+
12
+ def execute(self, user_id: UUID) -> Generator:
13
+ return self.generator_repository.find_by_user_id(user_id)
14
+
15
+
16
+ class GetGeneratorConfigPropertyUseCase:
17
+ def __init__(self, generator_repository: GeneratorRepository, generator_config_repository: GeneratorConfigRepository):
18
+ self.generator_repository: GeneratorRepository = generator_repository
19
+ self.generator_config_repository: GeneratorConfigRepository = generator_config_repository
20
+
21
+ def execute(self, user_id: UUID, field: str) -> str:
22
+ generator_entity: Generator = self.generator_repository.find_by_user_id(user_id)
23
+ generator_config_entity: GeneratorConfig = self.generator_config_repository.find_by_generator_id(generator_entity.id)
24
+ return getattr(generator_config_entity, field)
25
+
26
+
27
+ class UpdateGeneratorConfigUseCase:
28
+ def __init__(
29
+ self,
30
+ generator_repository: GeneratorRepository,
31
+ generator_config_repository: GeneratorConfigRepository,
32
+ ):
33
+ self.generator_repository: GeneratorRepository = generator_repository
34
+ self.generator_config_repository: GeneratorConfigRepository = generator_config_repository
35
+
36
+ def execute(self, user_id: UUID, field: str, value: str) -> None:
37
+ generator_entity: Generator = self.generator_repository.find_by_user_id(user_id)
38
+ generator_config_entity: GeneratorConfig = self.generator_config_repository.find_by_generator_id(generator_entity.id)
39
+ setattr(generator_config_entity, field, value)
40
+ if field == 'algorithm':
41
+ generator_config_entity.get_algorithm()
42
+ generator_config_entity.updated_at = datetime.now(timezone.utc)
43
+ self.generator_config_repository.update(generator_config_entity)
44
+
45
+
46
+
47
+ class AddCharacterReplacementUseCase:
48
+ def __init__(
49
+ self,
50
+ generator_repository: GeneratorRepository,
51
+ generator_config_repository: GeneratorConfigRepository,
52
+ ):
53
+ self.generator_repository: GeneratorRepository = generator_repository
54
+ self.generator_config_repository: GeneratorConfigRepository = generator_config_repository
55
+
56
+ def execute(self, user_id: UUID, character: str, replacement: str) -> None:
57
+ generator_entity: Generator = self.generator_repository.find_by_user_id(user_id)
58
+ generator_config_entity: GeneratorConfig = self.generator_config_repository.find_by_generator_id(generator_entity.id)
59
+ generator_config_entity.replace_character(character, replacement)
60
+ generator_config_entity.updated_at = datetime.now(timezone.utc)
61
+ self.generator_config_repository.update(generator_config_entity)
62
+
63
+
64
+ class ResetCharacterReplacementUseCase:
65
+ def __init__(
66
+ self,
67
+ generator_repository: GeneratorRepository,
68
+ generator_config_repository: GeneratorConfigRepository,
69
+ ):
70
+ self.generator_repository: GeneratorRepository = generator_repository
71
+ self.generator_config_repository: GeneratorConfigRepository = generator_config_repository
72
+
73
+ def execute(self, user_id: UUID, character: str) -> None:
74
+ generator_entity: Generator = self.generator_repository.find_by_user_id(user_id)
75
+ generator_config_entity: GeneratorConfig = self.generator_config_repository.find_by_generator_id(generator_entity.id)
76
+ generator_config_entity.reset_character(character)
77
+ generator_config_entity.updated_at = datetime.now(timezone.utc)
78
+ self.generator_config_repository.update(generator_config_entity)
@@ -0,0 +1,118 @@
1
+ from datetime import datetime, timezone
2
+ from uuid import UUID
3
+
4
+ from passphera_core.entities import Password, Generator, User
5
+ from passphera_core.exceptions import EntityNotFoundException
6
+ from passphera_core.interfaces import PasswordRepository, GeneratorRepository, UserRepository
7
+
8
+
9
+ class GeneratePasswordUseCase:
10
+ def __init__(
11
+ self,
12
+ password_repository: PasswordRepository,
13
+ generator_repository: GeneratorRepository,
14
+ user_repository: UserRepository
15
+ ):
16
+ self.password_repository: PasswordRepository = password_repository
17
+ self.generator_repository: GeneratorRepository = generator_repository
18
+ self.user_repository: UserRepository = user_repository
19
+
20
+ def execute(self, user_id: UUID, context: str, text: str) -> Password:
21
+ user_entity: User = self.user_repository.find_by_id(user_id)
22
+ generator_entity: Generator = self.generator_repository.find_by_id(user_entity.generator)
23
+ password: str = generator_entity.generate_password(text)
24
+ password_entity: Password = Password(user_id=user_id, context=context, text=text, password=password)
25
+ password_entity.encrypt()
26
+ self.password_repository.save(password_entity)
27
+ user_entity.add_password(password_entity.id)
28
+ self.user_repository.update(user_entity)
29
+ return password_entity
30
+
31
+
32
+ class GetPasswordByIdUseCase:
33
+ def __init__(self, password_repository: PasswordRepository):
34
+ self.password_repository: PasswordRepository = password_repository
35
+
36
+ def execute(self, password_id: UUID) -> Password:
37
+ password_entity: Password = self.password_repository.find_by_id(password_id)
38
+ if not password_entity:
39
+ raise EntityNotFoundException(password_entity)
40
+ return password_entity
41
+
42
+
43
+ class GetPasswordByContextUseCase:
44
+ def __init__(self, password_repository: PasswordRepository, user_repository: UserRepository):
45
+ self.password_repository: PasswordRepository = password_repository
46
+ self.user_repository: UserRepository = user_repository
47
+
48
+ def execute(self, user_id: UUID, context: str) -> Password:
49
+ user_entity: User = self.user_repository.find_by_id(user_id)
50
+ for password_id in user_entity.passwords:
51
+ password_entity: Password = self.password_repository.find_by_id(password_id)
52
+ if password_entity.context == context:
53
+ return password_entity
54
+ raise EntityNotFoundException(Password())
55
+
56
+
57
+ class UpdatePasswordUseCase:
58
+ def __init__(
59
+ self,
60
+ password_repository: PasswordRepository,
61
+ generator_repository: GeneratorRepository,
62
+ user_repository: UserRepository
63
+ ):
64
+ self.password_repository: PasswordRepository = password_repository
65
+ self.generator_repository: GeneratorRepository = generator_repository
66
+ self.user_repository: UserRepository = user_repository
67
+
68
+ def execute(self, user_id: UUID, context: str, text: str) -> Password:
69
+ user_entity: User = self.user_repository.find_by_id(user_id)
70
+ generator_entity: Generator = self.generator_repository.find_by_id(user_entity.generator)
71
+ for password_id in user_entity.passwords:
72
+ password_entity: Password = self.password_repository.find_by_id(password_id)
73
+ if password_entity.context == context:
74
+ password_entity.password = generator_entity.generate_password(text)
75
+ password_entity.encrypt()
76
+ password_entity.updated_at = datetime.now(timezone.utc)
77
+ self.password_repository.update(password_entity)
78
+ return password_entity
79
+ raise EntityNotFoundException(Password())
80
+
81
+
82
+ class DeletePasswordUseCase:
83
+ def __init__(self, password_repository: PasswordRepository, user_repository: UserRepository):
84
+ self.password_repository: PasswordRepository = password_repository
85
+ self.user_repository: UserRepository = user_repository
86
+
87
+ def execute(self, user_id: UUID, password_id: UUID) -> None:
88
+ self.password_repository.delete(password_id)
89
+ user_entity: User = self.user_repository.find_by_id(user_id)
90
+ user_entity.delete_password(password_id)
91
+ self.user_repository.update(user_entity)
92
+
93
+
94
+ class GetAllUserPasswordsUseCase:
95
+ def __init__(self, password_repository: PasswordRepository, user_repository: UserRepository):
96
+ self.password_repository: PasswordRepository = password_repository
97
+ self.user_repository: UserRepository = user_repository
98
+
99
+ def execute(self, user_id: UUID) -> list[Password]:
100
+ user_entity: User = self.user_repository.find_by_id(user_id)
101
+ passwords: list[Password] = []
102
+ for password_id in user_entity.passwords:
103
+ password_entity: Password = self.password_repository.find_by_id(password_id)
104
+ passwords.append(password_entity)
105
+ return passwords
106
+
107
+
108
+ class DeleteAllUserPasswordsUseCase:
109
+ def __init__(self, password_repository: PasswordRepository, user_repository: UserRepository):
110
+ self.password_repository: PasswordRepository = password_repository
111
+ self.user_repository: UserRepository = user_repository
112
+
113
+ def execute(self, user_id: UUID) -> None:
114
+ user_entity: User = self.user_repository.find_by_id(user_id)
115
+ for password_id in user_entity.passwords:
116
+ self.password_repository.delete(password_id)
117
+ user_entity.delete_password(password_id)
118
+ self.user_repository.update(user_entity)
@@ -0,0 +1,56 @@
1
+ from uuid import UUID
2
+
3
+ from passphera_core.entities import User, Generator
4
+ from passphera_core.exceptions import DuplicateEntityException
5
+ from passphera_core.interfaces import UserRepository, GeneratorRepository
6
+
7
+
8
+ class RegisterUserUseCase:
9
+ def __init__(self, user_repository: UserRepository, generator_repository: GeneratorRepository):
10
+ self.user_repository: UserRepository = user_repository
11
+ self.generator_repository: GeneratorRepository = generator_repository
12
+
13
+ def execute(self, user: User) -> User:
14
+ if self.user_repository.find_by_email(user.email):
15
+ raise DuplicateEntityException(user, 'email')
16
+ if self.user_repository.find_by_username(user.username):
17
+ raise DuplicateEntityException(user, 'username')
18
+ user_entity: User = User(**user.__dict__)
19
+ generator_entity: Generator = Generator(user_id=user_entity.id)
20
+ self.generator_repository.save(generator_entity)
21
+ user_entity.generator = generator_entity.id
22
+ self.user_repository.save(user_entity)
23
+ return user_entity
24
+
25
+
26
+ class GetUserByIdUseCase:
27
+ def __init__(self, user_repository: UserRepository):
28
+ self.user_repository: UserRepository = user_repository
29
+
30
+ def execute(self, id: UUID) -> User:
31
+ user = self.user_repository.find_by_id(id)
32
+ if not user:
33
+ raise ValueError(f'User not found')
34
+ return user
35
+
36
+
37
+ class GetUserByUsernameUseCase:
38
+ def __init__(self, user_repository: UserRepository):
39
+ self.user_repository = user_repository
40
+
41
+ def execute(self, username: str) -> User:
42
+ user = self.user_repository.find_by_username(username)
43
+ if not user:
44
+ raise ValueError(f'User not found')
45
+ return user
46
+
47
+
48
+ class GetUserByEmailUseCase:
49
+ def __init__(self, user_repository: UserRepository):
50
+ self.user_repository = user_repository
51
+
52
+ def execute(self, email: str) -> User:
53
+ user = self.user_repository.find_by_email(email)
54
+ if not user:
55
+ raise ValueError(f'User not found')
56
+ return user
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: passphera-core
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Summary: The core system of passphera project
5
5
  Home-page: https://github.com/passphera/core
6
6
  Author: Fathi Abdelmalek
@@ -0,0 +1,12 @@
1
+ passphera_core/__init__.py,sha256=0kEfHV5WvMWDoFn1qCeuD52WsgaX4sQ4V9P48cnFKb8,120
2
+ passphera_core/entities.py,sha256=SvzBKDx9NkaVunXBGT-PgEWbXNXivb8pGw9Q_KFtAgI,5021
3
+ passphera_core/exceptions.py,sha256=5NvV6LW4Pdok6gRxvM0cN3q6JEKgaCYAX8qGr2eqX2w,1890
4
+ passphera_core/interfaces.py,sha256=uwHjPd1uhnA02X9h39IrHuNS-_M8j_RyKMVdxi3DUak,2036
5
+ passphera_core/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ passphera_core/application/generator.py,sha256=ABUigLMtP52CHpTKIZmwNb0pgGeL4s_WgrpxLr1M9zw,3896
7
+ passphera_core/application/password.py,sha256=72PXsHsSYvBDLdzwtC8icwf8KZPScWBKb9jKIQRAkEg,5511
8
+ passphera_core/application/user.py,sha256=WTDjccHjxoqsfC2j0c9MfwREmiST9XxYOHoaDWYGTcg,2066
9
+ passphera_core-0.9.1.dist-info/METADATA,sha256=jwBmrk5oor-rOcC6PSjASjC00mpNFHc3PifeR3uKZ44,671
10
+ passphera_core-0.9.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
11
+ passphera_core-0.9.1.dist-info/top_level.txt,sha256=aDUX2iWGOyfzyf6XakLWTbgeWqNrypMHO074Qratyds,15
12
+ passphera_core-0.9.1.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- passphera_core/__init__.py,sha256=0kEfHV5WvMWDoFn1qCeuD52WsgaX4sQ4V9P48cnFKb8,120
2
- passphera_core/entities.py,sha256=SvzBKDx9NkaVunXBGT-PgEWbXNXivb8pGw9Q_KFtAgI,5021
3
- passphera_core/exceptions.py,sha256=5NvV6LW4Pdok6gRxvM0cN3q6JEKgaCYAX8qGr2eqX2w,1890
4
- passphera_core/interfaces.py,sha256=uwHjPd1uhnA02X9h39IrHuNS-_M8j_RyKMVdxi3DUak,2036
5
- passphera_core-0.9.0.dist-info/METADATA,sha256=LoH3ACZT9O7vI15hlwhA0psp16_FnNaCU5eOfIr3CCY,671
6
- passphera_core-0.9.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
7
- passphera_core-0.9.0.dist-info/top_level.txt,sha256=aDUX2iWGOyfzyf6XakLWTbgeWqNrypMHO074Qratyds,15
8
- passphera_core-0.9.0.dist-info/RECORD,,