| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | 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";        /// <summary>        /// Генерация капчи из 4-х символов        /// </summary>        /// <returns>Возвращает сгенерированную капчу</returns>        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();        }        /// <summary>        /// Авторизация пользователя        /// </summary>        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();        }        /// <summary>        /// Скрыть/показать пароль        /// </summary>        private void CbxShowPass_CheckedChanged(object sender, EventArgs e)        {            TbxPass.UseSystemPasswordChar = !TbxPass.UseSystemPasswordChar;        }        /// <summary>        /// Изображение случайных линий поверх капчи        /// </summary>        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);        }    }}
 |