private void Logout_MenuItemClick(object sender, RoutedEventArgs e) { ClearAllData(); MainViewModel.Instance.Authorized = false; armtes = null; CheckARMTESHostAvailablity(); }
private async Task <bool> ShowLoginAndConnect() { armtes = null; SetAppStatus("Авторизация пользователя"); LoginDialogData loginResult = await this.ShowLoginAsync("Требуется авторизация", "Введите Ваши учётные данные", new LoginDialogSettings { ColorScheme = TMPDialogColorScheme.Accented }); if (loginResult == null) { await this.ShowErrorMessageAsync("Для работы с программой необходима авторизация!"); return(false); } else { if (String.IsNullOrEmpty(loginResult.Username)) { await this.ShowErrorMessageAsync("Укажите имя пользователя!"); return(false); } // пользователь ввел данные, пробуем аутентифицироваться await ShowProgress("Пожалуйста, подождите...", "Аутентификация пользователя..."); bool connected = false; string errorDescription = string.Empty; await Task.Factory.StartNew(() => { string url = String.Format("http://{0}", Properties.Settings.Default.SiteUrl); armtes = new ArmTESSiteWrapper(loginResult.Username, loginResult.Password, url); // проверяем код операции if (armtes.LastStatusCode == HttpStatusCode.Found) { if (armtes.IsAuthorized) { connected = true; } } else { errorDescription = this.GetNetErrorDescription(armtes.LastException); armtes = null; connected = false; } }); await CloseProgress(); // проверяем if (!connected) { // не авторизованы. Выясняем почему if (string.IsNullOrEmpty(errorDescription) == false) { // значит возникло исключение await this.ShowErrorMessageAsync( "Возникла ошибка!" + Environment.NewLine + "Описание: " + errorDescription + Environment.NewLine + Environment.NewLine + "Дальнейшая работа программы невозможна. Программа будет закрыта." + Environment.NewLine + "Устраните проблему и повторите позже."); Application.Current.Shutdown(); } else { // аторизация не удалась await this.ShowErrorMessageAsync("Вход не удался. Проверьте имя пользователя и пароль."); } return(false); } else { // авторизованы MainViewModel.Instance.Authorized = true; SetAppStatus(); return(true); } } }