Subversion Repositories DevTools

Rev

Rev 4014 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4014 Rev 5065
Line 1... Line 1...
1
<%
1
<%
2
'=============================================================
2
'=============================================================
3
'//
3
'//
4
'//                  Access Control
4
'//                  Access Control
-
 
5
'//     This class is agnostic of the appliaction and could be common
-
 
6
'//     to all Manager Suite tools
5
'//
7
'//
6
'=============================================================
8
'=============================================================
7
%>
9
%>
-
 
10
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="../common/DictDump.vbs"></SCRIPT> 
8
<%
11
<%
9
'--------------- Global Constants ----------------
12
'--------------- Global Constants ----------------
10
Const enumSESSION_TIMEOUT = 200      ' Minutes
13
Const enumSESSION_TIMEOUT = 600      ' Minutes
11
Const enumSESSION_LAST_REQUEST = "AM_SESSION_LAST_REQUEST"
14
Const enumSESSION_LAST_REQUEST = "AM_SESSION_LAST_REQUEST"
12
Const enumLOGIN_TOKEN_SESSION = "AM_LOGIN_TOKEN"
15
Const enumLOGIN_TOKEN_SESSION = "AM_LOGIN_TOKEN"
13
Const enumUSER_ID_SESSION = "AM_USER_ID"
16
Const enumUSER_ID_SESSION = "AM_USER_ID"
14
Const enumUSER_DETAILS_SESSION = "AM_USER_DETAILS"
17
Const enumUSER_DETAILS_SESSION = "AM_USER_DETAILS"
15
Const enumUSER_APPLICATIONS_SESSION = "AM_USER_APPLICATIONS"
18
Const enumUSER_APPLICATIONS_SESSION = "AM_USER_APPLICATIONS"
16
Const enumUSER_STATIC_PERMISSIONS = "AM_USER_STATIC_PERMISSIONS"
19
Const enumUSER_STATIC_PERMISSIONS = "AM_USER_STATIC_PERMISSIONS"
17
Const enumUSER_DATA_PERMISSIONS = "AM_USER_DATA_PERMISSIONS"
20
Const enumUSER_DATA_PERMISSIONS = "AM_USER_DATA_PERMISSIONS"
18
Const enumUSER_TEMP_VARIABLE = "AM_USER_TEMP_VARIABLE"
21
Const enumUSER_TEMP_VARIABLE = "AM_USER_TEMP_VARIABLE"
19
Const enumACCESS_MANAGER_EVENT_LOGON_SUCCESS  = 1
22
Const enumACCESS_MANAGER_EVENT_LOGON_SUCCESS  = 1
20
Const enumACCESS_MANAGER_EVENT_LOGON_FAIL       = -1
23
Const enumACCESS_MANAGER_EVENT_LOGON_FAIL     = -1
21
Const enumACCESS_MANAGER_EVENT_LOGOFF         = 0
24
Const enumACCESS_MANAGER_EVENT_LOGOFF         = 0
22
Const enumACCESS_MANAGER_EVENT_SESSION_EXPIRE = 2
25
Const enumACCESS_MANAGER_EVENT_SESSION_EXPIRE = 2
23
'-------------------------------------------------
26
'-------------------------------------------------
24
 
27
 
25
Class AccessControl
28
Class AccessControl
Line 28... Line 31...
28
   Private mobjStaticControl
31
   Private mobjStaticControl
29
   Private mobjRowPermissions
32
   Private mobjRowPermissions
30
   Private mobjTablePermissions
33
   Private mobjTablePermissions
31
   Private sSEPARATOR
34
   Private sSEPARATOR
32
   Private mbIsApplicationRunning
35
   Private mbIsApplicationRunning
-
 
36
   Public  bDebug
33
 
37
 
34
   Public Property Let objOraDatabase ( ByRef oOraDatabase )
38
   Public Property Let objOraDatabase ( ByRef oOraDatabase )
35
      Set moOraDatabase = oOraDatabase
39
      Set moOraDatabase = oOraDatabase
36
   End Property
40
   End Property
37
 
41
 
Line 95... Line 99...
95
         UserApplication = TRUE
99
         UserApplication = TRUE
96
      End If
100
      End If
97
 
101
 
98
   End Function
102
   End Function
99
   '-----------------------------------------------------------------------------------------------------------------
103
   '-----------------------------------------------------------------------------------------------------------------
-
 
104
   Public Sub dumpAll()
-
 
105
    Response.Write "<br>Pretty Dictionary mobjStaticControl<pre>"
-
 
106
    Response.Write DICToutput(mobjStaticControl)
