using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using DLLPass; namespace СУБД_Швейная_фабрика { public partial class FormAuthorization : Form { public FormAuthorization() { InitializeComponent(); } // public static string TxtCon = @"Data Source=213.155.192.79,3002;Initial Catalog=fab2021;Persist Security Info=True;User ID=fab2021;Password=fab2021"; /// /// Генерация капчи из 4-х символов /// /// Возвращает сгенерированную капчу string GetCapcha() { string TxtLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string TxtDigit = "0123456789"; string t1 = TxtLetter + TxtDigit; string capcha = ""; bool FlagDigit = false; Random rnd = new Random(); for(int i = 1; i <= 3; i++) { // взять символ из строки с символами для капчи char sim = t1[rnd.Next(t1.Length)]; // если символ - цифра, запомнить это if (char.IsDigit(sim)) FlagDigit = true; capcha += sim; // добавить символ к капче } if (FlagDigit == false) capcha += TxtDigit[rnd.Next(TxtDigit.Length)]; else capcha += TxtLetter[rnd.Next(TxtLetter.Length)]; return capcha; } private void FormAuthorization_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'fab2021DataSet1.Users' table. You can move, or remove it, as needed. this.usersTableAdapter.Fill(this.fab2021DataSet1.Users); CmbRole.SelectedIndex = 0; LblCapcha.Text = GetCapcha(); } /// /// Авторизация пользователя /// private void BtnLogin_Click(object sender, EventArgs e) { //if (TbxCapcha.Text.ToUpper() != LblCapcha.Text) //{ // MessageBox.Show("Символы капчи введены неверно!\nПопробуйте еще раз."); // LblCapcha.Text = GetCapcha(); // TbxCapcha.Clear(); // return; //} // роль пользователя (считывается из ComboBox) string role = CmbRole.SelectedItem.ToString(); // фильтр для таблицы Пользователи string TxtFilter = String.Format("login = '{0}' and pass = '{1}' and role = '{2}'", TbxLogin.Text, TbxPass.Text, role); // логин для передачи на рабочее место string TxtFilterForUser = string.Format("login = '{0}'", TbxLogin.Text); BsUsers.Filter = TxtFilter; // включить фильтр if (BsUsers.Count == 0) { MessageBox.Show(String.Format("Нет пользователя '{0}' с указанным логином и паролем!", role)); return; } TbxLogin.Clear(); TbxPass.Clear(); // очистить поля this.Visible = false; // скрыть форму для авторизации if (role == "заказчик") { // создать форму для заказчика FormZakazchik frm = new FormZakazchik(); // отфильтровать авторизовавшегося пользователя frm.BsUsers.Filter = TxtFilterForUser; frm.ShowDialog(); } if (role == "менеджер") { // создать форму для менеджера FormManager frm = new FormManager(); // отфильтровать авторизовавшегося пользователя frm.BsUsers.Filter = TxtFilterForUser; frm.ShowDialog(); } if (role == "кладовщик") { // создать форму для кладовщика FormKladovschik frm = new FormKladovschik(); // отфильтровать авторизовавшегося пользователя frm.BsUsers.Filter = TxtFilterForUser; frm.ShowDialog(); } this.Visible = true; // показать форму для авторизации // загрузить обновленные записи из БД this.usersTableAdapter.Fill(this.fab2021DataSet1.Users); TbxLogin.Focus(); TbxCapcha.Clear(); LblCapcha.Text = GetCapcha(); } /// /// Скрыть/показать пароль /// private void CbxShowPass_CheckedChanged(object sender, EventArgs e) { TbxPass.UseSystemPasswordChar = !TbxPass.UseSystemPasswordChar; } /// /// Изображение случайных линий поверх капчи /// private void LblCapcha_Paint(object sender, PaintEventArgs e) { // массив цветов Color[] colors = { Color.Green, Color.Black, Color.Yellow, Color.White }; Random rnd = new Random(); // изобразить от 5 до 10 линий for (int i = 1; i <= rnd.Next(5, 11); i++) { // координаты начала и конца отрезка int x1 = rnd.Next(LblCapcha.Width); int y1 = rnd.Next(LblCapcha.Height); int x2 = rnd.Next(LblCapcha.Width); int y2 = rnd.Next(LblCapcha.Height); // случайный цвет из массива цветов Color col = colors[rnd.Next(colors.Length)]; // нарисовать линию на метке Label e.Graphics.DrawLine(new Pen(col), x1, y1, x2, y2); } } private void LblReg_Click(object sender, EventArgs e) { FormReg frm = new FormReg(); if (frm.ShowDialog() == DialogResult.OK) this.usersTableAdapter.Fill(this.fab2021DataSet1.Users); } } }