1
1
from pathlib import Path
2
2
3
- import bcrypt
4
-
5
- from common .utils .exceptions import (
6
- IncorrectCredentialsError ,
7
- InvalidRegistrationCredentialsError ,
8
- UnknownUserError ,
9
- )
3
+ from common .utils .exceptions import InvalidRegistrationCredentialsError
10
4
from monkey_island .cc .event_queue import IIslandEventQueue , IslandEventTopic
11
- from monkey_island .cc .models import IslandMode , UserCredentials
12
- from monkey_island .cc .repositories import IUserRepository
5
+ from monkey_island .cc .models import IslandMode
13
6
from monkey_island .cc .server_utils .encryption import ILockableEncryptor
14
7
15
8
@@ -21,23 +14,13 @@ class AuthenticationService:
21
14
def __init__ (
22
15
self ,
23
16
data_dir : Path ,
24
- user_repository : IUserRepository ,
25
17
repository_encryptor : ILockableEncryptor ,
26
18
island_event_queue : IIslandEventQueue ,
27
19
):
28
20
self ._data_dir = data_dir
29
- self ._user_repository = user_repository
30
21
self ._repository_encryptor = repository_encryptor
31
22
self ._island_event_queue = island_event_queue
32
23
33
- def needs_registration (self ) -> bool :
34
- """
35
- Checks if a user is already registered on the Island
36
-
37
- :return: Whether registration is required on the Island
38
- """
39
- return not self ._user_repository .has_registered_users ()
40
-
41
24
def register_new_user (self , username : str , password : str ):
42
25
"""
43
26
Registers a new user on the Island, then resets the encryptor and database
@@ -49,9 +32,6 @@ def register_new_user(self, username: str, password: str):
49
32
if not username or not password :
50
33
raise InvalidRegistrationCredentialsError ("Username or password can not be empty." )
51
34
52
- credentials = UserCredentials (username , _hash_password (password ))
53
- self ._user_repository .add_user (credentials )
54
-
55
35
self ._island_event_queue .publish (IslandEventTopic .CLEAR_SIMULATION_DATA )
56
36
self ._island_event_queue .publish (IslandEventTopic .RESET_AGENT_CONFIGURATION )
57
37
self ._island_event_queue .publish (
@@ -61,14 +41,6 @@ def register_new_user(self, username: str, password: str):
61
41
self ._reset_repository_encryptor (username , password )
62
42
63
43
def authenticate (self , username : str , password : str ):
64
- try :
65
- registered_user = self ._user_repository .get_user_credentials (username )
66
- except UnknownUserError :
67
- raise IncorrectCredentialsError ()
68
-
69
- if not _credentials_match_registered_user (username , password , registered_user ):
70
- raise IncorrectCredentialsError ()
71
-
72
44
self ._unlock_repository_encryptor (username , password )
73
45
74
46
def _unlock_repository_encryptor (self , username : str , password : str ):
@@ -81,24 +53,5 @@ def _reset_repository_encryptor(self, username: str, password: str):
81
53
self ._repository_encryptor .unlock (secret .encode ())
82
54
83
55
84
- def _hash_password (plaintext_password : str ) -> str :
85
- salt = bcrypt .gensalt ()
86
- password_hash = bcrypt .hashpw (plaintext_password .encode ("utf-8" ), salt )
87
-
88
- return password_hash .decode ()
89
-
90
-
91
- def _credentials_match_registered_user (
92
- username : str , password : str , registered_user : UserCredentials
93
- ) -> bool :
94
- return (registered_user .username == username ) and _password_matches_hash (
95
- password , registered_user .password_hash
96
- )
97
-
98
-
99
- def _password_matches_hash (plaintext_password : str , password_hash : str ) -> bool :
100
- return bcrypt .checkpw (plaintext_password .encode ("utf-8" ), password_hash .encode ("utf-8" ))
101
-
102
-
103
56
def _get_secret_from_credentials (username : str , password : str ) -> str :
104
57
return f"{ username } :{ password } "
0 commit comments