Форма входа в C # - настройка глобальных переменных, доступных в программе - PullRequest
0 голосов
/ 17 мая 2018

Хорошо, так что мой фон в VBA-Msaccess (SQL Server Backend). Развивались около 6 лет. В последнее время наша компания сильно пострадала от ограничений MsAccess, поэтому решили начать разработку на C # и интегрироваться в нашу существующую серверную часть.

Я могу довольно легко решить эту проблему, но я просто хочу убедиться, что решаю ее самым идеальным способом.

Итак, у меня есть форма входа (формы Win), которая передает имя пользователя и пароль в класс входа. Класс входа в систему затем сравнивает информацию с данными на сервере SQL и возвращает значение true или false в зависимости от того, найдена ли соответствующая запись. Внутри класса я затем настроил свойства, чтобы они содержали информацию о пользователе, то есть его уровнях разрешений.

Проблема, с которой я столкнулся, заключается в том, что это работает нормально, потому что я создаю экземпляр объекта из login.cs, тогда эти уровни разрешений содержатся только внутри созданного объекта и недоступны после страницы входа в систему. Предположительно, мне нужно хранить эту информацию о разрешениях в статической или глобальной переменной, но я просто хочу знать наиболее оптимизированный и правильно сформированный способ сделать это!

C # Форма входа

public partial class frmLogin : Form
{
    public frmLogin()
    {
        InitializeComponent();
    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
        string userName = txtUsername.Text;
        string passWord = txtPassword.Text;

        Login login = new Login("","");

        string user = txtUsername.Text;
        string pass = txtPassword.Text;


        if (login.IsLoggedIn(user, pass))
        {
            MessageBox.Show(login.adminUser.ToString());
            frmMainMenu form = new frmMainMenu();
            this.Hide();
            form.ShowDialog();
        }
        else
        {
            MessageBox.Show("Log in failed please try again!");
        }


    }
}

Login.cs

public  class Login
{

    public  string UserName { get; set; }
    public  string PassWord { get; set; }
    private  bool aUser;
    private  bool tLeader;

    public  bool adminUser
    {
        get
            {
            return aUser;
            }
         set
            {
            aUser = value;
            }
    }

    public  bool teamLeader
    {
        get
        {
            return tLeader;
        }
        set
        {
            tLeader = value;
        }
    }

    public Login(string user, string pass)
    {
        this.UserName = user;
        this.PassWord = pass;
    }

    private void ClearText(string user, string pass)
    {
        user = string.Empty;
        pass = string.Empty;
    }

    public bool IsLoggedIn(string user, string pass)
    {
        if (string.IsNullOrEmpty(user))
        {
            MessageBox.Show("Enter the user name!");
            return false;
        }
        else
        {
            ConnectionStrings connstring = new ConnectionStrings();
            SqlConnection sqlConn = new SqlConnection(connstring.connNameUser);
            sqlConn.Open();
            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.Connection = sqlConn;
            sqlCmd.CommandType = System.Data.CommandType.Text;
            sqlCmd.CommandText = "SELECT username, password, door_order_admin, super_user from dbo.[user] WHERE username = @user and password = @pass";

            sqlCmd.Parameters.AddWithValue("@user", user);
            sqlCmd.Parameters.AddWithValue("@pass", pass);

            SqlDataReader reader = sqlCmd.ExecuteReader();

            if (reader.Read())
            {
                if (Convert.ToInt16(reader["door_order_admin"]) == 1)
                {
                    aUser = true;

                }
                else
                {
                    aUser = false;
                }

                if (Convert.ToInt16(reader["super_user"]) == 1)
                {
                    tLeader = true;
                }
                else
                {
                    tLeader = false;
                }


                return true;
            }
            else
            {
                ClearText(user, pass);
                return false;
            }


        }
    }

}

Любая помощь, указавшая меня в правильном направлении, будет очень цениться. Как я уже сказал, я хочу убедиться, что начинаю с правильной ноги, а не пишу кучу кода, только чтобы понять, что я мог бы сделать это намного лучше.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...