-
 
107
    Response.Write "</pre><br>Pretty Dictionary mobjRowPermissions<pre>"
-
 
108
    Response.Write DICToutput(mobjRowPermissions)
-
 
109
    Response.Write "</pre><br>Pretty Dictionary mobjTablePermissions<pre>"
-
 
110
    Response.Write DICToutput(mobjTablePermissions)
-
 
111
    Response.Write "</pre><br>End"
-
 
112
   End Sub
-
 
113
 
-
 
114
   Private Sub RR(txt)
-
 
115
      If  bDebug Then
-
 
116
        Response.Write "<br>" & txt
-
 
117
      End If
-
 
118
   End Sub
-
 
119
   '-----------------------------------------------------------------------------------------------------------------
100
   Public Function BeginRegion ( sControlObjName )
120
   Public Function BeginRegion ( sControlObjName )
101
      Response.write "<table width='100%'  border='0' cellspacing='0' cellpadding='1'>"
121
      Response.write "<table width='100%'  border='0' cellspacing='0' cellpadding='1'>"
102
      Response.write "  <tr>"
122
      Response.write "  <tr>"
103
      Response.write "    <td bgcolor='#FF0000'>&nbsp;<a href='#' class='body_linkw'><b>"& sControlObjName &"</b></a>&nbsp;</td>"
123
      Response.write "    <td bgcolor='#FF0000'>&nbsp;<a href='#' class='body_linkw'><b>"& sControlObjName &"</b></a>&nbsp;</td>"
104
      Response.write "  </tr>"
124
      Response.write "  </tr>"
Line 117... Line 137...
117
   Private Function Extract( sField, sString )
137
   Private Function Extract( sField, sString )
118
      Dim tempArr, tempSTR
138
      Dim tempArr, tempSTR
119
 
139
 
120
      tempArr = Split( sString, sSEPARATOR )
140
      tempArr = Split( sString, sSEPARATOR )
121
      tempSTR = Join( Filter( tempArr, sField &"=" ) )   ' Append "=" to field name to get e.g. "user_name="
141
      tempSTR = Join( Filter( tempArr, sField &"=" ) )   ' Append "=" to field name to get e.g. "user_name="
122
 
-
 
-
 
142
      If tempSTR <> "" Then
123
      Extract = Right( tempSTR, Len(tempSTR) - Len( sField &"=" ))   ' Strip the fieled name from value
143
        Extract = Right( tempSTR, Len(tempSTR) - Len( sField &"=" ))   ' Strip the fieled name from value
-
 
144
      Else
-
 
145
        Extract = ""
-
 
146
      End If
124
 
147
 
125
   End Function
148
   End Function
126
   '-----------------------------------------------------------------------------------------------------------------
149
   '-----------------------------------------------------------------------------------------------------------------
127
   Private Function GetDataPermission ( sTableName, nRowId, nPermissionType )
150
   Private Function GetDataPermission ( sTableName, nRowId, nPermissionType, sControlObjName )
128
      Dim cPermissionValue
151
      Dim cPermissionValue
-
 
152
      Dim key : key = Cstr( sTableName &"_"& nRowId &"_"& sControlObjName &"_"& nPermissionType )
129
 
153
 
130
      '--- Get Row Permission ---
154
      '--- Get Row Permission ---
-
 
155
      cPermissionValue = ""
131
      cPermissionValue = mobjRowPermissions.Item ( Cstr( sTableName &"_"& nRowId &"_"& nPermissionType ) )
156
      If mobjRowPermissions.Exists( key ) Then
132
 
-
 
133
 
-
 
134
      'Response.write " VALUE="& cPermissionValue &" for "& sTableName &" "& nRowId &" "& nPermissionType &", "
157
        cPermissionValue = mobjRowPermissions.Item ( key )
135
 
158
      End If
136
 
159
 
137
      If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
160
      If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
138
 
-
 
139
         '--- Get Default Table Permission ---
161
         '--- Get Default Table Permission ---
140
         cPermissionValue = mobjTablePermissions.Item ( Cstr( sTableName &"_"& nPermissionType ) )
162
          Dim pkey : pkey = Cstr( sTableName &"_"& sControlObjName &"_"& nPermissionType )
141
 
-
 
142
         '--- Raise Exception if Table Default is not found ---
163
          cPermissionValue = ""
143
         'If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
164
          If mobjTablePermissions.Exists( pkey ) Then
144
         '   Err.Raise 8, "Default Table Permission is Not Found.", "sTableName="& sTableName &", nPermissionType="& nPermissionType
165
            cPermissionValue = mobjTablePermissions.Item ( pkey )
