Modul untuk mengelola pengguna berisi fungsi-fungsi yang digunakan untuk mengelola pengguna yang masuk ke dalam sistem. Seperti diketahui, hirarki sistem informasi manajemen ada tiga level, yaitu puncak, menengah, dan bawah. Masing-masing mempunyai hak akses yang melekat sesuai dengan levelnya. Level puncak tentu saja mempunyai hak akses terhadap sistem yang lebih lengkap daripada level di bawahnya. Level bawah mempunyai hak akses yang melekat sesuai dengan tugasnya, misalnya seseorang yang hanya bisa membuat jurnal, tentu saja tidak bisa memproses jurnal yang dibuatnya. Hanya otoritas yang berwenang, biasanya dengan level yang lebih tinggi dan menguasai bidangnya, yang bisa memproses jurnal itu. Level yang tinggi seperti manajer produksi dan pemasaran, karena tidak menguasai bidang akuntansi, tentu saja tidak berhak untuk memproses jurnal. Namun demikan, mereka berhak untuk mengakses laporan yang berkaitan dengan bagian atau departemen yang menjadi tanggung jawabnya.
Berikut ini adalah kode VBA untuk modul pengguna, simpanlah dengan nama: mdlPengguna.
Berikut ini adalah kode VBA untuk modul pengguna, simpanlah dengan nama: mdlPengguna.
Option Compare Database
Function LoginDialog(strCurrentUser As String)
'------------------------------------------------------------
' Fungsi yang digunakan saat login pertama kali
'------------------------------------------------------------
On Error GoTo Err_Msg
With CodeContextObject
If (Not IsNull(strCurrentUser)) Then
TempVars.Add "IdPengguna", strCurrentUser
Application.SetOption ("Confirm Action Queries"), False
DoCmd.RunSQL "UPDATE tblAdminPengguna SET LoginStatus = True, WaktuLogin = Now() WHERE PgnId=[TempVars]![IdPengguna];"
Application.SetOption ("Confirm Action Queries"), True
DoCmd.Close , ""
DoCmd.OpenForm "frmMenus", acNormal, "", "", , acNormal
Exit Function
End If
End With
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function TampilkanLogin()
'------------------------------------------------------------
' Fungsi yang menampilkan id/nama pengguna di setiap
' form atau report yang dibuka.
'------------------------------------------------------------
Dim strPgnName As String
On Error GoTo Err_Msg
If PreferensSistem("GunakanNamaPgn") = True Then
TampilkanLogin = Nz(DLookup("[PgnNama]", "tblAdminPengguna", "[PgnId]='" & [TempVars]![IdPengguna] & "'"), [TempVars]![IdPengguna])
Else
TampilkanLogin = Nz([TempVars]![IdPengguna], "")
End If
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function LogoutDialog(strCurrentUser As String)
'------------------------------------------------------------
' Fungsi yang digunakan bila pengguna ingin logout dari sistem
'------------------------------------------------------------
On Error GoTo Err_Msg
With CodeContextObject
If (Not IsNull(strCurrentUser)) Then
Application.SetOption ("Confirm Action Queries"), False
DoCmd.RunSQL "UPDATE tblAdminPengguna SET tblAdminPengguna.LoginStatus = false WHERE (((tblAdminPengguna.PgnId)=[TempVars]![IdPengguna]));"
Application.SetOption ("Confirm Action Queries"), True
TempVars.Remove ("IdPengguna")
DoCmd.Close , ""
If SysCmd(acSysCmdGetObjectState, acForm, "frmMenus") <> 0 Then
If Forms("frmMenus").CurrentView = 1 Then DoCmd.Close acForm, "frmMenus", acSaveNo
End If
DoCmd.OpenForm "frmLogin", acNormal, "", "", , acNormal
Exit Function
End If
End With
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function TampilkanDataIjin(strIjin As String) As String
'------------------------------------------------------------
' Fungsi yang digunakan untuk menampilkan Control Tip Text
' pada field hak akses di tblAdminPengguna. Fiel hak akses
' pada tabel itu diawali dengan tanda "p_"
'------------------------------------------------------------
Dim tdf As DAO.TableDef
Dim fld As DAO.Field2
Dim x, i, n As Integer
Dim strDataIjin, strSymbol, strSplit As String
On Error GoTo Err_Msg
Set dbs = CurrentDb()
Set tdf = dbs.TableDefs("tblAdminPengguna")
i = 0
For Each fld In tdf.Fields
If fld.Name = strIjin Then
strDataIjin = "Nama Judul: " & fld.Properties ("Caption") & vbCrLf _
& "Nama Ijin: " & fld.Name & vbCrLf _
& "Nama Deskripsi: " & fld.Properties ("Description")
Exit For
End If
Next fld
TampilkanDataIjin = strDataIjin
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function UserTerdaftar(ByRef strCurrentUser As String) As Boolean
'------------------------------------------------------------
' Fungsi yang digunakan untuk mengecek apakah seorang pengguna (user) sudah terdaftar atau belum.
'------------------------------------------------------------
On Error GoTo Err_Msg
If (Not IsNull(DLookup("[PgnId]", "tblAdminPengguna", "[PgnId]='" & strCurrentUser & "'"))) Then
UserTerdaftar = True
End If
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function PasswordOK(ByRef strCurrentUser, strCurrentPassword As String) As Boolean
'------------------------------------------------------------
' Fungsi yang digunakan untuk mengecek apakah password
' yang dimasukkan sesuai dengan paswword dalam
' daftar pengguna di tblAdminPengguna
'------------------------------------------------------------
Dim strPgn_Password As String
On Error GoTo Err_Msg
strPgn_Password = Nz(DLookup("[Pgn_Password]", "tblAdminPengguna","[PgnId]='" & strCurrentUser & "'"), "")
If strPgn_Password = Nz(strCurrentPassword, "") Then PasswordOK = True
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function IjinDitolak(ByRef strNamaForm As String) As Boolean
'------------------------------------------------------------
' Fungsi yang digunakan untuk mengecek apakah ijin
' pengguna untuk membuka sebuah form ditolak berdasarkan
' persyaratan yang diatur dalam tblMenus/frmMenuPengaturan
'------------------------------------------------------------
Dim strNamaIjin As Variant
On Error GoTo Err_Msg
strNamaIjin = Nz(DLookup("[NamaIjin]", "tblMenus", "[IdForm]= '" & strNamaForm & "'"), "")
If StatusPermisi(strNamaIjin) <> "y" Then IjinDitolak = True Else IjinDitolak = False
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function IjinPengguna(ByRef strAksesObjek As String) As Boolean
'------------------------------------------------------------
' Fungsi yang digunakan untuk mengecek apakah pengguna
' yang login dapat mengakses sebuah obyek seperti
' tertera dalam akses yang ada di daftar pengguna
'------------------------------------------------------------
Dim strField As String
Dim blCheck As Boolean
On Error GoTo Err_Msg
If DLookup("[p_Admin]", "tblAdminPengguna", "[PgnId]= '" & [TempVars]![IdPengguna] & "'") = True Then
IjinPengguna = True
Exit Function
End If
strField = "[" & strAksesObjek & "]"
blCheck = Nz(DLookup(strField, "tblAdminPengguna", "[PgnId]= '" & [TempVars]![IdPengguna] & "'"), False)
If blCheck = True Then IjinPengguna = True
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function StatusPermisi(strNamaField As Variant) As String
'------------------------------------------
' Fungsi untuk mengambil nilai dari array
' admin pengguna, mirip dengan Function IjinPengguna
'------------------------------------------
Dim vrtSplit As Variant
Dim strSymbol, strSplit, strStatus As String
On Error GoTo Err_Msg
If IsNull(strNamaField) Then
StatusPermisi = "y"
Exit Function
End If
For n = 1 To Len(strNamaField)
strSymbol = Mid(strNamaField, n, 1)
If strSymbol = "," Or strSymbol = "|" Then
strSplit = strSymbol
Exit For
End If
Next n
vrtSplit = Split(strNamaField, strSplit)
For i = 0 To UBound(vrtSplit)
If strSplit = "|" Then
If IjinPengguna(CStr(Trim(vrtSplit(i)))) Then
strStatus = "y"
End If
ElseIf strSplit = "," Then
If Not IjinPengguna(CStr(Trim(vrtSplit(i)))) Then
StatusPermisi = ""
Exit Function
Else
strStatus = "y"
End If
Else
If IjinPengguna(CStr(Trim(vrtSplit(i)))) Then strStatus = "y" Else strStatus = ""
End If
Next i
StatusPermisi = strStatus
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function
Function checkUser()
On Error GoTo Err_Msg
If Not UserTerdaftar("admin") Then
Application.SetOption ("Confirm Action Queries"), False
DoCmd.RunSQL "INSERT INTO tblAdminPengguna ( PgnId, p_Admin ) SELECT 'admin' AS Expr1, True AS Expr2;" '"INSERT INTO tblAdminPengguna ( PgnId ) SELECT 'admin' AS Expr1;"
Application.SetOption ("Confirm Action Queries"), True
End If
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Error # " & str(Err.Number) & ", source: " & Err.Source & Chr(13) & Err.Description
Resume Exit_Function
End Function

Comments
Post a Comment