c#winforms, ограничение доступа к форме

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;


namespace LOCAL_PROJECT
{
public partial class login : Form
{
    public login()
    {
        InitializeComponent();
    }
    MySqlConnection conn = new MySqlConnection();
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        
    }

    private void login_Load(object sender, EventArgs e)
    {
        //ПОДСКАЗКА ЛОГИН ПАРОЛЬ
        textBox1.Text = "Login";
        textBox1.ForeColor = Color.Gray;
        textBox1.TextAlign = HorizontalAlignment.Center;
        Font myfont = new Font("Times new Roman", 18);
        textBox1.Font = myfont;
        textBox2.Text = "Password";
        textBox2.ForeColor = Color.Gray;
        textBox2.TextAlign = HorizontalAlignment.Center;
        Font myfont1 = new Font("Times new Roman", 18);
        textBox2.Font = myfont1;

        etraplar etraplar22 = new etraplar();
        etraplar22.textuser.Text = textBox1.Text;

    }

    private void textBox1_Enter(object sender, EventArgs e)
    {
       textBox1.Text = null;
       textBox1.ForeColor = Color.Black;
       
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void textBox2_Enter(object sender, EventArgs e)
    {
        textBox2.Text = null;
        textBox2.ForeColor = Color.Black;
    }

   
    private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            string user = textBox1.Text;
            string pass = textBox2.Text;
           
            MySqlConnection conn = new MySqlConnection("server = 192.168.1.199; UserId = admin; Password = 12345; database = Employee");

            MySqlDataAdapter adapter = new MySqlDataAdapter("select count(*) FROM register where login = '" + textBox1.Text + "' and parol = '" + textBox2.Text + "'", conn);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            //  if (dt.Rows[0][0].ToString() == "1")
          //  {
                string dol = GetDoljnost("login", "parol");

                if (dol == "STA")
                {
                Form2 form22 = new Form2();
                    this.Hide();
                    form22.Show();
                }
               
                else
                {
                    MessageBox.Show("Error password", "alter", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
           // }
        }
        catch (Exception)
        {
            MessageBox.Show("password does not match");

        }

        

    }

    public string GetDoljnost(string login, string parol)
    {
        MySqlConnection conn = new MySqlConnection("server = 192.168.1.199; UserId = admin; Password = 12345; database = telecom");
        MySqlCommand cmd = new MySqlCommand("Select TOP 1 department FROM register WHERE login = '" + login + "',  AND parol = '" + parol + "'", conn);
        
        //    cmd.Parameters.AddWithValue("@login", login);
        //    cmd.Parameters.AddWithValue("@parol", parol);
        using (MySqlDataReader reader = cmd.ExecuteReader())
        {
            reader.Read();
            return reader.GetString(0);
        }
    }
}

}

пикча общего меню где должен быть ограничение button, тоесть по этим button-ам осуществляется переход формам.
введите сюда описание изображения

пикча таблицы базы данных пользователей введите сюда описание изображения


Ответы (1 шт):

Автор решения: Manul74
    Я бы делал так
            Допустим ваши 10 кнопок 10 отделов. 
            ROL_DEPT1....  ROL_DEPT10
            
            Таблица пользователей.
            
            Имя USERNAME   
            ...... остальные данные 
            например dbuser1 
            
            Таблица ролей  ROLS
            ROLNAME
            USERNAME
            
            Данные
            ROLNAME        USERNAME
            -----------    -----------
            ROL_DEPT1      dbuser1 
            
            
            При нажатии на кнопку1 проверяем есть ли в таблице ROLS запись при которой 
            ROLNAME  = USERNAME  
            а именно ROL_DEPT1 = dbuser1
            если есть пускаем
            если нет не пускаем.
            
        на кнопку 2 аналогично проверяем 
            ROL_DEPT2 = dbuser1

Если строго по задаче. Без таблицы ROLS.
Ну проверяйте SQL запросом на каждую кнопку есть ли человек в отделе  
для кнопки1 отдел1  ....... для кнопки10 отдел10

Добавлено У Вас в обработке нажатия на кнопку должно быть так примерно

 private void button2_Click(object sender, EventArgs e)
    {
         if accessPermision("login","dept") == true  {
            ...доступ разрешен делаем что нужно (вызываем нужный метод)
         {
          else  MessageBox.Show("В доступе отказано");
    }
 private void button3_Click(object sender, EventArgs e)
    {
         if accessPermision("login","dept3") == true  {
            ...доступ разрешен делаем что нужно (вызываем нужный метод)
         {
          else  MessageBox.Show("В доступе отказано");
    }

a в методе accessPermision делаем запрос на проверку.

→ Ссылка