private async void Login()
        {
            _loginCounter++;
            bool   success = false;
            string error   = "";
            string pwd     = passwordBoxLogin.Password;

            progressBarLoading.IsIndeterminate = true;
            await Task.Run(() =>
            {
                var login = _ioSecurity.Login(pwd);
                if (login.Success)
                {
                    success = true;
                }
                else
                {
                    error = login.ErrorMessage;
                }
            });

            progressBarLoading.IsIndeterminate = false;
            if (!success)
            {
                await this.ShowMessageAsync(LanguageChanger.Instance["StartupView_CodeBehind_Error"], error);

                loginStatus.Text = $"({_loginCounter}/5)";
            }
            else
            {
                MainWindow root = new MainWindow();
                root.Show();
                this.Close();
            }
        }
        private void ChangePassword(Action action)
        {
            PasswordMasker masker = new PasswordMasker();
            string         key    = "";

            do
            {
                key = masker.Mask("Set password (length>5): ");
                if (String.IsNullOrEmpty(key) || key.Length <= 5)
                {
                    Write("Password length must be greater than 5 chars!");
                    ReadLine();
                    Clear();
                }
                else if (File.Exists(Global.MasterKeyLocation) && _iOSecurity.Login(key).Success)
                {
                    Write("You cannot input the same password!");
                    ReadLine();
                    Clear();
                }
                else
                {
                    break;
                }
            } while (true);
            WriteLine("Loading...");
            MainResult result = _iOSecurity.ChangeMasterKey(key);

            if (result.Success)
            {
                WriteLine("Password changed successfully");
            }
            else
            {
                WriteLine($"Error: `{result.ErrorMessage}`");
            }
            action();
        }
Exemplo n.º 3
0
        private async void UpdatePassword()
        {
            IOSecurity iOSecurity = new IOSecurity();
            //because we use non-UI thread to update password,
            //we must copy both passwords in variables.
            string oldPwd  = passwordBoxCurrentPassword.Password;
            string newPwd  = passwordBoxNewPassword.Password;
            string message = "";
            string title   = "";

            progressBarLoading.IsIndeterminate = true;
            await Task.Run(() =>
            {
                MainResult loginResult = iOSecurity.Login(oldPwd);
                if (loginResult.Success)
                {
                    MainResult changePasswordResult = iOSecurity.ChangeMasterKey(newPwd);
                    if (changePasswordResult.Success)
                    {
                        title   = LanguageChanger.Instance["SettingsView_CodeBehind_Success"];
                        message = LanguageChanger.Instance["SettingsView_CodeBehind_Code7"];
                    }
                    else
                    {
                        title   = LanguageChanger.Instance["SettingsView_CodeBehind_Error"];
                        message = changePasswordResult.ErrorMessage;
                    }
                }
                else
                {
                    title   = LanguageChanger.Instance["SettingsView_CodeBehind_Error"];
                    message = LanguageChanger.Instance["SettingsView_CodeBehind_Code8"];
                }
            });

            progressBarLoading.IsIndeterminate = false;
            await this.ShowMessageAsync(title, message);

            passwordBoxCurrentPassword.Password = passwordBoxNewPassword.Password = string.Empty;
        }