145
         '   Exit Function
-
 
146
         'End If
166
          End If
147
 
-
 
148
 
-
 
149
         'Response.write " VALUE="& cPermissionValue &" for "& sTableName &" "& nRowId &" "& nPermissionType &", "
-
 
150
 
-
 
151
      End If
167
      End If
152
 
168
 
153
 
-
 
154
      '--- Return TRUE / FALSE ---
169
      '--- Return TRUE / FALSE ---
155
      GetDataPermission = FALSE
170
      GetDataPermission = FALSE
156
      If cPermissionValue = enumDB_YES Then
171
      If cPermissionValue = enumDB_YES Then
157
         GetDataPermission = TRUE
172
         GetDataPermission = TRUE
158
      End If
173
      End If
159
 
174
 
160
   End Function
175
   End Function
161
   '-----------------------------------------------------------------------------------------------------------------
176
   '-----------------------------------------------------------------------------------------------------------------
162
   Public Function IsDataVisible ( sTableName, nRowId, sControlObjName )
177
   Public Function IsDataVisible ( sTableName, nRowId, sControlObjName )
163
      IsDataVisible = FALSE
178
      IsDataVisible = FALSE
164
 
-
 
165
      If IsVisible ( sControlObjName ) Then
-
 
166
         IsDataVisible = GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_VISIBLE )
179
      If IsVisible ( sControlObjName ) OR GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_VISIBLE, sControlObjName ) Then
-
 
180
          IsDataVisible = TRUE
167
      End If
181
      End If
168
 
-
 
169
   End Function
182
   End Function
170
   '-----------------------------------------------------------------------------------------------------------------
183
   '-----------------------------------------------------------------------------------------------------------------
171
   Public Function IsDataActive ( sTableName, nRowId, sControlObjName )
184
   Public Function IsDataActive ( sTableName, nRowId, sControlObjName )
172
      IsDataActive = FALSE
185
      IsDataActive = FALSE
173
 
-
 
174
      If IsActive ( sControlObjName ) Then
186
      If IsActive ( sControlObjName ) OR GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_ACTIVE, sControlObjName ) Then
175
         IsDataActive = TRUE
187
          IsDataActive = TRUE
176
      Else
-
 
177
         IsDataActive = GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_ACTIVE )
-
 
178
      End If
188
      End If
179
 
-
 
180
   End Function
189
   End Function
181
   '-----------------------------------------------------------------------------------------------------------------
190
   '-----------------------------------------------------------------------------------------------------------------
182
   Public Function IsActive ( sControlObjName )
191
   Public Function IsActive ( sControlObjName )
183
      If ( mobjStaticControl.Item (Cstr( sControlObjName &"_"&  enumDB_PERMISSION_TYPE_ACTIVE )) = enumDB_YES )   OR   ( IsNull(sControlObjName) )Then
192
      Dim key : key = Cstr( sControlObjName &"_"&  enumDB_PERMISSION_TYPE_ACTIVE )
184
         IsActive = TRUE
193
      IsActive = FALSE
185
      Else
194
      If mobjStaticControl.Exists(key) Then
-
 
195
          If ( mobjStaticControl.Item (key) = enumDB_YES )   OR   ( IsNull(sControlObjName) )Then
186
         IsActive = FALSE
196
             IsActive = TRUE
-
 
197
          End If
187
      End If
198
      End If
188
 
199
 
189
   End Function
200
   End Function
190
   '-----------------------------------------------------------------------------------------------------------------
201
   '-----------------------------------------------------------------------------------------------------------------
191
   Public Function IsVisible ( sControlObjName )
202
   Public Function IsVisible ( sControlObjName )
192
      If mobjStaticControl.Item (Cstr( sControlObjName &"_"& enumDB_PERMISSION_TYPE_VISIBLE )) = enumDB_YES Then
203
      Dim key : key = Cstr( sControlObjName &"_"& enumDB_PERMISSION_TYPE_VISIBLE )
193
         IsVisible = TRUE
-
 
194
      Else
-
 
195
         IsVisible = FALSE
204
         IsVisible = FALSE
-
 
205
      If mobjStaticControl.Exists(key) Then
-
 
206
          If mobjStaticControl.Item (key) = enumDB_YES Then
-
 
207
             IsVisible = TRUE
-
 
208
        End If
196
      End If
209
      End If
197
   End Function
210
   End Function
198
   '-----------------------------------------------------------------------------------------------------------------
211
   '-----------------------------------------------------------------------------------------------------------------
199
   ' This function is used for HTML conponents that support attribute "disabled". i.e. Button, dropdown, etc.
