Advertisement
Guest User

Untitled

a guest
May 2nd, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 12.86 KB | None | 0 0
  1. Imports System.Data.OleDb
  2. Imports System.Text.RegularExpressions 'needed to verify username of newly added user
  3. Public Class users
  4.     Const connStr As String = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\#Record System\RecordSystemDatabase.accdb"
  5.     Private Sub userDataGrid_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  6.         Me.Text = "EPRS - Users"
  7.         Me.CenterToScreen()
  8.         Me.FormBorderStyle = FormBorderStyle.Fixed3D
  9.         Me.MaximizeBox = False
  10.         timer.Interval = 100
  11.         timer.Enabled = True
  12.         lblTime.TextAlign = ContentAlignment.MiddleLeft
  13.         txtAdminPword.UseSystemPasswordChar = True
  14.         txtAdminPword.Hide()
  15.         txtNewUserFname.Hide()
  16.         txtNewUserSname.Hide()
  17.         lblEnterPword.Hide()
  18.         lblNewUserSname.Hide()
  19.         lblAndForename.Hide()
  20.         lblSure.Hide()
  21.         btnOKpword.Hide()
  22.         btnAdd.Hide()
  23.         btnExitAddUser.Hide()
  24.         btnSureDel.Hide()
  25.         btnNoDel.Hide()
  26.         comboBoxUpdateInfo.Text = "Username"
  27.         dataGrid.RowHeadersVisible = False
  28.         getData()
  29.     End Sub
  30.     Private Sub btnAddNewUser_Click(sender As Object, e As EventArgs) Handles btnAddNewUser.Click
  31.         txtAdminPword.Show()
  32.         lblEnterPword.Show()
  33.         btnOKpword.Show()
  34.         btnExitAddUser.Show()
  35.         btnAddNewUser.Enabled = False
  36.     End Sub
  37.     Private Sub btnExitAddUser_Click(sender As Object, e As EventArgs) Handles btnExitAddUser.Click
  38.         txtAdminPword.Clear()
  39.         txtNewUserFname.Clear()
  40.         txtNewUserSname.Clear()
  41.         txtAdminPword.Hide()
  42.         txtNewUserFname.Hide()
  43.         txtNewUserSname.Hide()
  44.         lblEnterPword.Hide()
  45.         lblNewUserSname.Hide()
  46.         lblAndForename.Hide()
  47.         btnOKpword.Hide()
  48.         btnAdd.Hide()
  49.         btnExitAddUser.Hide()
  50.         btnAddNewUser.Enabled = True
  51.     End Sub
  52.     Private Sub btnOKpword_Click(sender As Object, e As EventArgs) Handles btnOKpword.Click
  53.         If txtAdminPword.Text = "" Then
  54.             MsgBox("Please enter your password.")
  55.         ElseIf login.validCredentials("admin", txtAdminPword.Text) = True Then
  56.             txtNewUserFname.Show()
  57.             txtNewUserSname.Show()
  58.             lblNewUserSname.Show()
  59.             lblAndForename.Show()
  60.             btnAdd.Show()
  61.             txtAdminPword.Hide()
  62.             btnOKpword.Hide()
  63.         Else
  64.             txtAdminPword.Clear()
  65.             MsgBox("Invalid password")
  66.         End If
  67.     End Sub
  68.     Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click 'uses Regex to validate new user credentials
  69.         Dim regexName As New Regex("^[a-z]+$")
  70.         If txtNewUserSname.Text = "" Then
  71.             MsgBox("Please enter the user's surname")
  72.         ElseIf txtNewUserFname.Text = "" Then
  73.             MsgBox("Please enter the user's forename")
  74.         ElseIf regexName.IsMatch(LCase(txtNewUserSname.Text)) = False Then
  75.             txtNewUserSname.Clear()
  76.             MsgBox("Names must be letters only")
  77.         ElseIf regexName.IsMatch(LCase(txtNewUserFname.Text)) = False Then
  78.             txtNewUserFname.Clear()
  79.             MsgBox("Names must be letters only")
  80.         Else
  81.             Dim fName As String = UCase(Mid(txtNewUserFname.Text, 1, 1)) & Mid(txtNewUserFname.Text, 2, Len(txtNewUserFname.Text))
  82.             Dim newUsername As String = LCase(Mid(fName, 1, 1)) & LCase(txtNewUserSname.Text)
  83.             Dim newPword As String = login.makeRandPword()
  84.             If Len(newUsername) > 100 Then
  85.                 txtNewUserFname.Clear()
  86.                 txtNewUserSname.Clear()
  87.                 MsgBox("That name is too long.")
  88.             Else
  89.                 Dim conn As New OleDbConnection(connStr)
  90.                 Dim cmmdInsert As New OleDbCommand
  91.                 cmmdInsert.Connection = conn
  92.                 cmmdInsert.CommandText = "INSERT INTO tblUsers (Username, Pword) " &
  93.                         "VALUES ('" & newUsername & "', '" & newPword & "')"
  94.                 conn.Open()
  95.                 cmmdInsert.ExecuteNonQuery()
  96.                 conn.Close()
  97.                 getData()
  98.                 txtAdminPword.Clear()
  99.                 txtNewUserFname.Clear()
  100.                 txtNewUserSname.Clear()
  101.                 txtAdminPword.Hide()
  102.                 txtNewUserFname.Hide()
  103.                 txtNewUserSname.Hide()
  104.                 lblEnterPword.Hide()
  105.                 lblNewUserSname.Hide()
  106.                 lblAndForename.Hide()
  107.                 btnOKpword.Hide()
  108.                 btnAdd.Hide()
  109.                 btnExitAddUser.Hide()
  110.                 btnAdd.Enabled = True
  111.                 btnUpdate.Enabled = True
  112.                 btnDel.Enabled = True
  113.                 btnAddNewUser.Enabled = True
  114.                 MsgBox(fName & " has been added." & vbNewLine &
  115.                     "Username = " & newUsername & vbNewLine &
  116.                     "First password = " & newPword & " (they can change it when they log in).")
  117.             End If
  118.         End If
  119.     End Sub
  120.     Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
  121.         Dim userID As Integer = dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(0).Value
  122.         Dim dataGridUsername As String = dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(1).Value
  123.         Dim dataGridPword As String = dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(2).Value
  124.         Dim regexLetters As New Regex("^[a-z]+$")
  125.         Dim SQLfield As String = getDataToUpdate()
  126.         Dim cmmdUpdateStr As String
  127.         Dim erroneous As Boolean = False
  128.         If txtNewData.Text = "" Then
  129.             erroneous = True
  130.             MsgBox("Please enter the new data")
  131.         ElseIf dataGridUsername = "admin" Then
  132.             erroneous = True
  133.             txtNewData.Clear()
  134.             MsgBox("Can't update admin info here")
  135.         Else
  136.             If SQLfield = "Username" Then
  137.                 If regexLetters.IsMatch(LCase(txtNewData.Text)) = False Then
  138.                     txtNewData.Clear()
  139.                     erroneous = True
  140.                     MsgBox("Username must be letters only.")
  141.                 Else
  142.                     cmmdUpdateStr = "UPDATE tblUsers " &
  143.                         "SET Username = '" & LCase(txtNewData.Text) & "' " &
  144.                         "WHERE UserID = " & userID
  145.                 End If
  146.             ElseIf SQLfield = "Pword" Then
  147.                 Dim regLcase As New Regex("[a-z]+")
  148.                 Dim regUcase As New Regex("[A-Z]+")
  149.                 Dim regNums As New Regex("[0-9]+")
  150.                 Dim regLen As New Regex("^[a-zA-Z0-9]{6,100}$")
  151.  
  152.                 If regLcase.IsMatch(txtNewData.Text) = False Or regUcase.IsMatch(txtNewData.Text) = False Or regNums.IsMatch(txtNewData.Text) = False Or regLen.IsMatch(txtNewData.Text) = False Then
  153.                     txtNewData.Clear()
  154.                     erroneous = True
  155.                     MsgBox("Password must:" & vbNewLine &
  156.                        " - Be 6-100 characters long" & vbNewLine &
  157.                        " - Contain at least 1 lower case AND upper case letter" & vbNewLine &
  158.                        " - And at least 1 number" & vbNewLine &
  159.                        " - And no other characters.")
  160.                 Else
  161.                     cmmdUpdateStr = "UPDATE tblUsers SET Pword = '" & txtNewData.Text & "' WHERE UserID = " & userID
  162.                 End If
  163.             End If
  164.         End If
  165.         If erroneous = False Then
  166.             Dim conn As New OleDbConnection(connStr)
  167.             Dim cmmdUpdate As New OleDbCommand
  168.             cmmdUpdate.Connection = conn
  169.             cmmdUpdate.CommandText = cmmdUpdateStr
  170.             conn.Open()
  171.             cmmdUpdate.ExecuteNonQuery()
  172.             conn.Close()
  173.             txtNewData.Clear()
  174.             getData()
  175.             MsgBox(comboBoxUpdateInfo.Text & " of '" & dataGridUsername & "' updated.")
  176.         End If
  177.     End Sub
  178.     Private Sub btnDelUser_Click(sender As Object, e As EventArgs) Handles btnDel.Click
  179.         Try
  180.             If dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(1).Value = "admin" Then
  181.                 MsgBox("You can't delete an admin")
  182.             Else
  183.                 lblSure.Text = "Sure you want to delete" & vbNewLine & "'" & dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(1).Value & "' ?"
  184.                 lblSure.Show()
  185.                 btnSureDel.Show()
  186.                 btnNoDel.Show()
  187.                 btnDel.Enabled = False
  188.             End If
  189.         Catch ex As Exception
  190.             MsgBox("That's not a user")
  191.         End Try
  192.     End Sub
  193.     Private Sub btnSureDel_Click(sender As Object, e As EventArgs) Handles btnSureDel.Click
  194.         Dim userID As Integer = dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(0).Value
  195.         Dim uName As String = dataGrid.Rows.Item(dataGrid.CurrentRow.Index).Cells(1).Value
  196.         If dataGrid.SelectedCells.Count < 1 Then
  197.             lblSure.Hide()
  198.             btnSureDel.Hide()
  199.             btnNoDel.Hide()
  200.             btnDel.Enabled = True
  201.             MsgBox("You have to select a user")
  202.         Else
  203.             Dim connDelUser As New OleDbConnection(connStr)
  204.             Dim cmmdDel As New OleDbCommand
  205.             cmmdDel.Connection = connDelUser
  206.             cmmdDel.CommandText = "DELETE FROM tblUsers WHERE UserID = " & userID
  207.             connDelUser.Open()
  208.             cmmdDel.ExecuteNonQuery()
  209.             connDelUser.Close()
  210.             getData()
  211.             lblSure.Hide()
  212.             btnSureDel.Hide()
  213.             btnNoDel.Hide()
  214.             btnDel.Enabled = True
  215.             MsgBox("'" & uName & "' has been deleted.")
  216.         End If
  217.     End Sub
  218.     Private Sub btnNoDel_Click(sender As Object, e As EventArgs) Handles btnNoDel.Click
  219.         lblSure.Hide()
  220.         btnSureDel.Hide()
  221.         btnNoDel.Hide()
  222.         btnDel.Enabled = True
  223.     End Sub
  224.     Sub getData() 'gets data from user entity into data grid of users
  225.         dataGrid.Rows.Clear()
  226.         Dim rowNum As Integer
  227.         Dim conn As New OleDbConnection(connStr)
  228.         Dim cmmdGetData As New OleDbCommand
  229.         cmmdGetData.Connection = conn
  230.         cmmdGetData.CommandText = "SELECT * FROM tblUsers ORDER BY Username ASC"
  231.         conn.Open()
  232.         Dim reader As OleDbDataReader = cmmdGetData.ExecuteReader
  233.         Do While reader.Read()
  234.             dataGrid.Rows.Add()
  235.             With dataGrid.Rows.Item(rowNum)
  236.                 .Cells(0).Value = reader("UserID")
  237.                 .Cells(1).Value = reader("Username")
  238.                 .Cells(2).Value = reader("Pword")
  239.             End With
  240.  
  241.             rowNum += 1
  242.         Loop
  243.         If rowNum = 1 Then
  244.             lblNumUsers.Text = "1 user"
  245.         Else
  246.             lblNumUsers.Text = rowNum & " users"
  247.         End If
  248.         conn.Close()
  249.     End Sub
  250.     Private Sub btnHome_Click(sender As Object, e As EventArgs) Handles btnHome.Click
  251.         Form1.Show()
  252.         Me.Close()
  253.     End Sub
  254.     Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnLogOut.Click
  255.         login.Close()
  256.     End Sub
  257.     Function getDataToUpdate() As String
  258.         Select Case comboBoxUpdateInfo.Text
  259.             Case "Username"
  260.                 Return "Username"
  261.             Case "Password"
  262.                 Return "Pword"
  263.         End Select
  264.     End Function
  265.     Private Sub comboBoxUpdateInfo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboBoxUpdateInfo.SelectedIndexChanged
  266.         Select Case comboBoxUpdateInfo.Text
  267.             Case "Username"
  268.                 lblEnterUpdateData.Text = "Enter the username:"
  269.                 txtNewData.UseSystemPasswordChar = False
  270.             Case "Password"
  271.                 lblEnterUpdateData.Text = "Enter the  password:"
  272.                 txtNewData.UseSystemPasswordChar = True
  273.         End Select
  274.         txtNewData.Clear()
  275.     End Sub
  276.     Private Sub draw(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  277.         Dim xPos As Integer = 611
  278.         Dim greenShade As Integer
  279.         Dim numSquares As Byte = 8
  280.         For i = 1 To numSquares
  281.             Dim colour As Color = ColorTranslator.FromHtml("#00" & Hex(greenShade).ToString.PadLeft(2, "0") & "FF")
  282.             Dim pen As New Pen(colour, 1)
  283.             pen.Width = 2
  284.             Dim rectangle As New Rectangle(xPos, 5, 30, 20)
  285.             e.Graphics.DrawRectangle(pen, rectangle)
  286.             xPos += 34
  287.             greenShade += Math.Floor(255 / numSquares)
  288.         Next
  289.     End Sub
  290.     Private Sub timer_Tick(sender As Object, e As EventArgs) Handles timer.Tick
  291.         lblTime.Text = DateTime.Now.Hour.ToString.PadLeft(2, "0") & ":" &
  292.             DateTime.Now.Minute.ToString.PadLeft(2, "0") & ":" &
  293.             DateTime.Now.Second.ToString.PadLeft(2, "0") & vbNewLine &
  294.             DateTime.Now.Day.ToString.PadLeft(2, "0") & "-" &
  295.             DateTime.Now.Month.ToString.PadLeft(2, "0") & "-" &
  296.             DateTime.Now.Year.ToString
  297.     End Sub
  298. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement