Advertisement
Guest User

Untitled

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