private async void Login(object sender, RoutedEventArgs e)
        {
            LockScreen();

            var client = App.Current.Properties["Client"] as Client;

            if (Validate())
            {
                Login login = new Login();
                login.Username = TextBoxUsername.Text;
                login.Password = this.hasher.ComputeHash(PasswordBoxPassword.Password);

                var response = await client.SendAsync(login, RequestType.Login);

                if (response.ResponseType == ResponseType.Success)
                {
                    App.Current.Properties["LoggedUser"] = login.Username;
                    this.NavigationService.Navigate(new HomePage());
                }
                else
                {
                    UnlockScreen();
                    TextBlockErrorMessage.Visibility = Visibility.Visible;
                    TextBlockErrorMessage.Text = response.Message;
                }
            }
            else
            {
                UnlockScreen();
                TextBlockErrorMessage.Visibility = Visibility.Visible;
                TextBlockErrorMessage.Text = "Invalid format of username or pass";
            }
        }
 public void Login(Login login)
 {
     lock (users)
     {
         if (!users.ContainsKey(login.Username) ||
         users[login.Username].Password != login.Password)
         {
             throw new Exception("Username or password are wrong.");
         }
     }
 }