/// <summary> /// Method invoked when the user clicks on Accedi. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Button_Click(object sender, RoutedEventArgs e) { StatusProgressBar.Opacity = 1; UsernameTextBox.IsEnabled = false; PasswordPasswordBox.IsEnabled = false; LoginButton.IsEnabled = false; bool authenticated; try { if (ApplicationData.Current.LocalSettings.Values.ContainsKey("HelloAuthenticationEnabled")) { if (await SecurityExtensions.Authenticate()) { authenticated = await Singleton <ClientExtensions> .Instance.AuthenticateAndInitDataAsync(new UserCredentials(UsernameTextBox.Text, PasswordPasswordBox.Password), true); } else { PasswordPasswordBox.Password = ""; UsernameTextBox.IsEnabled = true; PasswordPasswordBox.IsEnabled = true; LoginButton.IsEnabled = true; StatusProgressBar.Opacity = 0; return; } } else { authenticated = await Singleton <ClientExtensions> .Instance.AuthenticateAndInitDataAsync(new UserCredentials(UsernameTextBox.Text, PasswordPasswordBox.Password), true); } SecurityExtensions.AddCredentials(UsernameTextBox.Text, PasswordPasswordBox.Password); BackgroundTaskExtensions.Register(120); } catch (Exception ex) { Analytics.TrackEvent(ex.Message, new Dictionary <string, string> { { "exception", ex.ToString() } }); AppNotification.IsOpen = true; AppNotification.Title = "Attention".GetLocalized(); if (ex is UnauthorizedUserException) { AppNotification.Subtitle = ex.Message; UsernameTextBox.IsEnabled = true; PasswordPasswordBox.IsEnabled = true; LoginButton.IsEnabled = true; StatusProgressBar.Opacity = 0; return; } else if (ex is HttpRequestException) { AppNotification.Subtitle = "HttpRequestException".GetLocalized(); UsernameTextBox.IsEnabled = true; PasswordPasswordBox.IsEnabled = true; LoginButton.IsEnabled = true; StatusProgressBar.Opacity = 0; return; } else { AppNotification.Subtitle = "UnhandledException".GetLocalized(); } } NavigationService.Navigate(typeof(MainPage), new EntranceNavigationTransitionInfo()); navigationView.SelectedItem = navigationView.MenuItems[0]; IsBackEnabled = false; NavigationService.Frame.BackStack.Clear(); Loader.IsLoading = false; _avoidCheck = false; UsernameTextBox.IsEnabled = true; PasswordPasswordBox.IsEnabled = true; LoginButton.IsEnabled = true; StatusProgressBar.Opacity = 0; }
/// <summary> /// Method invoked when the user clicks on Accedi. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Button_Click(object sender, RoutedEventArgs e) { StatusProgressBar.Opacity = 1; UsernameTextBox.IsEnabled = false; PasswordPasswordBox.IsEnabled = false; LoginButton.IsEnabled = false; try { if (ApplicationData.Current.LocalSettings.Values.ContainsKey("HelloAuthenticationEnabled")) { switch (await UserConsentVerifier.RequestVerificationAsync(SecurityExtensions.MESSAGE)) { case UserConsentVerificationResult.Verified: { await Singleton <ClientExtensions> .Instance.Authenticate(UsernameTextBox.Text, PasswordPasswordBox.Password); break; } case UserConsentVerificationResult.DeviceNotPresent: { SecurityExtensions.RemoveCredentials(); await new MessageDialog("L'autenticazione sicura tramite Windows Hello è stata disabilitata a causa della mancanza di opzioni di accesso valide. Per poter riabilitare questa funzione è necessario specificare un metodo di autenticazione valido (PIN, impronta digitale o scansione dell'iride) nelle impostazioni di Windows.\n\nPer motivi di sicurezza le credenziali del tuo account iliad dovranno essere inserite manualmente per questa sessione.", "Attenzione").ShowAsync(); break; } default: { Application.Current.Exit(); break; } } } else { await Singleton <ClientExtensions> .Instance.Authenticate(UsernameTextBox.Text, PasswordPasswordBox.Password); } SessionTimeout.Tick += (s, o) => { Singleton <ClientExtensions> .Instance.Authenticate(UsernameTextBox.Text, PasswordPasswordBox.Password); // Never await this method! }; SecurityExtensions.AddCredentials(UsernameTextBox.Text, PasswordPasswordBox.Password); AppNotification.IsOpen = false; NavigationService.Navigate(typeof(MainPage), new EntranceNavigationTransitionInfo()); navigationView.SelectedItem = navigationView.MenuItems[0]; IsBackEnabled = false; NavigationService.Frame.BackStack.Clear(); Loader.IsLoading = false; SessionTimeout.Start(); } catch (Exception ex) { HandleExceptionNotification(ex); } _avoidCheck = false; UsernameTextBox.IsEnabled = true; PasswordPasswordBox.IsEnabled = true; LoginButton.IsEnabled = true; StatusProgressBar.Opacity = 0; }