public void BeforeEach()
        {
            _totpMock   = new Mock <ITOTP>();
            _hasingMock = new Mock <IHasing>();

            _sut = new UserCredentialService(_totpMock.Object, _hasingMock.Object);
        }
Exemplo n.º 2
0
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var savedCredentials = UserCredentialService.GetStoredUserCredentials();

            if (LegacyBootstrapper.UserConfig?.LoginInfo.AutoLogin == true && savedCredentials != null)
            {
                NavigationFrame.IsEnabled = false;
                try
                {
                    var response = await LegacyBootstrapper.WebSocketApi.DoLogin(savedCredentials.Email, savedCredentials.Password);

                    if (response.Result)
                    {
                        GameService.SetCredentials(savedCredentials.Email, savedCredentials.Password);
                        LegacyBootstrapper.CurrentUser = response.User;
                        NavigationFrame.Navigate(new Uri("Pages/OverviewPage.xaml", UriKind.Relative));
                    }
                    else
                    {
                        GenericMessageDialog.Show(Properties.Resources.AutoLoginFailed, DialogIcon.Error);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error(ex, ex.Message);
                    GenericMessageDialog.Show(Properties.Resources.AutoLoginError, DialogIcon.Error);
                }

                NavigationFrame.IsEnabled = true;
            }
        }
Exemplo n.º 3
0
        public LoginPage()
        {
            InitializeComponent();

            var storedCredentials = UserCredentialService.GetStoredUserCredentials();

            if (LegacyBootstrapper.UserConfig.LoginInfo.RememberMe == true && storedCredentials != null)
            {
                _logger.Information("User has already stored credentials before");
                EmailInputField.InputContent = storedCredentials.Email;
                PasswordInputField.PasswordInputBox.Password = "******";
                RememberPasswordOption.IsChecked             = true;
                AutoLoginOption.IsEnabled = true;
            }
        }
        private void OnLogoutClick(object sender, RoutedEventArgs e)
        {
            UserCredentialService.ClearVault();

            try
            {
                LegacyBootstrapper.WebSocketApi?.Disconnect();
            }
            catch
            {
                // TODO: Log exception here
            }

            //Save UserConfig
            if (LegacyBootstrapper.UserConfig?.LoginInfo != null)
            {
                LegacyBootstrapper.UserConfig.LoginInfo.AutoLogin = false;
                LegacyBootstrapper.UserConfig.Save(LegacyBootstrapper.UserConfigFilePath);
            }

            NavigationService.Navigate(new Uri("Pages/MainMenuPage.xaml", UriKind.Relative));
        }
Exemplo n.º 5
0
        private async void PerformLogin(object sender, RoutedEventArgs e)
        {
            LoginButton.IsEnabled = false;
            try
            {
                var         storedCredentials = UserCredentialService.GetStoredUserCredentials();
                LoginResult loginResult;

                _logger.Information("Stored credentials is null: {@IsNull}", (storedCredentials == null));

                if (storedCredentials != null && (RememberPasswordOption.IsChecked ?? false))
                {
                    _logger.Information("Performing login with stored credentials");
                    loginResult = await PerformLogin(storedCredentials.Email, storedCredentials.Password);
                }
                else
                {
                    _logger.Information("Performing login with entered credentials");

                    var password = PasswordInputField.PasswordInputBox.SecurePassword;
                    var email    = EmailInputField.InputContent;

                    if (password.Length < 8)
                    {
                        GenericMessageDialog.Show($"{Properties.Resources.LoginTooShortPassword}", DialogIcon.Error, DialogOptions.Ok);
                        return;
                    }

                    if (password.Length > 32)
                    {
                        GenericMessageDialog.Show($"{Properties.Resources.LoginTooLongPassword}", DialogIcon.Error, DialogOptions.Ok);
                        return;
                    }

                    if (!Misc.IsValidEmailAdress(email))
                    {
                        GenericMessageDialog.Show($"{Properties.Resources.LoginBadEmail}", DialogIcon.Error, DialogOptions.Ok);
                        return;
                    }

                    loginResult = await PerformLogin(email, password);
                }

                if (loginResult.Result)
                {
                    _logger.Information("Login succeeded");
                    LegacyBootstrapper.UserConfig.LoginInfo.RememberMe = RememberPasswordOption.IsChecked ?? false;
                    LegacyBootstrapper.UserConfig.LoginInfo.AutoLogin  = AutoLoginOption.IsChecked ?? false;

                    if (LegacyBootstrapper.UserConfig.LoginInfo.RememberMe && storedCredentials == null)
                    {
                        _logger.Information("User has selected to store new credentials");
                        UserCredentialService.StoreCredential(EmailInputField.InputContent, PasswordInputField.PasswordInputBox.SecurePassword);
                    }

                    LegacyBootstrapper.UserConfig.Save(LegacyBootstrapper.UserConfigFilePath);

                    LegacyBootstrapper.CurrentUser = loginResult.User;

                    NavigationService.Navigate(new Uri("Pages/OverviewPage.xaml", UriKind.Relative));
                }
                else
                {
                    _logger.Information("Failed signing in because {@Message}", loginResult.Message);
                    GenericMessageDialog.Show($"{Properties.Resources.LoginErrorMessage} {loginResult.Message}", DialogIcon.Error, DialogOptions.Ok);
                    PasswordInputField.PasswordInputBox.Clear();
                    UserCredentialService.ClearVault();
                }
            }
            catch (Exception ex)
            {
                _logger.Error(ex, ex.Message);
                GenericMessageDialog.Show(Properties.Resources.GenericUnexpectedErrorMessage, DialogIcon.Error, DialogOptions.Ok);
                PasswordInputField.PasswordInputBox.Clear();
                UserCredentialService.ClearVault();
            }
            finally
            {
                LoginButton.IsEnabled = true;
            }
        }