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