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