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);
- }
- }
- }
|