이번 시간에는 로그인 폼을 만들고 로그인한 권한에 따라 버튼에 접근하는 권한을 제어해보겠습니다.
이번 내용부터는 추가적인 사항이라 간단하게 정리만 넘어가겠습니다.
다음과 같이 로그인폼을 제작합니다.
직책은 manager와 employee로 구분하여 권한을 다르게 주겠습니다.
그리고 회원 테이블을 생성합니다.
로그인은 아이디, 비밀번호를 입력하고, 직책을 선택하여 정보가 DB에 존재할 때 로그인하도록 하였습니다.
public partial class Login : Form
{
//구분 값을 Form1으로 전송을 위한 chk
public static string chk;
public Login()
{
InitializeComponent();
}
private void Login_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string myConnection = "Server=localhost;Port=3306;Database=pos_data;Uid=root;Pwd=****";
MySqlConnection myConn = new MySqlConnection(myConnection);
//각각의 항목을 db와 대조
MySqlCommand selectCommand = new MySqlCommand("select * from pos_data.pos_login_tb where id='" + this.textBox1.Text + "' and password='" + this.textBox2.Text + "' and position='" + this.comboBox1.Text + "'", myConn);
MySqlDataReader myReader;
myConn.Open();
myReader = selectCommand.ExecuteReader();
int count = 0;
while (myReader.Read())
{
count = count + 1;
}
if (count == 1)
{
//포지션 값을 0,1 로 나타내어 매니져 여부 판단
if (comboBox1.Text == "manager")
{
chk = "0";
}
else
{
chk = "1";
}
MessageBox.Show("로그인 되었습니다.");
this.Visible = false;
Form1 showForm1 = new Form1();
showForm1.ShowDialog();
}
else if (count > 1)
{
MessageBox.Show("중복된 유저가 존재합니다.");
}
else
{
MessageBox.Show("아이디, 비밀번호나 직책이 일치하지 않습니다.");
}
myConn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//textBox3.Text = chk;
}
//프로그램 종료
private void button2_Click(object sender, EventArgs e)
{
this.Close();
Application.Exit();
}
//계정 생성
private void button3_Click(object sender, EventArgs e)
{
this.Visible = false;
Account dlg = new Account();
dlg.ShowDialog();
}
}
다음과 같이 로그인 폼을 구성하고, 계정 생성의 경우 다음과 같이 구성합니다.
public partial class Account : Form
{
public Account()
{
InitializeComponent();
}
private void Account_Load(object sender, EventArgs e)
{
}
//계정생성
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || comboBox1.Text == "")
{
MessageBox.Show("항목을 정확히 입력해주세요");
textBox1.Clear();
textBox2.Clear();
}
else
{
string constring = "Server=localhost;Port=3306;Database=pos_data;Uid=root;Pwd=*****";
string Query = "INSERT INTO pos_data.pos_login_tb (id,password,name,position) value ('" + this.textBox1.Text + "','" + this.textBox2.Text + "','" + this.textBox3.Text + "','" + this.comboBox1.Text + "')";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDataBase);
MySqlDataReader myReader;
try
{
conDataBase.Open();
myReader = cmdDatabase.ExecuteReader();
MessageBox.Show("계정 생성 완료");
while (myReader.Read())
{
}
this.Visible = false;
Login showForm1 = new Login();
showForm1.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show("항목을 정확히 입력해주세요");
MessageBox.Show(ex.Message);
}
}
}
//취소
private void button2_Click(object sender, EventArgs e)
{
this.Visible = false;
Login showForm1 = new Login();
showForm1.ShowDialog();
}
}
물품 추가와 유사합니다.
이제 상품 판매(Form1)로 로그인 정보를 전송하고, 전송한 데이터 중 매니저만
재고현황과 직원목록 버튼이 보이게 하겠습니다.
그리드 뷰 위에 빈칸을 두어 매니저와 사원을 구분해보겠습니다.
public Form1()
{
InitializeComponent();
.
.
.
//Login 폼에서 public static string chk을 설정하였고,
//0을 메니저로 설정함
if(Login.chk == "0")
{
textBox4.Text = "매니저님 반갑습니다.";
}
else
{
textBox4.Text = "사원님 반갑습니다.";
}
}
다음으로 매니저만 버튼이 보이게 만들겠습니다.
public Form1()
{
InitializeComponent();
.
.
.
//Login 폼에서 public static string chk을 설정하였고,
//0을 메니져로 설정함
if(Login.chk == "0")
{
textBox4.Text = "매니저님 반갑습니다.";
button5.Visible = true;
button6.Visible = true;
}
else
{
textBox4.Text = "사원님 반갑습니다.";
button5.Visible = false;
button6.Visible = false;
}
}
로그인 계정에 따라 버튼 유무를 확인할 수 있습니다.
'C# > C#, mysql POS 만들기' 카테고리의 다른 글
C# WinForms / mysql으로 포스기 만들기 (6) (0) | 2020.11.13 |
---|---|
C# WinForms / mysql으로 포스기 만들기 (5) (0) | 2020.11.12 |
C# WinForms / mysql으로 포스기 만들기 (4) (0) | 2020.11.12 |
C# WinForms / mysql으로 포스기 만들기 (3) (0) | 2020.11.11 |
C# WinForms / mysql으로 포스기 만들기 (2) (0) | 2020.11.11 |