<% ' Advanced User Level Security for ASPMaker 5+ Const ewAllowAdd = 1 Const ewAllowDelete = 2 Const ewAllowEdit = 4 Const ewAllowView = 8 Const ewAllowList = 8 Const ewAllowReport = 8 Const ewAllowSearch = 8 Const ewAllowAdmin = 16 Dim arUserLevel ' User Level definitions Dim arUserLevelPriv ' User Level privileges ' Define User Level Variables Dim ewCurLvl ' Current user level ewCurLvl = CurrentUserLevel() Dim ewCurSec ' Static user level security '------------------------------------------------------------------------------- ' Function SetUpUserLevel ' ... Sub SetUpUserLevel 'On Error Resume Next Dim rs, arFld ' User Level definitions arFld = Array("Id", "Name") Set rs = Server.CreateObject("ADODB.RecordSet") rs.CursorLocation = 2 rs.Fields.Append arFld(0), 3 'adInteger rs.Fields.Append arFld(1), 200, 255 'adVarChar rs.Open rs.AddNew arFld, Array(0, "Anonymous") rs.AddNew arFld, Array(1, "dataentry") rs.AddNew arFld, Array(2, "user") rs.Update rs.MoveFirst arUserLevel = rs.GetRows rs.Close Set rs = Nothing ' User Level privileges arFld = Array("TblName", "UserLevelId", "Priv") Set rs = Server.CreateObject("ADODB.RecordSet") rs.CursorLocation = 2 rs.Fields.Append arFld(0), 200, 255 'adVarChar rs.Fields.Append arFld(1), 3 'adInteger rs.Fields.Append arFld(2), 3 'adInteger rs.Open rs.AddNew arFld, Array("Cuentas", 0, 0) rs.AddNew arFld, Array("Cuentas", 1, 13) rs.AddNew arFld, Array("Cuentas", 2, 0) rs.AddNew arFld, Array("Usuarios", 0, 0) rs.AddNew arFld, Array("Usuarios", 1, 0) rs.AddNew arFld, Array("Usuarios", 2, 0) rs.AddNew arFld, Array("Vendedoras", 0, 0) rs.AddNew arFld, Array("Vendedoras", 1, 13) rs.AddNew arFld, Array("Vendedoras", 2, 0) rs.AddNew arFld, Array("CuentasFM", 0, 0) rs.AddNew arFld, Array("CuentasFM", 1, 0) rs.AddNew arFld, Array("CuentasFM", 2, 8) rs.AddNew arFld, Array("UserLevels", 0, 0) rs.AddNew arFld, Array("UserLevels", 1, 0) rs.AddNew arFld, Array("UserLevels", 2, 0) rs.Update rs.MoveFirst arUserLevelPriv = rs.GetRows rs.Close Set rs = Nothing ' Save the user level to session variable SaveUserLevel() End Sub ' Get current user privilege Function CurrentUserLevelPriv(TableName) CurrentUserLevelPriv = GetUserLevelPrivEx(TableName, CurrentUserLevel) End Function ' Get anonymous user privilege Function GetAnonymousPriv(TableName) GetAnonymousPriv = GetUserLevelPrivEx(TableName, 0) End Function ' Get user privilege based on table name and user level Function GetUserLevelPrivEx(TableName, UserLevel) GetUserLevelPrivEx = 0 If CStr(UserLevel) = "-1" Then ' System Administrator GetUserLevelPrivEx = 31 ElseIf UserLevel >= 0 Then If IsArray(arUserLevelPriv) Then Dim I For I = 0 to UBound(arUserLevelPriv, 2) If CStr(arUserLevelPriv(0, I)) = CStr(TableName) And _ CStr(arUserLevelPriv(1, I)) = CStr(UserLevel) Then GetUserLevelPrivEx = arUserLevelPriv(2, I) If IsNull(GetUserLevelPrivEx) Then GetUserLevelPrivEx = 0 If Not IsNumeric(GetUserLevelPrivEx) Then GetUserLevelPrivEx = 0 GetUserLevelPrivEx = CLng(GetUserLevelPrivEx) Exit For End If Next End If End If End Function ' Get current user level name Function CurrentUserLevelName GetUserLevelName(CurrentUserLevel) End Function ' Get user level name based on user level Function GetUserLevelName(UserLevel) GetUserLevelName = "" If CStr(UserLevel) = "-1" Then GetUserLevelName = "Administrator" ElseIf UserLevel >= 0 Then If IsArray(arUserLevel) Then Dim I For I = 0 to UBound(arUserLevel, 2) If CStr(arUserLevel(0, I)) = CStr(UserLevel) Then GetUserLevelName = arUserLevel(1, I) Exit For End If Next End If End If End Function ' Sub to display all the User Level settings (for debug only) Sub ShowUserLevelInfo Dim I If IsArray(arUserLevel) Then Response.Write "User Levels:
" Response.Write "UserLevelId, UserLevelName
" For I = 0 To UBound(arUserLevel, 2) Response.Write "  " & arUserLevel(0, I) & ", " & _ arUserLevel(1, I) & "
" Next Else Response.Write "No User Level definitions." & "
" End If If IsArray(arUserLevelPriv) Then Response.Write "User Level Privs:
" Response.Write "TableName, UserLevelId, UserLevelPriv
" For I = 0 To UBound(arUserLevelPriv, 2) Response.Write "  " & arUserLevelPriv(0, I) & ", " & _ arUserLevelPriv(1, I) & ", " & arUserLevelPriv(2, I) & "
" Next Else Response.Write "No User Level privilege settings." & "
" End If Response.Write "CurrentUserLevel = " & CurrentUserLevel & "
" End Sub ' Function to check privilege for List page (for menu items) Function AllowList(TableName) AllowList = CBool(CurrentUserLevelPriv(TableName) And ewAllowList) End Function ' Get current user name from session Function CurrentUserName CurrentUserName = Session(ewSessionUserName) & "" End Function ' Get current user id from session Function CurrentUserID CurrentUserID = Session(ewSessionUserID) & "" End Function ' Get current parent user id from session Function CurrentParentUserID CurrentParentUserID = Session(ewSessionParentUserID) & "" End Function ' Get current user level from session Function CurrentUserLevel If IsLoggedIn Then CurrentUserLevel = Session(ewSessionUserLevel) Else CurrentUserLevel = 0 ' Anonymous if not logged in End If End Function ' Check if user is logged in Function IsLoggedIn IsLoggedIn = (Session(ewSessionStatus) = "login") End Function ' Check if user is system administrator Function IsSysAdmin IsSysAdmin = (Session(ewSessionSysAdmin) = 1) End Function ' Save user level to session Sub SaveUserLevel Session(ewSessionArUserLevel) = arUserLevel Session(ewSessionArUserLevelPriv) = arUserLevelPriv End Sub ' Load user level from session Sub LoadUserLevel If Not IsArray(Session(ewSessionArUserLevel)) Then SetupUserLevel SaveUserLevel End If arUserLevel = Session(ewSessionArUserLevel) arUserLevelPriv = Session(ewSessionArUserLevelPriv) End Sub %>