Imports Newtonsoft.Json.Linq

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

    Private apiLoginURL As String = "auths/token"

    Private idAPI As String = "userid"
    Private pwAPI As String = "password"

    Private managerID As String = "jomtmanager"
    Private managerPW As String = "jomt0701##"
    Public loginMode As Boolean  '' true = mes / false = admin
    Public runSwitch As Boolean

    Public loginUse As Boolean = False

    Private Sub loginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Text = mainForm.projectName & mainForm.projectVer & projectForm
        If loginMode = True Then
            mesLoginForm()
        Else
            adminLoginForm()
        End If
        runSwitch = False
        txbUserid.Focus()
    End Sub

    Private Sub mesLoginForm()
        lbUserid.Text = "MES ID :"
        lbUserpw.Text = "MES PW :"

    End Sub

    Private Sub adminLoginForm()
        lbUserid.Text = "Manager ID :"
        lbUserpw.Text = "Manager PW :"
    End Sub

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

        If txbUserid.Text.Replace(" ", "") = "" Then
            MsgBox("아이디를 입력하여 주십시오.", vbExclamation)
            txbUserid.Focus()
            Exit Sub
        End If

        If txbUserpw.Text.Replace(" ", "") = "" Then
            MsgBox("비밀번호를 입력하여 주십시오.", vbExclamation)
            txbUserpw.Focus()
            Exit Sub
        End If

        useUserID = txbUserid.Text
        Dim userPW As String = txbUserpw.Text


        If loginMode = True Then

            Dim jsonLogin As String = "{""" & idAPI & """:""" & useUserID & """,""" & pwAPI & """:""" & userPW & """}"

            jsonLogin = apiRequest_Post(jsonLogin, apiLoginURL)

            If jsonLogin = "-1" Then
                MsgBox("아이디 혹은 비밀번호를 잘못 입력하였습니다.", vbExclamation)
                txbUserid.Focus()
                Exit Sub
            End If

            Dim jQuery As JObject = JObject.Parse(jsonLogin)

            If jQuery.SelectToken("code").ToString = "SUCCESS" Then
                jsonLogin = jQuery.SelectToken("data").ToString
                jQuery = JObject.Parse(jsonLogin)
                userAccess = jQuery.SelectToken("accessToken").ToString

                mainForm.ckbAPIuse.Checked = True
                mainForm.lbMESid.Text = useUserID
                mainForm.btnLoginTest.Text = "로그아웃"
                loginUse = True

                Me.DialogResult = DialogResult.OK
                Me.Close()

            Else
                MsgBox("로그인에 실패하였습니다. 입력된 정보를 확인하여 주십시오.", vbCritical)
                txbUserid.Focus()
                Exit Sub
            End If
        Else
            If useUserID = managerID And userPW = managerPW Then
                runSwitch = True
            Else
                MsgBox("아이디 혹은 비밀번호를 잘못 입력하였습니다.", vbExclamation)
                txbUserid.Focus()
                Exit Sub
            End If
        End If

    End Sub

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

    Private Sub txbUserid_KeyDown(ByVal sender As Object, e As KeyEventArgs) Handles txbUserid.KeyDown, txbUserpw.KeyDown
        If e.KeyCode = Keys.Return Then
            OK_Click(sender, New EventArgs)
        End If
    End Sub
End Class
