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 делаем запрос на проверку.