No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Login.vb 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. Option Explicit On
  2. Imports System.IO
  3. Imports System.Net
  4. Public Class Login
  5. ReadOnly screenWidth = Screen.PrimaryScreen.Bounds.Width
  6. ReadOnly screenHeight = Screen.PrimaryScreen.Bounds.Height
  7. ' TODO: 插入程式碼,利用提供的使用者名稱和密碼執行自訂驗證
  8. ' (請參閱 http://go.microsoft.com/fwlink/?LinkId=35339)。
  9. ' 如此便可將自訂主體附加到目前執行緒的主體,如下所示:
  10. ' My.User.CurrentPrincipal = CustomPrincipal
  11. ' 其中 CustomPrincipal 是用來執行驗證的 IPrincipal 實作。
  12. ' 接著,My.User 便會傳回封裝在 CustomPrincipal 物件中的識別資訊,
  13. ' 例如使用者名稱、顯示名稱等。
  14. ReadOnly ds2 As New DataSet
  15. Public Property Credentials As ICredentials
  16. Public Property Target1 As String
  17. Private Property MYSQL1 As String
  18. Dim MACKK As String 'MAC碼
  19. Dim diskId As String '數字ID
  20. Dim diskSerialNumber As String '硬碟序列
  21. Dim diskModel As String '磁盘型態
  22. Dim FFGG As Integer : Dim GGHH As Integer
  23. Dim HostName As String
  24. Dim IPAdress As IPAddress
  25. Dim MYIP As String
  26. Private Sub Set_清單1()
  27. FDT_dgv.DataSource = Nothing : ds2.Clear()
  28. FDT_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  29. FDT_dgv.ColumnHeadersHeight = 25
  30. FDT_dgv.AllowUserToAddRows = False
  31. ConnOpen()
  32. SQL1 = "SELECT 資料夾名稱, 指定 FROM FTP資料夾管理"
  33. CmdSet_For_DGV() : da.Fill(ds2) : FDT_dgv.DataSource = ds2.Tables(0) : conn.Close()
  34. End Sub
  35. <Obsolete>
  36. Private Sub Login_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  37. '-----------------------刪除自動更新項目-----------------------------------------------------------------------------------------------------------------------------------------------
  38. Dim Str As String = Application.StartupPath
  39. If File.Exists(Str + "\SYS-UPDATE.exe") Then : File.Delete(Str + "\SYS-UPDATE.exe") : End If
  40. '-----------------------控件基本設定-----------------------------------------------------------------------------------------------------------------------------------------------
  41. CheckBox1.Enabled = False : CheckBox3.Checked = True : CheckBox3.Enabled = False : CheckBox1.Enabled = False
  42. TextBox4.Text = "1"
  43. Label1.Text = "執行檔版本號 : " & 版本
  44. 網段.ShowDialog()
  45. If 登入判斷 = True And 內外網 = False Then
  46. ComboBox1.Text = "工巧明內網"
  47. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  48. ElseIf 登入判斷 = False And 內外網 = False Then
  49. ComboBox1.Text = "工巧明內網"
  50. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  51. ElseIf 登入判斷 = True And 內外網 = True Then
  52. ComboBox1.Text = "工巧明外網"
  53. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  54. End If
  55. '-----------------------取得本機IP-----------------------------------------------------------------------------------------------------------------------------------------------
  56. HostName = Dns.GetHostName '获得本机的机器名
  57. IPAdress = Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP
  58. MYIP = IPAdress.ToString
  59. '-----------------------IP比對----------------------------------------------------------------------------------------------------------------------------------------------------
  60. If Strings.Left(MYIP, 10) = "192.168.12" Or Strings.Left(MYIP, 7) = "10.0.0." Then
  61. ComboBox1.Text = "工巧明內網"
  62. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  63. Else
  64. ComboBox1.Text = "工巧明外網"
  65. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  66. End If
  67. End Sub
  68. <Obsolete>
  69. Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
  70. '-----------------------確認登入伺服器位置-----------------------------------------------------------------------------------------------------------------------------------------
  71. If ComboBox1.Text = "工巧明內網" Then
  72. HostName = Dns.GetHostName '获得本机的机器名
  73. IPAdress = Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP
  74. MYIP = IPAdress.ToString
  75. If Strings.Left(MYIP, 10) = "192.168.12" Or Strings.Left(MYIP, 7) = "10.0.0." Then
  76. 登入人IP = "192.168.12.127"
  77. 登入()
  78. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  79. End If
  80. ElseIf ComboBox1.Text = "工巧明外網" Then
  81. HostName = Dns.GetHostName '获得本机的机器名
  82. IPAdress = Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP
  83. MYIP = IPAdress.ToString
  84. If Strings.Left(MYIP, 10) <> "192.168.12" Or Strings.Left(MYIP, 7) <> "10.0.0." Then
  85. 登入人IP = "180.177.181.162,5264"
  86. 登入()
  87. OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True
  88. End If
  89. End If
  90. UsernameTextBox.Focus()
  91. End Sub
  92. Private Sub 登入()
  93. '-----------------------寫入連線字串-----------------------------------------------------------------------------------------------------------------------------------------------
  94. SQL_連線字串_ERP() : SQL_連線字串_考勤()
  95. g_conn_type = ComboBox1.Text & "伺服器"
  96. '-----------------------系統版本號寫入-----------------------------------------------------------------------------------------------------------------------------------------------
  97. ConnOpen()
  98. SQL1 = "SELECT 系統認證版本號 FROM 版本號管理 "
  99. CmdSet_For_dr()
  100. If dr.Read() Then
  101. Label2.Text = "資料庫版本號 : " & dr("系統認證版本號") : 版本號 = dr("系統認證版本號")
  102. End If : conn.Close()
  103. '-----------------------FTP資料夾登入位置宣告--------------------------------------------------------------------------------------------------------------------------------------
  104. ConnOpen()
  105. SQL1 = "SELECT FTP地址, FTP帳號, FTP密碼 FROM FTP資料庫管理 WHERE 地區 LIKE N'" & ComboBox1.Text & "'"
  106. CmdSet_For_dr()
  107. If dr.Read() Then
  108. Target = dr("FTP地址") : FTP帳號 = dr("FTP帳號") : FTP密碼 = dr("FTP密碼")
  109. End If : conn.Close()
  110. Set_清單1()
  111. For i As Integer = 0 To FDT_dgv.Rows.Count - 1
  112. If FDT_dgv(1, i).Value.ToString = "AA00" Then : AA(0) = FDT_dgv(0, i).Value.ToString : End If
  113. If FDT_dgv(1, i).Value.ToString = "AA01" Then : AA(1) = FDT_dgv(0, i).Value.ToString : End If
  114. If FDT_dgv(1, i).Value.ToString = "AA02" Then : AA(2) = FDT_dgv(0, i).Value.ToString : End If
  115. If FDT_dgv(1, i).Value.ToString = "AA03" Then : AA(3) = FDT_dgv(0, i).Value.ToString : End If
  116. If FDT_dgv(1, i).Value.ToString = "AA04" Then : AA(4) = FDT_dgv(0, i).Value.ToString : End If
  117. Next
  118. If Strings.Right(Label1.Text, 10) <> Strings.Right(Label2.Text, 10) Then
  119. 自動更新2()
  120. Else
  121. Me.Size = New Size(466, 279)
  122. If screenWidth = 1920 And screenHeight = 1080 Then : Me.Location = New Point(727, 401)
  123. ElseIf screenWidth = 1366 And screenHeight = 768 Then : Me.Location = New Point(450, 245)
  124. ElseIf screenWidth = 1440 And screenHeight = 900 Then : Me.Location = New Point(487, 311)
  125. ElseIf screenWidth = 1280 And screenHeight = 1024 Then : Me.Location = New Point(407, 373)
  126. ElseIf screenWidth = 1600 And screenHeight = 900 Then : Me.Location = New Point(567, 311)
  127. End If
  128. End If
  129. End Sub
  130. Private Sub 自動更新1()
  131. Dim aa1 As MsgBoxResult
  132. aa1 = MsgBox("系統版本號 與 資料庫版本號 對應不上,請開發人員注意是否有其他人員修改。並決定是否下載最新的執行檔?", MsgBoxStyle.OkCancel)
  133. If aa1 = MsgBoxResult.Ok Then
  134. Dim Str As String = Application.StartupPath
  135. My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "SYS-UPDATE.exe", Str + "\SYS-UPDATE.exe")
  136. Shell(Str + "\SYS-UPDATE.exe", vbNormalFocus)
  137. Me.Close()
  138. Else
  139. 登入第二層()
  140. End If
  141. End Sub
  142. Private Sub 自動更新2()
  143. Dim aa1 As MsgBoxResult
  144. aa1 = MsgBox("系統版本號 與 資料庫版本號 對應不上,請下載最新的執行檔。", MsgBoxStyle.OkCancel)
  145. If aa1 = MsgBoxResult.Ok Then
  146. Dim Str As String = Application.StartupPath
  147. My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "SYS-UPDATE.exe", Str + "\SYS-UPDATE.exe")
  148. Shell(Str + "\SYS-UPDATE.exe", vbNormalFocus)
  149. Me.Close()
  150. End If
  151. End Sub
  152. Private Sub 登入第一層()
  153. If UsernameTextBox.Text = "" Then
  154. MsgBox("請輸入帳號! 如使用刷登入,請確定該卡片有合法註冊!")
  155. ElseIf UsernameTextBox.Text <> "" Then
  156. If UsernameTextBox.Text = "" Then
  157. MsgBox("請輸入帳號!")
  158. ElseIf UsernameTextBox.Text <> "" Then
  159. If TextBox4.Text = "1" Then
  160. '-----------考勤權限取得-----------------------------------------------------------------------------------------------------------------
  161. ConnOpen()
  162. MYSQL1 = "SELECT ID卡號 FROM 使用者權限管理表 WHERE (帳號 = '" & UsernameTextBox.Text & "')"
  163. cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader
  164. If dr.Read() Then
  165. ID卡號_tb.Text = dr("ID卡號") : conn.Close()
  166. ConnOpen_AM()
  167. SQL1 = "SELECT DIN" & 登入權限 & " FROM 使用者權限管理表 WHERE (ID卡號 LIKE '" & ID卡號_tb.Text & "')"
  168. CmdSet_For_dr()
  169. If dr.Read() Then
  170. For I As Integer = 1 To 權限數量
  171. BB(I) = dr.Item(I)
  172. Next
  173. End If
  174. End If : conn.Close()
  175. '-----------主系統權限取得-----------------------------------------------------------------------------------------------------------------
  176. ConnOpen()
  177. MYSQL1 = "SELECT " & 登入權限AQL & " FROM 使用者權限管理表 WHERE (帳號 = '" & UsernameTextBox.Text & "')"
  178. cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader
  179. If dr.Read() Then
  180. TextBox1.Text = dr("密碼").ToString : gUserName = dr("姓名").ToString : TextBox2.Text = dr("密碼日期").ToString
  181. For I As Integer = 0 To 32
  182. CC(I) = dr.Item(I + 4)
  183. Next
  184. FFGG = DateDiff("d", TextBox2.Text, Format(Today(), "yyyy/MM/dd"))
  185. conn.Close()
  186. ConnOpen()
  187. MYSQL1 = "SELECT 人員編號 FROM 人員資料 WHERE (姓名 = '" & gUserName & "')"
  188. cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader
  189. If dr.Read() Then
  190. 員工編號 = dr("人員編號").ToString : conn.Close()
  191. End If
  192. If CC(24) = True Then
  193. GGHH = 密碼時限 - FFGG
  194. If GGHH <= 0 Then
  195. MsgBox("密碼過期!")
  196. 個人帳號管理.ShowDialog()
  197. Else
  198. If Strings.Right(Label1.Text, 10) <> Strings.Right(Label2.Text, 10) Then
  199. If CC(26) = True Then
  200. 自動更新1()
  201. Else
  202. 自動更新2()
  203. End If
  204. Else
  205. 登入第二層()
  206. End If
  207. End If
  208. Else
  209. If Strings.Right(Label1.Text, 10) <> Strings.Right(Label2.Text, 10) Then
  210. If CC(26) = True Then
  211. 自動更新1()
  212. Else
  213. 自動更新2()
  214. End If
  215. Else
  216. 登入第二層()
  217. End If
  218. End If
  219. End If
  220. dr.Close()
  221. End If
  222. End If
  223. End If
  224. conn.Close()
  225. End Sub
  226. Private Sub 登入第二層()
  227. If PasswordTextBox.Text = TextBox1.Text Then
  228. If TextBox1.Text = "" Then
  229. MsgBox("帳號或密碼錯誤,請重新輸入!")
  230. Else
  231. Me.Hide()
  232. GCM_ERP_SYS.Show() : PasswordTextBox.Text = "" : UsernameTextBox.Text = ""
  233. End If
  234. ElseIf PasswordTextBox.Text <> TextBox1.Text Then
  235. MsgBox("帳號或密碼錯誤,請重新輸入!")
  236. End If
  237. End Sub
  238. Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
  239. If ComboBox1.Text = "" Then
  240. MsgBox("請正確選擇正確資料庫!")
  241. Else
  242. '-----MAC碼----------------------------------------------------------------------------------------------
  243. Dim Wmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration")
  244. For Each WmiObj As Management.ManagementObject In Wmi.Get
  245. If CBool(WmiObj("IPEnabled")) Then
  246. MACKK = WmiObj("MACAddress")
  247. End If
  248. Next
  249. '-----硬碟資料----------------------------------------------------------------------------------------------
  250. Dim cmicWmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
  251. For Each cmicWmiObj As Management.ManagementObject In cmicWmi.Get
  252. diskId = cmicWmiObj("signature")
  253. diskSerialNumber = cmicWmiObj("serialnumber")
  254. diskModel = cmicWmiObj("Model")
  255. Exit For
  256. Next
  257. If UsernameTextBox.Text = "b70340" Or UsernameTextBox.Text = "B70340" Then
  258. 登入第一層() : 判斷重登 = False
  259. ElseIf CheckBox3.Checked = True Then
  260. conn.Close()
  261. ConnOpen()
  262. SQL1 = "SELECT MAC碼 FROM 系統綁定電腦資訊
  263. WHERE 硬碟ID LIKE N'" & diskId & "' AND 硬碟序列 LIKE N'" & diskSerialNumber & "' AND 磁盘型態 LIKE N'" & diskModel & "'"
  264. CmdSet_For_dr()
  265. If dr.Read() Then
  266. conn.Close()
  267. 登入第一層()
  268. Else
  269. conn.Close()
  270. MsgBox("該電腦沒有註冊,無法使用系統。")
  271. End If
  272. ElseIf CheckBox3.Checked = False Then
  273. 登入第一層()
  274. End If
  275. End If
  276. End Sub
  277. Private Sub Cancel_Click(sender As Object, e As EventArgs) Handles Cancel.Click
  278. Me.Close()
  279. End Sub
  280. Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles 更新下載_ch.CheckedChanged
  281. If 更新下載_ch.Checked = False Then
  282. Me.Size = New Size(466, 279)
  283. If screenWidth = 1920 And screenHeight = 1080 Then : Me.Location = New Point(727, 401)
  284. ElseIf screenWidth = 1366 And screenHeight = 768 Then : Me.Location = New Point(450, 245)
  285. ElseIf screenWidth = 1440 And screenHeight = 900 Then : Me.Location = New Point(487, 311)
  286. ElseIf screenWidth = 1280 And screenHeight = 1024 Then : Me.Location = New Point(407, 373)
  287. ElseIf screenWidth = 1600 And screenHeight = 900 Then : Me.Location = New Point(567, 311)
  288. End If
  289. Else
  290. Me.Size = New Size(705, 279)
  291. If screenWidth = 1920 And screenHeight = 1080 Then : Me.Location = New Point(608, 401)
  292. ElseIf screenWidth = 1366 And screenHeight = 768 Then : Me.Location = New Point(331, 245)
  293. ElseIf screenWidth = 1440 And screenHeight = 900 Then : Me.Location = New Point(368, 311)
  294. ElseIf screenWidth = 1280 And screenHeight = 1024 Then : Me.Location = New Point(288, 373)
  295. ElseIf screenWidth = 1600 And screenHeight = 900 Then : Me.Location = New Point(448, 311)
  296. End If
  297. End If
  298. End Sub
  299. Private Sub UsernameTextBox_TextChanged(sender As Object, e As EventArgs) Handles UsernameTextBox.TextChanged
  300. If CheckBox1.Checked = False Then
  301. Else
  302. If IsNumeric(UsernameTextBox.Text) = True Then
  303. If UsernameTextBox.Text.Length = 10 Then
  304. ID卡號_tb.Text = UsernameTextBox.Text
  305. ConnOpen()
  306. MYSQL1 = "SELECT 帳號, 密碼 FROM 使用者權限管理表 WHERE (ID卡號 = '" & UsernameTextBox.Text & "')"
  307. cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader
  308. If dr.Read() Then
  309. UsernameTextBox.Text = dr("帳號").ToString
  310. PasswordTextBox.Text = dr("密碼").ToString
  311. conn.Close()
  312. Else
  313. UsernameTextBox.Text = "" : PasswordTextBox.Text = "" : conn.Close()
  314. End If
  315. Exit Sub : Me.OK.PerformClick()
  316. End If
  317. End If
  318. End If
  319. End Sub
  320. Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.Click
  321. UsernameTextBox.Focus()
  322. End Sub
  323. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  324. Dim Str As String = Application.StartupPath
  325. My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "SYS-UPDATE.exe", Str + "\SYS-UPDATE.exe")
  326. Shell(Str + "\SYS-UPDATE.exe", vbNormalFocus)
  327. Me.Close()
  328. End Sub
  329. End Class