<% ' 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 ' 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 %>