Public Class LoginForm

    ' TODO: 제공된 사용자 이름과 암호를 사용하여 사용자 지정 인증을 수행하는 코드를 삽입합니다
    ' (https://go.microsoft.com/fwlink/?LinkId=35339 참조).  
    ' 그러면 사용자 지정 보안 주체가 현재 스레드의 보안 주체에 다음과 같이 첨부될 수 있습니다. 
    '     My.User.CurrentPrincipal = CustomPrincipal
    ' 여기서 CustomPrincipal은 인증을 수행하는 데 사용되는 IPrincipal이 구현된 것입니다. 
    ' 나중에 My.User는 CustomPrincipal 개체에 캡슐화된 사용자 이름, 표시 이름 등의
    ' ID 정보를 반환합니다.
    Public Structure UserData
        Public UserID As String
        Public UserPW As String
        Public IDType As String
        Public ExtPermition As String
        Public NowState As Int16
    End Structure
    Public UserInfo As UserData
    Private Const InfoTypeNumber As String = "10"

    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Try
            With UserInfo
                .UserID = String.Empty
                .UserPW = String.Empty
                .IDType = String.Empty
                .ExtPermition = String.Empty
            End With

            Dim DBCmd As String = "SELECT UserID,UserPW,IDType,ExtPermition,NowState FROM " & LoginDB & " WHERE UserID = '" & txbUserID.Text & "'"
            If DBQueryReader(DBCmd) Then
                UserInfo.UserID = sqlDataQuery(0)
                UserInfo.UserPW = sqlDataQuery(1)
                UserInfo.IDType = sqlDataQuery(2)
                UserInfo.ExtPermition = sqlDataQuery(3)
                UserInfo.NowState = sqlDataQuery(4)

                If UserInfo.UserPW = txbUserPW.Text Then
                    If UserInfo.IDType = InfoTypeNumber Then
                        If UserInfo.NowState <> 1 Then

                            If NowStateUpdate() Then
                                MsgBox("로그인 도중 오류가 발생하였습니다.", vbCritical)
                                GoTo FailFunc
                            End If

                            MainForm.Show()
                            Me.Hide()
                            Exit Sub

                        Else
                            MsgBox("현재 접속중인 계정입니다.", vbExclamation)
                            GoTo FailFunc
                        End If
                    Else
                        GoTo loginFail
                    End If
                Else
                    GoTo loginFail
                End If
            Else
                GoTo loginFail
            End If
        Catch ex As Exception
            GoTo loginFail
        End Try

loginFail:
        MsgBox("아이디 및 비밀번호가 잘못되었습니다.", vbExclamation)
FailFunc:
        txbUserID.Text = String.Empty
        txbUserPW.Text = String.Empty
        txbUserID.Focus()
    End Sub

    Private Function NowStateUpdate() As Boolean
        Dim DBCmd As String = "UPDATE " & LoginDB & " SET NowState = '1' WHERE UserID = '" & txbUserID.Text & "'"
        If DBCommand(DBCmd) Then
            Return False
        Else
            Return True
        End If
    End Function

    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
        Me.Close()
    End Sub

    Private Sub LoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
End Class
