Проблема алгоритма входа в программу

125
21 ноября 2019, 09:50

Помогите пожалуйста, не могу понять принцип входа в данном окне, как мне залогиниться ?, Связь с сервером и базой данных установлен, откуда брать или задать начальный логин и пароль, без логина и пароля я не зайду в основной функционал программы, в нем я уже смогу создавать нового пользователя.

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Dekanat.Authorization;
using Dekanat.Serialization;
namespace Dekanat
{
       /// <summary>
       /// Логика взаимодействия для AuthorizationWindow.xaml
       /// </summary>
public partial class AuthorizationWindow : Window
{
    private readonly string _userFilePath
        = string.Format("{0}\\user.txt", Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
    private readonly SqlConnectionStringBuilder _connectionStringBuilder = new SqlConnectionStringBuilder()
    {
        DataSource = @"DESKTOP-VDBN6O7\SQLEXPRESS",
        InitialCatalog = "dbStudentsFinal",
        IntegratedSecurity = true
    };
    public AuthorizationWindow()
    {
        InitializeComponent();
        TestSqlServerConnectionAsync(_connectionStringBuilder.ConnectionString);
        AutoAuthorization();
        CloseButton.Click += CloseButton_Click;
        EnterButton.Click += EnterButton_Click;
        Login.GotFocus += HideErrorBlock;
        Password.GotFocus += HideErrorBlock;
    }
    private void HideErrorBlock(object sender, EventArgs e)
    {
        ErrorBlock.Visibility = Visibility.Hidden;
    }
    private void CloseButton_Click(object sender, RoutedEventArgs e)
    {
        Close();
    }
    private void EnterButton_Click(object sender, RoutedEventArgs e)
    {
        _connectionStringBuilder.IntegratedSecurity = false;
        try
        {
            MainWindow mainWindow;
            var password = Password.SecurePassword;
            password.MakeReadOnly();
            var credential = new SqlCredential(Login.Text, password);

            using (var connection = new SqlConnection(_connectionStringBuilder.ConnectionString, credential))
            {
                connection.Open();
                mainWindow = new MainWindow(connection.ConnectionString, credential);
            }

            if (RememberMeCheckBox.IsChecked.Value)
            {
                var userInformation = new UserInformation
                {
                    Login = Base64Converter.ToBase64(Login.Text),
                    Password = Base64Converter.ToBase64(Password.Password)
                };
                DataSerializer.Serialize(_userFilePath, userInformation);
            }
            else
            {
                File.Delete(_userFilePath);
            }
            mainWindow.Show();
            Close();
        }
        catch(SqlException ex)
        {
            if (ex.Number == 18456) //Login failed for user
            {
                Login.Text = "";
                Password.Password = "";
                ErrorMessage.Text = "Неправильний логін або пароль!";
                ErrorBlock.Visibility = Visibility.Visible;
            }
            else
            {
                throw;
            }
        }
    }
    private void AutoAuthorization()
    {
        if (File.Exists(_userFilePath))
        {
            var userInformation = (UserInformation) DataSerializer.Deserialize(_userFilePath);
            Login.Text = Base64Converter.FromBase64(userInformation.Login);
            Password.Password = Base64Converter.FromBase64(userInformation.Password);
            RememberMeCheckBox.IsChecked = true;
        }
    }
    private bool GetSqlServerConnectionStatus(string connectionString)
    {
        try
        {
            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();
            }
            return true;
        }
        catch (SqlException)
        {
            return false;
        }
    }
    private async void TestSqlServerConnectionAsync(string connectionString)
    {
        var sqlServerConnectionStatus = await Task.Run(() => GetSqlServerConnectionStatus(connectionString));
        if (sqlServerConnectionStatus)
        {
            ConnectionStatus.Fill = Brushes.Lime;
            EnterButton.IsEnabled = true;
        }
        else
        {
            ConnectionStatus.Fill = Brushes.Red;
        }
       }
   }
}
READ ALSO
Угадай число (оценка программы)

Угадай число (оценка программы)

Всем приветПродолжаю изучать C#

140
GridView из файла

GridView из файла

Такая проблема есть тестовый проект на yii2И нужно из 2 xml файлов собрать массив и вывести в gridView, сам массив собрать не особо сложно проблема...

135