Example #1
0
        private void Logout_MenuItemClick(object sender, RoutedEventArgs e)
        {
            ClearAllData();
            MainViewModel.Instance.Authorized = false;
            armtes = null;

            CheckARMTESHostAvailablity();
        }
Example #2
0
        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);
                }
            }
        }