def handle_login(self, conn, addr): '''Handle a client connection's attempt to login''' received_data = conn.recv(1024) while received_data: credentials = DataManager.decode_object(received_data) logged_in_status = self.login_manager.login(credentials, addr) conn.send(DataManager.encode_object(logged_in_status)) if logged_in_status == LoginStatus.SUCCESS: # Client logged in - listen for requests from the client print(f'[{addr}, {credentials["username"]}]: Logged in.') self.handle_requests(conn, addr, credentials['username']) else: print(f'[{addr}, {credentials["username"]}]: Attempted login.') try: # Listen for more attempts from the client received_data = conn.recv(1024) except: # Connection has been closed due to logout received_data = None
def login(self): '''Attempt login to server''' while True: username = input('> Username: '******'> Password: '******'username': username, 'password': password} self.tcp_socket.send(DataManager.encode_object(credentials)) login_response = self.tcp_socket.recv(1024).decode( 'utf-8').replace('"', '') print('>', login_response) if login_response == LoginStatus.SUCCESS: # User successfully logged in and identified self.username = username self.tempID = TempID(self.username, created=datetime.datetime.min) return login_response elif login_response == LoginStatus.BLOCKING or login_response == LoginStatus.BLOCKED: exit() return login_response