212
   ' This function is used for HTML conponents that support attribute "disabled". i.e. Button, dropdown, etc.
200
   Public Function IsComponentDisabled ( sControlObjName )
213
   Public Function IsComponentDisabled ( sControlObjName )
Line 205... Line 218...
205
      End If
218
      End If
206
   End Function
219
   End Function
207
   '-----------------------------------------------------------------------------------------------------------------
220
   '-----------------------------------------------------------------------------------------------------------------
208
   Public Sub LoadDataPermissions ( aRows )
221
   Public Sub LoadDataPermissions ( aRows )
209
      Dim numOfRows, rowNum
222
      Dim numOfRows, rowNum
210
      Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
223
      Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission, InxControl
-
 
224
      Dim TableName, RefColumnVal, PermissionType, Permission, Control
-
 
225
      Dim key
211
 
226
 
212
      InxTableName      = 0
227
      InxTableName      = 0
213
      InxRefColumnVal      = 1
228
      InxRefColumnVal   = 1
214
      InxPermissionType   = 2
229
      InxPermissionType = 2
215
      InxPermission      = 3
230
      InxPermission     = 3
-
 
231
      InxControl        = 4
-
 
232
 
-
 
233
      ' Nothing to do ifthere is no data
-
 
234
      If IsNull(aRows) OR IsEmpty(aRows) Then
-
 
235
          Exit Sub
-
 
236
      End If
216
 
237
 
217
      numOfRows = UBound( aRows, 2 )
238
      numOfRows = UBound( aRows, 2 )
218
 
239
 
219
      For rowNum = 0 To numOfRows
240
      For rowNum = 0 To numOfRows
220
 
241
 
-
 
242
          TableName         =  aRows( InxTableName, rowNum )
-
 
243
          RefColumnVal      =  aRows( InxRefColumnVal, rowNum )
-
 
244
          PermissionType    =  aRows( InxPermissionType, rowNum )
-
 
245
          Permission        =  aRows( InxPermission, rowNum )
-
 
246
          Control           =  aRows( InxControl, rowNum )
221
 
247
 
222
         If aRows( InxRefColumnVal, rowNum ) = 0 Then
248
         If RefColumnVal = 0 Then
223
            '--- Set Table Default Permission (i.e. "0" wildcard for "all records") ---
249
            '--- Set Table Default Permission (i.e. "0" wildcard for "all records") ---
-
 
250
            key = TableName  & "_" & Control & "_" & PermissionType 
-
 
251
            '
-
 
252
            ' Data appears to be wrong and useless
-
 
253
            ' Don't populate this table
224
            mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = aRows( InxPermission, rowNum )
254
            'mobjTablePermissions.Item ( key ) = Permission
225
 
255
 
226
         Else
256
         Else
227
            '--- Set Row Permission ---
257
            '--- Set Row Permission ---
228
            mobjRowPermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxRefColumnVal, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = aRows( InxPermission, rowNum )
258
            key = TableName  & "_" & RefColumnVal & "_" & Control & "_" & PermissionType 
-
 
259
            mobjRowPermissions.Item ( key ) = Permission
229
 
260
 
230
         End If
261
         End If
231
 
262
 
232
 
263
 
233
      Next
264
      Next
234
 
265
 
235
      'Response.write "mobjRowPermissions.Keys="& Join ( mobjRowPermissions.Keys, ", ") &"<br>"
266
    'Response.Write "</pre><br>Pretty Dictionary mobjRowPermissions<pre>"
236
      'Response.write "mobjRowPermissions.Items="& Join ( mobjRowPermissions.Items, ", ") &"<br>"
267
    'Response.Write DICToutput(mobjRowPermissions)
237
      'Response.write "mobjTablePermissions.Keys="& Join ( mobjTablePermissions.Keys, ", ") &"<br>"
268
    'Response.Write "</pre><br>Pretty Dictionary mobjTablePermissions<pre>"
238
      'Response.write "mobjTablePermissions.Items="& Join ( mobjTablePermissions.Items, ", ") &"<br>"
269
    'Response.Write DICToutput(mobjTablePermissions)
-
 
270
    'Response.write "</pre>"
239
   End Sub
271
   End Sub
240
   '-----------------------------------------------------------------------------------------------------------------
272
   '-----------------------------------------------------------------------------------------------------------------
241
   Public Sub LoadDataPermissionVariations ( aRows )
273
   Public Sub LoadDataPermissionVariations ( aRows )
242
      Dim numOfRows, rowNum
274
      Dim numOfRows, rowNum
243
      Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
275
      Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
Line 269... Line 301...
269
   End Sub
301
   End Sub
270
   '-----------------------------------------------------------------------------------------------------------------
302
   '-----------------------------------------------------------------------------------------------------------------
271
   Public Sub LoadStaticPermissions ( aRows )
303
   Public Sub LoadStaticPermissions ( aRows )
272
      Dim numOfRows, rowNum
304
      Dim numOfRows, rowNum
273
      Dim InxObjName, InxPermissionType, InxPermission
305
      Dim InxObjName, InxPermissionType, InxPermission
-
 
306
      Dim dKey, dValue
274
 
307
 
275
      InxObjName          = 0
308
      InxObjName          = 0
276
      InxPermissionType   = 1
309
      InxPermissionType   = 1
277
      InxPermission      = 2
310
      InxPermission       = 2
278
 
311
 
279
      numOfRows = UBound( aRows, 2 )
312
      numOfRows = UBound( aRows, 2 )
280
 
313
 
281
      For rowNum = 0 To numOfRows
314
      For rowNum = 0 To numOfRows
282
 
-
 
283
         'Response.write " "& aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum ) &"="& CStr( aRows( InxPermission, rowNum ) ) &"<br>"
315
        dKey = aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum )
284
         'Response.write "--"& mobjStaticControl.Count &"<br>"
316
        dValue = CStr( aRows( InxPermission, rowNum ) )  
285
 
-
 
286
         mobjStaticControl.Add ( aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum ) ), CStr( aRows( InxPermission, rowNum ) )
317
        mobjStaticControl.Add ( dKey ), dValue
287
 
-
 
288
      Next
318
      Next
289
 
319
 
-
 
320
      'Response.Write "<br>Pretty Dictionary LoadStaticPermissions mobjStaticControl<pre>"
-
 
321
      'Response.Write DICToutput(mobjStaticControl)
-
 
322
      'Response.Write "</pre>"    
290
 
323
 
291
   End Sub
324
   End Sub
292
   '-----------------------------------------------------------------------------------------------------------------
325
   '-----------------------------------------------------------------------------------------------------------------
293
   Private Function AutoLogonUser ( sUserId )
326
   Private Function AutoLogonUser ( sUserId )
294
      Dim rsQry, query, is_Online
327
      Dim rsQry, query, is_Online
Line 296... Line 329...
296
 
329
 
297
      '-- Kill Any pervious User Permissions stored in session --
330
      '-- Kill Any pervious User Permissions stored in session --
298
      Session.Contents.Remove(enumUSER_STATIC_PERMISSIONS)
331
      Session.Contents.Remove(enumUSER_STATIC_PERMISSIONS)
299
      Session.Contents.Remove(enumUSER_DATA_PERMISSIONS)
332
      Session.Contents.Remove(enumUSER_DATA_PERMISSIONS)
300
 
333
 
301
      '--- Get if user is loged on from DB ---
334
      '--- Get if user is logged on from DB ---
302
      moOraDatabase.Parameters.Add "USER_ID",  sUserId, ORAPARM_INPUT, ORATYPE_NUMBER
335
      moOraDatabase.Parameters.Add "USER_ID",  sUserId, ORAPARM_INPUT, ORATYPE_NUMBER
303
 
336
 
304
      query = "SELECT usr.IS_ONLINE  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
337
      query = "SELECT usr.IS_ONLINE  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
305
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
338
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
306
 
339
 
Line 686... Line 719...
686
      Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
719
      Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
687
      Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
720
      Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
688
      mbIsApplicationRunning = NULL   ' The state of application
721
      mbIsApplicationRunning = NULL   ' The state of application
689
 
722
 
690
      sSEPARATOR = "||"
723
      sSEPARATOR = "||"
-
 
724
      bDebug = false
691
 
725
 
692
   End Sub
726
   End Sub
693
   '-----------------------------------------------------------------------------------------------------------------
727
   '-----------------------------------------------------------------------------------------------------------------
694
   Private Sub Class_Terminate()
728
   Private Sub Class_Terminate()
695
      '// Perform action on object disposal. e.g. Set myObj = Nothing
729
      '// Perform action on object disposal. e.g. Set myObj = Nothing
Line 698... Line 732...
698
      Set mobjTablePermissions = Nothing
732
      Set mobjTablePermissions = Nothing
699
 
733
 
700
   End Sub
734
   End Sub
701
   '-----------------------------------------------------------------------------------------------------------------
735
   '-----------------------------------------------------------------------------------------------------------------
702
End Class
736
End Class
703
%>
-
 
704
737
%>
-
 
738