Subversion Repositories DevTools

Rev

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

Rev 119 Rev 129
Line 1... Line 1...
1
<%
1
<%
2
'=============================================================
2
'=============================================================
3
'//
3
'//
4
'//						Access Control
4
'//                  Access Control
5
'//
5
'//
6
'// version: 		5.0
6
'// version:       5.0
7
'//	last modified: 	15-June-2005 14:04 by Sasha Vukovic
7
'//   last modified:    15-June-2005 14:04 by Sasha Vukovic
8
'=============================================================
8
'=============================================================
9
%>
9
%>
10
<%
10
<%
11
'--------------- Global Constants ----------------
11
'--------------- Global Constants ----------------
12
Const enumSESSION_TIMEOUT = 200		' Minutes
12
Const enumSESSION_TIMEOUT = 200      ' Minutes
13
Const enumSESSION_LAST_REQUEST = "AM_SESSION_LAST_REQUEST"
13
Const enumSESSION_LAST_REQUEST = "AM_SESSION_LAST_REQUEST"
14
Const enumLOGIN_TOKEN_SESSION = "AM_LOGIN_TOKEN"
14
Const enumLOGIN_TOKEN_SESSION = "AM_LOGIN_TOKEN"
15
Const enumUSER_ID_SESSION = "AM_USER_ID"
15
Const enumUSER_ID_SESSION = "AM_USER_ID"
16
Const enumUSER_DETAILS_SESSION = "AM_USER_DETAILS"
16
Const enumUSER_DETAILS_SESSION = "AM_USER_DETAILS"
17
Const enumUSER_APPLICATIONS_SESSION = "AM_USER_APPLICATIONS"
17
Const enumUSER_APPLICATIONS_SESSION = "AM_USER_APPLICATIONS"
18
Const enumUSER_STATIC_PERMISSIONS = "AM_USER_STATIC_PERMISSIONS"
18
Const enumUSER_STATIC_PERMISSIONS = "AM_USER_STATIC_PERMISSIONS"
19
Const enumUSER_DATA_PERMISSIONS = "AM_USER_DATA_PERMISSIONS"
19
Const enumUSER_DATA_PERMISSIONS = "AM_USER_DATA_PERMISSIONS"
20
Const enumUSER_TEMP_VARIABLE = "AM_USER_TEMP_VARIABLE"
20
Const enumUSER_TEMP_VARIABLE = "AM_USER_TEMP_VARIABLE"
21
Const enumACCESS_MANAGER_EVENT_LOGON_SUCCESS  = 1
21
Const enumACCESS_MANAGER_EVENT_LOGON_SUCCESS  = 1
22
Const enumACCESS_MANAGER_EVENT_LOGON_FAIL  	  = -1
22
Const enumACCESS_MANAGER_EVENT_LOGON_FAIL       = -1
23
Const enumACCESS_MANAGER_EVENT_LOGOFF 		  = 0
23
Const enumACCESS_MANAGER_EVENT_LOGOFF         = 0
24
Const enumACCESS_MANAGER_EVENT_SESSION_EXPIRE = 2
24
Const enumACCESS_MANAGER_EVENT_SESSION_EXPIRE = 2
25
'-------------------------------------------------
25
'-------------------------------------------------
26
 
26
 
27
Class AccessControl
27
Class AccessControl
28
	Private moOraSession
28
   Private moOraSession
29
	Private moOraDatabase
29
   Private moOraDatabase
30
	Private mobjStaticControl
30
   Private mobjStaticControl
31
	Private mobjRowPermissions
31
   Private mobjRowPermissions
32
	Private mobjTablePermissions
32
   Private mobjTablePermissions
33
	Private sSEPARATOR
33
   Private sSEPARATOR
34
	Private mbIsApplicationRunning
34
   Private mbIsApplicationRunning
35
	
35
 
36
	Public Property Let objOraDatabase ( ByRef oOraDatabase )
36
   Public Property Let objOraDatabase ( ByRef oOraDatabase )
37
		Set moOraDatabase = oOraDatabase
37
      Set moOraDatabase = oOraDatabase
38
	End Property
38
   End Property
39
	
39
 
40
	Public Property Let objOraSession ( ByRef oOraSession )
40
   Public Property Let objOraSession ( ByRef oOraSession )
41
		Set moOraSession = oOraSession
41
      Set moOraSession = oOraSession
42
	End Property
42
   End Property
43
	
43
 
44
	Public Property Get UserLogedIn ()
44
   Public Property Get UserLogedIn ()
45
		UserLogedIn = FALSE
45
      UserLogedIn = FALSE
46
		
46
 
47
		' Check for Session Token
47
      ' Check for Session Token
48
		If (Session(enumLOGIN_TOKEN_SESSION) <> "") AND NOT IsNull(Session(enumLOGIN_TOKEN_SESSION)) Then  
48
      If (Session(enumLOGIN_TOKEN_SESSION) <> "") AND NOT IsNull(Session(enumLOGIN_TOKEN_SESSION)) Then
49
			UserLogedIn = TRUE
49
         UserLogedIn = TRUE
50
		End If
50
      End If
51
		
51
 
52
	End Property
52
   End Property
53
	
53
 
54
	Public Property Get UserId ()
54
   Public Property Get UserId ()
55
		UserId = Session(enumUSER_ID_SESSION)
55
      UserId = Session(enumUSER_ID_SESSION)
56
	End Property
56
   End Property
57
	
57
 
58
	Public Property Get UserName ()
58
   Public Property Get UserName ()
59
		UserName = Extract( "user_name", Session(enumUSER_DETAILS_SESSION) )
59
      UserName = Extract( "user_name", Session(enumUSER_DETAILS_SESSION) )
60
	End Property
60
   End Property
61
	
61
 
62
	Public Property Get FullName ()
62
   Public Property Get FullName ()
63
		FullName = Extract( "full_name", Session(enumUSER_DETAILS_SESSION) )
63
      FullName = Extract( "full_name", Session(enumUSER_DETAILS_SESSION) )
64
	End Property
64
   End Property
65
	
65
 
66
	Public Property Get UserEmail ()
66
   Public Property Get UserEmail ()
67
		UserEmail = Extract( "user_email", Session(enumUSER_DETAILS_SESSION) )
67
      UserEmail = Extract( "user_email", Session(enumUSER_DETAILS_SESSION) )
68
	End Property
68
   End Property
69
	
69
 
70
	Public Property Get LastVisit ()
70
   Public Property Get LastVisit ()
71
		LastVisit = Extract( "last_visit", Session(enumUSER_DETAILS_SESSION) )
71
      LastVisit = Extract( "last_visit", Session(enumUSER_DETAILS_SESSION) )
72
	End Property
72
   End Property
73
	
73
 
74
	Public Property Get Domain ()
74
   Public Property Get Domain ()
75
		Domain = Extract( "domain", Session(enumUSER_DETAILS_SESSION) )
75
      Domain = Extract( "domain", Session(enumUSER_DETAILS_SESSION) )
76
	End Property
76
   End Property
77
	
77
 
78
	Public Property Get IsApplicationRunning()
78
   Public Property Get IsApplicationRunning()
79
		If IsNull(mbIsApplicationRunning) Then
79
      If IsNull(mbIsApplicationRunning) Then
80
			Call GetApplicationRunningLevel ()
80
         Call GetApplicationRunningLevel ()
81
			
81
 
82
		End If
82
      End If
83
		
83
 
84
		IsApplicationRunning = mbIsApplicationRunning
84
      IsApplicationRunning = mbIsApplicationRunning
85
	End Property
85
   End Property
86
	
86
 
87
	'-----------------------------------------------------------------------------------------------------------------
87
   '-----------------------------------------------------------------------------------------------------------------
88
	Public Function UserApplication ( nAppId )
88
   Public Function UserApplication ( nAppId )
89
		UserApplication = FALSE
89
      UserApplication = FALSE
90
		
90
 
91
		If InStr( sSEPARATOR & Session(enumUSER_APPLICATIONS_SESSION) & sSEPARATOR,  sSEPARATOR & nAppId & sSEPARATOR)  Then
91
      If InStr( sSEPARATOR & Session(enumUSER_APPLICATIONS_SESSION) & sSEPARATOR,  sSEPARATOR & nAppId & sSEPARATOR)  Then
92
			UserApplication = TRUE
92
         UserApplication = TRUE
93
		End If
93
      End If
94
		
94
 
95
	End Function
95
   End Function
96
	'-----------------------------------------------------------------------------------------------------------------
96
   '-----------------------------------------------------------------------------------------------------------------
97
	Public Function BeginRegion ( sControlObjName )
97
   Public Function BeginRegion ( sControlObjName )
98
		Response.write "<table width='100%'  border='0' cellspacing='0' cellpadding='1'>"
98
      Response.write "<table width='100%'  border='0' cellspacing='0' cellpadding='1'>"
99
		Response.write "  <tr>"
99
      Response.write "  <tr>"
100
		Response.write "    <td bgcolor='#FF0000'>&nbsp;<a href='#' class='body_linkw'><b>"& sControlObjName &"</b></a>&nbsp;</td>"
100
      Response.write "    <td bgcolor='#FF0000'>&nbsp;<a href='#' class='body_linkw'><b>"& sControlObjName &"</b></a>&nbsp;</td>"
101
		Response.write "  </tr>"
101
      Response.write "  </tr>"
102
		Response.write "  <tr>"
102
      Response.write "  <tr>"
103
		Response.write "    <td bgcolor='#FF0000'>"
103
      Response.write "    <td bgcolor='#FF0000'>"
104
		Response.write "		<table width='100%'  border='0' cellspacing='0' cellpadding='0'>"
104
      Response.write "      <table width='100%'  border='0' cellspacing='0' cellpadding='0'>"
105
		Response.write "  			<tr><td bgcolor='#FFFFFF'>"
105
      Response.write "           <tr><td bgcolor='#FFFFFF'>"
106
	End Function
106
   End Function
107
	'-----------------------------------------------------------------------------------------------------------------
107
   '-----------------------------------------------------------------------------------------------------------------
108
	Public Function EndRegion ( sControlObjName )
108
   Public Function EndRegion ( sControlObjName )
109
		Response.write " 	</td></tr></table>"
109
      Response.write "    </td></tr></table>"
110
		Response.write " </td></tr>"
110
      Response.write " </td></tr>"
111
		Response.write "</table>"
111
      Response.write "</table>"
112
	End Function
112
   End Function
113
	'-----------------------------------------------------------------------------------------------------------------
113
   '-----------------------------------------------------------------------------------------------------------------
114
	Private Function Extract( sField, sString )
114
   Private Function Extract( sField, sString )
115
		Dim tempArr, tempSTR
115
      Dim tempArr, tempSTR
116
		
116
 
117
		tempArr = Split( sString, sSEPARATOR )
117
      tempArr = Split( sString, sSEPARATOR )
118
		tempSTR = Join( Filter( tempArr, sField &"=" ) )	' Append "=" to field name to get e.g. "user_name="
118
      tempSTR = Join( Filter( tempArr, sField &"=" ) )   ' Append "=" to field name to get e.g. "user_name="
119
		
119
 
120
		Extract = Right( tempSTR, Len(tempSTR) - Len( sField &"=" ))	' Strip the filed name from value
120
      Extract = Right( tempSTR, Len(tempSTR) - Len( sField &"=" ))   ' Strip the filed name from value
121
		
121
 
122
	End Function
122
   End Function
123
	'-----------------------------------------------------------------------------------------------------------------
123
   '-----------------------------------------------------------------------------------------------------------------
124
	Private Function GetDataPermission ( sTableName, nRowId, nPermissionType )
124
   Private Function GetDataPermission ( sTableName, nRowId, nPermissionType )
125
		Dim cPermissionValue
125
      Dim cPermissionValue
126
		
126
 
127
		'--- Get Row Permission ---
127
      '--- Get Row Permission ---
128
		cPermissionValue = mobjRowPermissions.Item ( Cstr( sTableName &"_"& nRowId &"_"& nPermissionType ) )
128
      cPermissionValue = mobjRowPermissions.Item ( Cstr( sTableName &"_"& nRowId &"_"& nPermissionType ) )
129
		
129
 
130
		
130
 
131
		'Response.write " VALUE="& cPermissionValue &" for "& sTableName &" "& nRowId &" "& nPermissionType &", "
131
      'Response.write " VALUE="& cPermissionValue &" for "& sTableName &" "& nRowId &" "& nPermissionType &", "
132
		
132
 
133
		
133
 
134
		If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
134
      If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
135
			
135
 
136
			'--- Get Default Table Permission ---
136
         '--- Get Default Table Permission ---
137
			cPermissionValue = mobjTablePermissions.Item ( Cstr( sTableName &"_"& nPermissionType ) )
137
         cPermissionValue = mobjTablePermissions.Item ( Cstr( sTableName &"_"& nPermissionType ) )
138
			
138
 
139
			'--- Raise Exception if Table Default is not found ---
139
         '--- Raise Exception if Table Default is not found ---
140
			'If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
140
         'If IsNull( cPermissionValue )  OR  ( cPermissionValue = "" ) Then
141
			'	Err.Raise 8, "Default Table Permission is Not Found.", "sTableName="& sTableName &", nPermissionType="& nPermissionType
141
         '   Err.Raise 8, "Default Table Permission is Not Found.", "sTableName="& sTableName &", nPermissionType="& nPermissionType
142
			'	Exit Function
142
         '   Exit Function
143
			'End If
143
         'End If
144
			
144
 
145
			
145
 
146
			'Response.write " VALUE="& cPermissionValue &" for "& sTableName &" "& nRowId &" "& nPermissionType &", "
146
         'Response.write " VALUE="& cPermissionValue &" for "& sTableName &" "& nRowId &" "& nPermissionType &", "
147
			
147
 
148
		End If
148
      End If
149
		
149
 
150
		
150
 
151
		'--- Return TRUE / FALSE ---
151
      '--- Return TRUE / FALSE ---
152
		GetDataPermission = FALSE
152
      GetDataPermission = FALSE
153
		If cPermissionValue = enumDB_YES Then
153
      If cPermissionValue = enumDB_YES Then
154
			GetDataPermission = TRUE
154
         GetDataPermission = TRUE
155
		End If
155
      End If
156
		
156
 
157
	End Function
157
   End Function
158
	'-----------------------------------------------------------------------------------------------------------------
158
   '-----------------------------------------------------------------------------------------------------------------
159
	Public Function IsDataVisible ( sTableName, nRowId, sControlObjName )
159
   Public Function IsDataVisible ( sTableName, nRowId, sControlObjName )
160
		IsDataVisible = FALSE
160
      IsDataVisible = FALSE
161
		
161
 
162
		If IsVisible ( sControlObjName ) Then
162
      If IsVisible ( sControlObjName ) Then
163
			IsDataVisible = GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_VISIBLE )
163
         IsDataVisible = GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_VISIBLE )
164
		End If
164
      End If
165
		
165
 
166
	End Function
166
   End Function
167
	'-----------------------------------------------------------------------------------------------------------------
167
   '-----------------------------------------------------------------------------------------------------------------
168
	Public Function IsDataActive ( sTableName, nRowId, sControlObjName )
168
   Public Function IsDataActive ( sTableName, nRowId, sControlObjName )
169
		IsDataActive = FALSE
169
      IsDataActive = FALSE
170
		
170
 
171
		If IsActive ( sControlObjName ) Then
171
      If IsActive ( sControlObjName ) Then
172
			IsDataActive = TRUE
172
         IsDataActive = TRUE
173
		Else
173
      Else
174
			IsDataActive = GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_ACTIVE )
174
         IsDataActive = GetDataPermission ( sTableName, nRowId, enumDB_PERMISSION_TYPE_ACTIVE )
175
		End If
175
      End If
176
		
176
 
177
	End Function
177
   End Function
178
	'-----------------------------------------------------------------------------------------------------------------
178
   '-----------------------------------------------------------------------------------------------------------------
179
	Public Function IsActive ( sControlObjName )
179
   Public Function IsActive ( sControlObjName )
180
		If ( mobjStaticControl.Item (Cstr( sControlObjName &"_"&  enumDB_PERMISSION_TYPE_ACTIVE )) = enumDB_YES )   OR   ( IsNull(sControlObjName) )Then
180
      If ( mobjStaticControl.Item (Cstr( sControlObjName &"_"&  enumDB_PERMISSION_TYPE_ACTIVE )) = enumDB_YES )   OR   ( IsNull(sControlObjName) )Then
181
			IsActive = TRUE
181
         IsActive = TRUE
182
		Else
182
      Else
183
			IsActive = FALSE
183
         IsActive = FALSE
184
		End If
184
      End If
185
		
185
 
186
	End Function
186
   End Function
187
	'-----------------------------------------------------------------------------------------------------------------
187
   '-----------------------------------------------------------------------------------------------------------------
188
	Public Function IsVisible ( sControlObjName )
188
   Public Function IsVisible ( sControlObjName )
189
		If mobjStaticControl.Item (Cstr( sControlObjName &"_"& enumDB_PERMISSION_TYPE_VISIBLE )) = enumDB_YES Then
189
      If mobjStaticControl.Item (Cstr( sControlObjName &"_"& enumDB_PERMISSION_TYPE_VISIBLE )) = enumDB_YES Then
190
			IsVisible = TRUE
190
         IsVisible = TRUE
191
		Else
191
      Else
192
			IsVisible = FALSE
192
         IsVisible = FALSE
193
		End If
193
      End If
194
	End Function
194
   End Function
195
	'-----------------------------------------------------------------------------------------------------------------
195
   '-----------------------------------------------------------------------------------------------------------------
196
	' This function is used for HTML conponents that support attribute "disabled". i.e. Button, dropdown, etc.
196
   ' This function is used for HTML conponents that support attribute "disabled". i.e. Button, dropdown, etc.
197
	Public Function IsComponentDisabled ( sControlObjName )
197
   Public Function IsComponentDisabled ( sControlObjName )
198
		If IsVisible ( sControlObjName ) Then
198
      If IsVisible ( sControlObjName ) Then
199
			IsComponentDisabled = ""
199
         IsComponentDisabled = ""
200
		Else
200
      Else
201
			IsComponentDisabled = " disabled "
201
         IsComponentDisabled = " disabled "
202
		End If
202
      End If
203
	End Function
203
   End Function
204
	'-----------------------------------------------------------------------------------------------------------------
204
   '-----------------------------------------------------------------------------------------------------------------
205
	Public Sub LoadDataPermissions ( aRows )
205
   Public Sub LoadDataPermissions ( aRows )
206
		Dim numOfRows, rowNum
206
      Dim numOfRows, rowNum
207
		Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
207
      Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
208
		
208
 
209
		InxTableName		= 0
209
      InxTableName      = 0
210
		InxRefColumnVal		= 1
210
      InxRefColumnVal      = 1
211
		InxPermissionType	= 2
211
      InxPermissionType   = 2
212
		InxPermission		= 3
212
      InxPermission      = 3
213
		
213
 
214
		numOfRows = UBound( aRows, 2 )
214
      numOfRows = UBound( aRows, 2 )
215
		
215
 
216
		For rowNum = 0 To numOfRows
216
      For rowNum = 0 To numOfRows
217
			
217
 
218
			
218
 
219
			If aRows( InxRefColumnVal, rowNum ) = 0 Then
219
         If aRows( InxRefColumnVal, rowNum ) = 0 Then
220
				'--- Set Table Default Permission (i.e. "0" wildcard for "all records") ---
220
            '--- Set Table Default Permission (i.e. "0" wildcard for "all records") ---
221
				mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = aRows( InxPermission, rowNum )
221
            mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = aRows( InxPermission, rowNum )
222
				
222
 
223
			Else
223
         Else
224
				'--- Set Row Permission ---
224
            '--- Set Row Permission ---
225
				mobjRowPermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxRefColumnVal, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = aRows( InxPermission, rowNum )
225
            mobjRowPermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxRefColumnVal, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = aRows( InxPermission, rowNum )
226
				
226
 
227
			End If
227
         End If
228
			
228
 
229
			
229
 
230
		Next
230
      Next
231
		
231
 
232
		'Response.write "mobjRowPermissions.Keys="& Join ( mobjRowPermissions.Keys, ", ") &"<br>"
232
      'Response.write "mobjRowPermissions.Keys="& Join ( mobjRowPermissions.Keys, ", ") &"<br>"
233
		'Response.write "mobjRowPermissions.Items="& Join ( mobjRowPermissions.Items, ", ") &"<br>"
233
      'Response.write "mobjRowPermissions.Items="& Join ( mobjRowPermissions.Items, ", ") &"<br>"
234
		'Response.write "mobjTablePermissions.Keys="& Join ( mobjTablePermissions.Keys, ", ") &"<br>"
234
      'Response.write "mobjTablePermissions.Keys="& Join ( mobjTablePermissions.Keys, ", ") &"<br>"
235
		'Response.write "mobjTablePermissions.Items="& Join ( mobjTablePermissions.Items, ", ") &"<br>"
235
      'Response.write "mobjTablePermissions.Items="& Join ( mobjTablePermissions.Items, ", ") &"<br>"
236
	End Sub
236
   End Sub
237
	'-----------------------------------------------------------------------------------------------------------------
237
   '-----------------------------------------------------------------------------------------------------------------
238
	Public Sub LoadDataPermissionVariations ( aRows )
238
   Public Sub LoadDataPermissionVariations ( aRows )
239
		Dim numOfRows, rowNum
239
      Dim numOfRows, rowNum
240
		Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
240
      Dim InxTableName, InxRefColumnVal, InxPermissionType, InxPermission
241
		
241
 
242
		InxTableName		= 0
242
      InxTableName      = 0
243
		InxRefColumnVal		= 1
243
      InxRefColumnVal      = 1
244
		InxPermissionType	= 2
244
      InxPermissionType   = 2
245
		InxPermission		= 3
245
      InxPermission      = 3
246
		
246
 
247
		numOfRows = UBound( aRows, 2 )
247
      numOfRows = UBound( aRows, 2 )
248
		
248
 
249
		For rowNum = 0 To numOfRows
249
      For rowNum = 0 To numOfRows
250
			If mobjRowPermissions.Exists ( aRows( InxTableName, rowNum ) &"_"& enumDB_ALL_DATA &"_"& aRows( InxPermissionType, rowNum ) )Then 
250
         If mobjRowPermissions.Exists ( aRows( InxTableName, rowNum ) &"_"& enumDB_ALL_DATA &"_"& aRows( InxPermissionType, rowNum ) )Then
251
				mobjRowPermissions.Remove ( aRows( InxTableName, rowNum ) &"_"& enumDB_ALL_DATA &"_"& aRows( InxPermissionType, rowNum ) )
251
            mobjRowPermissions.Remove ( aRows( InxTableName, rowNum ) &"_"& enumDB_ALL_DATA &"_"& aRows( InxPermissionType, rowNum ) )
252
			End If
252
         End If
253
			
253
 
254
			mobjRowPermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxRefColumnVal, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = CStr( aRows( InxPermission, rowNum ) )
254
         mobjRowPermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxRefColumnVal, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) = CStr( aRows( InxPermission, rowNum ) )
255
			
255
 
256
			If aRows( InxPermission, rowNum ) = enumDB_NO Then
256
         If aRows( InxPermission, rowNum ) = enumDB_NO Then
257
				mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) =  enumDB_YES
257
            mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) =  enumDB_YES
258
			Else
258
         Else
259
				mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) =  enumDB_NO
259
            mobjTablePermissions.Item ( aRows( InxTableName, rowNum ) &"_"& aRows( InxPermissionType, rowNum ) ) =  enumDB_NO
260
				
260
 
261
			End If
261
         End If
262
			
262
 
263
			
263
 
264
		Next
264
      Next
265
		'Response.write "mobjRowPermissions.Keys="& Join ( mobjRowPermissions.Keys, ", ")
265
      'Response.write "mobjRowPermissions.Keys="& Join ( mobjRowPermissions.Keys, ", ")
266
	End Sub
266
   End Sub
267
	'-----------------------------------------------------------------------------------------------------------------
267
   '-----------------------------------------------------------------------------------------------------------------
268
	Public Sub LoadStaticPermissions ( aRows )
268
   Public Sub LoadStaticPermissions ( aRows )
269
		Dim numOfRows, rowNum
269
      Dim numOfRows, rowNum
270
		Dim InxObjName, InxPermissionType, InxPermission
270
      Dim InxObjName, InxPermissionType, InxPermission
271
		
271
 
272
		InxObjName 			= 0
272
      InxObjName          = 0
273
		InxPermissionType	= 1
273
      InxPermissionType   = 1
274
		InxPermission		= 2
274
      InxPermission      = 2
275
		
275
 
276
		numOfRows = UBound( aRows, 2 )
276
      numOfRows = UBound( aRows, 2 )
277
		
277
 
278
		For rowNum = 0 To numOfRows
278
      For rowNum = 0 To numOfRows
279
			
279
 
280
			'Response.write " "& aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum ) &"="& CStr( aRows( InxPermission, rowNum ) ) &"<br>"
280
         'Response.write " "& aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum ) &"="& CStr( aRows( InxPermission, rowNum ) ) &"<br>"
281
			'Response.write "--"& mobjStaticControl.Count &"<br>"
281
         'Response.write "--"& mobjStaticControl.Count &"<br>"
282
			
282
 
283
			mobjStaticControl.Add ( aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum ) ), CStr( aRows( InxPermission, rowNum ) )
283
         mobjStaticControl.Add ( aRows( InxObjName, rowNum ) &"_"&  aRows( InxPermissionType, rowNum ) ), CStr( aRows( InxPermission, rowNum ) )
284
			
284
 
285
		Next
285
      Next
286
		
286
 
287
		
287
 
288
	End Sub
288
   End Sub
289
	'-----------------------------------------------------------------------------------------------------------------
289
   '-----------------------------------------------------------------------------------------------------------------
290
	Private Function AutoLogonUser ( sUserId )
290
   Private Function AutoLogonUser ( sUserId )
291
		Dim rsQry, query, is_Online
291
      Dim rsQry, query, is_Online
292
		AutoLogonUser = FALSE
292
      AutoLogonUser = FALSE
293
		
293
 
294
		'-- Kill Any pervious User Permissions stored in session --
294
      '-- Kill Any pervious User Permissions stored in session --
295
		Session.Contents.Remove(enumUSER_STATIC_PERMISSIONS)
295
      Session.Contents.Remove(enumUSER_STATIC_PERMISSIONS)
296
		Session.Contents.Remove(enumUSER_DATA_PERMISSIONS)
296
      Session.Contents.Remove(enumUSER_DATA_PERMISSIONS)
297
		
297
 
298
		'--- Get if user is loged on from DB ---
298
      '--- Get if user is loged on from DB ---
299
		moOraDatabase.Parameters.Add "USER_ID",  sUserId, ORAPARM_INPUT, ORATYPE_NUMBER
299
      moOraDatabase.Parameters.Add "USER_ID",  sUserId, ORAPARM_INPUT, ORATYPE_NUMBER
300
		
300
 
301
		query = "SELECT usr.IS_ONLINE  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
301
      query = "SELECT usr.IS_ONLINE  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
302
		Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
302
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
303
		
303
 
304
		If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
304
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
305
			is_Online = rsQry("is_online")
305
         is_Online = rsQry("is_online")
306
		End If
306
      End If
307
		
307
 
308
		moOraDatabase.Parameters.Remove "USER_ID"
308
      moOraDatabase.Parameters.Remove "USER_ID"
309
		rsQry.Close
309
      rsQry.Close
310
		Set rsQry = Nothing
310
      Set rsQry = Nothing
311
		
311
 
312
		
312
 
313
		'--- Check if User is still Loged on ---
313
      '--- Check if User is still Loged on ---
314
		If is_Online = "Y" Then
314
      If is_Online = "Y" Then
315
			Call SessionsAndCookieSetup ( sUserId )
315
         Call SessionsAndCookieSetup ( sUserId )
316
			
316
 
317
		End If
317
      End If
318
		
318
 
319
		
319
 
320
	End Function
320
   End Function
321
	'-----------------------------------------------------------------------------------------------------------------
321
   '-----------------------------------------------------------------------------------------------------------------
322
	Public Sub LogonUser ( sUserName, sUserPassword )
322
   Public Sub LogonUser ( sUserName, sUserPassword )
323
		Dim rsQry, query, sMessage
323
      Dim rsQry, query, sMessage
324
		sMessage = NULL
324
      sMessage = NULL
325
		
325
 
326
		'-- Kill Any pervious User Permissions stored in session --
326
      '-- Kill Any pervious User Permissions stored in session --
327
		Session.Contents.Remove(enumUSER_STATIC_PERMISSIONS)
327
      Session.Contents.Remove(enumUSER_STATIC_PERMISSIONS)
328
		Session.Contents.Remove(enumUSER_DATA_PERMISSIONS)
328
      Session.Contents.Remove(enumUSER_DATA_PERMISSIONS)
329
		
329
 
330
		moOraDatabase.Parameters.Add "USER_NAME",   	sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
330
      moOraDatabase.Parameters.Add "USER_NAME",      sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
331
		
331
 
332
		query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_NAME = :USER_NAME"
332
      query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_NAME = :USER_NAME"
333
		Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
333
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
334
		
334
 
335
		moOraDatabase.Parameters.Remove "USER_NAME"
335
      moOraDatabase.Parameters.Remove "USER_NAME"
336
		
336
 
337
		'--- Try Authenticating ---
337
      '--- Try Authenticating ---
338
		If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
338
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
339
			' User Found !
339
         ' User Found !
340
			
340
 
341
			If rsQry("is_disabled") = enumDB_YES  Then
341
         If rsQry("is_disabled") = enumDB_YES  Then
342
				' User Disabled !
342
            ' User Disabled !
343
				sMessage = "Account <b>"& sUserName &"</b> is Disabled!"
343
            sMessage = "Account <b>"& sUserName &"</b> is Disabled!"
344
				
344
 
345
				'-- Login Trail --
345
            '-- Login Trail --
346
				Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
346
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
347
				
347
 
348
				'-- Raise Exception --
348
            '-- Raise Exception --
349
				Err.Raise 8, sMessage, "" 
349
            Err.Raise 8, sMessage, ""
350
				
350
 
351
			Else
351
         Else
352
				
352
 
353
				' Proceed with authentication
353
            ' Proceed with authentication
354
				If Authenticated( sUserName, sUserPassword, rsQry("user_password"), rsQry("domain") ) Then
354
            If Authenticated( sUserName, sUserPassword, rsQry("user_password"), rsQry("domain") ) Then
355
					' Login OK.
355
               ' Login OK.
356
					Call SessionsAndCookieSetup ( rsQry("user_id") )
356
               Call SessionsAndCookieSetup ( rsQry("user_id") )
357
					
357
 
358
					' Tag user login
358
               ' Tag user login
359
					Call TagLogon ( rsQry )
359
               Call TagLogon ( rsQry )
360
					
360
 
361
				End If
361
            End If
362
				
362
 
363
				
363
 
364
			End If
364
         End If
365
			
365
 
366
		Else
366
      Else
367
			' User Not Found !
367
         ' User Not Found !
368
			sMessage = "Account <b>"& sUserName &"</b> Not Found!"
368
         sMessage = "Account <b>"& sUserName &"</b> Not Found!"
369
			
369
 
370
			'-- Login Trail --
370
         '-- Login Trail --
371
			Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
371
         Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
372
			
372
 
373
			'-- Raise Exception --
373
         '-- Raise Exception --
374
			Err.Raise 8, sMessage, "Make sure your Username is correct <br>OR <br>Please go back and register if you are new user. " 
374
         Err.Raise 8, sMessage, "Make sure your Username is correct <br>OR <br>Please go back and register if you are new user. "
375
			
375
 
376
		End If
376
      End If
377
		'--------------------------
377
      '--------------------------
378
		
378
 
379
		
379
 
380
		
380
 
381
		
381
 
382
		rsQry.Close()
382
      rsQry.Close()
383
		Set rsQry = Nothing
383
      Set rsQry = Nothing
384
	End Sub
384
   End Sub
385
	'-----------------------------------------------------------------------------------------------------------------
385
   '-----------------------------------------------------------------------------------------------------------------
386
	Public Function RequiresPasswordUpdate ( sUserName )
386
   Public Function RequiresPasswordUpdate ( sUserName )
387
		Dim rsQry, query, sMessage
387
      Dim rsQry, query, sMessage
388
		sMessage = NULL
388
      sMessage = NULL
389
		
389
 
390
		moOraDatabase.Parameters.Add "USER_NAME",   	sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
390
      moOraDatabase.Parameters.Add "USER_NAME",      sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
391
		
391
 
392
		query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_NAME = :USER_NAME"
392
      query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_NAME = :USER_NAME"
393
		Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
393
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
394
		
394
 
395
		
395
 
396
		'--- Try Authenticating ---
396
      '--- Try Authenticating ---
397
		RequiresPasswordUpdate = FALSE
397
      RequiresPasswordUpdate = FALSE
398
		If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
398
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
399
			If IsNull(rsQry("user_password")) AND IsNull(rsQry("domain")) Then
399
         If IsNull(rsQry("user_password")) AND IsNull(rsQry("domain")) Then
400
				RequiresPasswordUpdate = TRUE
400
            RequiresPasswordUpdate = TRUE
401
			End If
401
         End If
402
			
402
 
403
		End If
403
      End If
404
		'--------------------------
404
      '--------------------------
405
		
405
 
406
		
406
 
407
		moOraDatabase.Parameters.Remove "USER_NAME"
407
      moOraDatabase.Parameters.Remove "USER_NAME"
408
		
408
 
409
		rsQry.Close()
409
      rsQry.Close()
410
		Set rsQry = Nothing
410
      Set rsQry = Nothing
411
	End Function
411
   End Function
412
	'-----------------------------------------------------------------------------------------------------------------
412
   '-----------------------------------------------------------------------------------------------------------------
413
	Public Sub LogoffUser ()
413
   Public Sub LogoffUser ()
414
		'-- Login Trail --
414
      '-- Login Trail --
415
		Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGOFF, UserName, NULL )
415
      Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGOFF, UserName, NULL )
416
		
416
 
417
		'-- Kill User Session --
417
      '-- Kill User Session --
418
		Session.Abandon
418
      Session.Abandon
419
		
419
 
420
	End Sub
420
   End Sub
421
	'-----------------------------------------------------------------------------------------------------------------
421
   '-----------------------------------------------------------------------------------------------------------------
422
	Private Sub SessionsAndCookieSetup ( nUserId )
422
   Private Sub SessionsAndCookieSetup ( nUserId )
423
		' Store User details in session
423
      ' Store User details in session
424
		Call SetUserEnvironment ( nUserId )
424
      Call SetUserEnvironment ( nUserId )
425
		
425
 
426
		' Aquire Login Token for Single Application
426
      ' Aquire Login Token for Single Application
427
		Session(enumLOGIN_TOKEN_SESSION) = Session.SessionID
427
      Session(enumLOGIN_TOKEN_SESSION) = Session.SessionID
428
		
428
 
429
		Session.Timeout = enumSESSION_TIMEOUT
429
      Session.Timeout = enumSESSION_TIMEOUT
430
	End Sub
430
   End Sub
431
	'-----------------------------------------------------------------------------------------------------------------
431
   '-----------------------------------------------------------------------------------------------------------------
432
	Private Function Authenticated ( ByRef sUserName, ByRef sUserPassword, sDBUserPassword, sDBdomain )
432
   Private Function Authenticated ( ByRef sUserName, ByRef sUserPassword, sDBUserPassword, sDBdomain )
433
		Dim objLoginAuth, return, sMessage
433
      Dim objLoginAuth, return, sMessage
434
		sMessage = NULL
434
      sMessage = NULL
435
		
435
 
436
		Authenticated = FALSE
436
      Authenticated = FALSE
437
		
437
 
438
		If NOT IsNull(sDBdomain) Then
438
      If NOT IsNull(sDBdomain) Then
439
			' DOMAIN auth.
439
         ' DOMAIN auth.
440
			
440
 
441
			Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
441
         Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
442
			
442
 
443
			return = -1
443
         return = -1
444
			return = objLoginAuth.AuthenticateUser ( sUserName, sUserPassword, sDBdomain )
444
         return = objLoginAuth.AuthenticateUser ( sUserName, sUserPassword, sDBdomain )
445
			
445
 
446
			' From MSDN System Error Codes
446
         ' From MSDN System Error Codes
447
			' 0 - The operation completed successfully.
447
         ' 0 - The operation completed successfully.
448
			' 1326 - Logon failure: unknown user name or bad password.
448
         ' 1326 - Logon failure: unknown user name or bad password.
449
			' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
449
         ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
450
			' 1909 - The referenced account is currently locked out and may not be used to log on.
450
         ' 1909 - The referenced account is currently locked out and may not be used to log on.
451
			
451
 
452
			Select Case return
452
         Select Case return
453
				Case 0, 1385
453
            Case 0, 1385
454
					'Login ok
454
               'Login ok
455
					Authenticated = TRUE
455
               Authenticated = TRUE
456
					
456
 
457
					'-- Login Trail --
457
               '-- Login Trail --
458
					Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
458
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
459
					
459
 
460
				Case 1909
460
            Case 1909
461
					sMessage = "Account <b>"& sUserName &"</b> at "& sDBdomain &" domain is currently locked!"
461
               sMessage = "Account <b>"& sUserName &"</b> at "& sDBdomain &" domain is currently locked!"
462
					
462
 
463
					'-- Login Trail --
463
               '-- Login Trail --
464
					Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
464
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
465
					
465
 
466
					'-- Raise Exception --
466
               '-- Raise Exception --
467
					Err.Raise 8, sMessage, ""
467
               Err.Raise 8, sMessage, ""
468
					
468
 
469
					
469
 
470
				Case Else
470
            Case Else
471
					sMessage = "Password is incorrect for <b>"& sUserName &"</b> at "& sDBdomain &" domain!"
471
               sMessage = "Password is incorrect for <b>"& sUserName &"</b> at "& sDBdomain &" domain!"
472
					
472
 
473
					'-- Login Trail --
473
               '-- Login Trail --
474
					Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
474
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
475
					
475
 
476
					'-- Raise Exception --
476
               '-- Raise Exception --
477
					Err.Raise 8, sMessage, sDBdomain &" domain returns system error code "& return
477
               Err.Raise 8, sMessage, sDBdomain &" domain returns system error code "& return
478
					
478
 
479
			End Select
479
         End Select
480
			
480
 
481
			Set objLoginAuth = Nothing
481
         Set objLoginAuth = Nothing
482
			
482
 
483
		Else
483
      Else
484
			' LOCAL auth.
484
         ' LOCAL auth.
485
			If IsLocaPasswordCorrect ( sUserName, sUserPassword ) Then
485
         If IsLocaPasswordCorrect ( sUserName, sUserPassword ) Then
486
				'Login ok
486
            'Login ok
487
				Authenticated = TRUE
487
            Authenticated = TRUE
488
				
488
 
489
				'-- Login Trail --
489
            '-- Login Trail --
490
				Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
490
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
491
				
491
 
492
			Else
492
         Else
493
				sMessage = "Password is incorrect for <b>"& sUserName &"</b>!"
493
            sMessage = "Password is incorrect for <b>"& sUserName &"</b>!"
494
				
494
 
495
				'-- Login Trail --
495
            '-- Login Trail --
496
				Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
496
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
497
				
497
 
498
				'-- Raise Exception --
498
            '-- Raise Exception --
499
				Err.Raise 8, sMessage, "Please try again and make sure you do not have Caps Lock on."
499
            Err.Raise 8, sMessage, "Please try again and make sure you do not have Caps Lock on."
500
				
500
 
501
			End If
501
         End If
502
			
502
 
503
		End If
503
      End If
504
		
504
 
505
		
505
 
506
		
506
 
507
	End Function
507
   End Function
508
	'-----------------------------------------------------------------------------------------------------------------
508
   '-----------------------------------------------------------------------------------------------------------------
509
	Private Function IsLocaPasswordCorrect ( sUserName, sPassword )
509
   Private Function IsLocaPasswordCorrect ( sUserName, sPassword )
510
		
510
 
511
		moOraDatabase.Parameters.Add "USER_NAME",   sUserName, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
511
      moOraDatabase.Parameters.Add "USER_NAME",   sUserName,    ORAPARM_INPUT, ORATYPE_VARCHAR2
512
		moOraDatabase.Parameters.Add "PASSWORD",    sPassword, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
512
      moOraDatabase.Parameters.Add "PASSWORD",    sPassword,    ORAPARM_INPUT, ORATYPE_VARCHAR2
513
		moOraDatabase.Parameters.Add "RETURN_CODE",   0, 		ORAPARM_OUTPUT, ORATYPE_NUMBER
513
      moOraDatabase.Parameters.Add "RETURN_CODE",   0,       ORAPARM_OUTPUT, ORATYPE_NUMBER
514
		
514
 
515
		moOraDatabase.ExecuteSQL _
515
      moOraDatabase.ExecuteSQL _
516
		"BEGIN   :RETURN_CODE := PK_SECURITY.IS_LOCAL_PASSWORD_CORRECT ( :USER_NAME, :PASSWORD );   END;"
516
      "BEGIN   :RETURN_CODE := PK_SECURITY.IS_LOCAL_PASSWORD_CORRECT ( :USER_NAME, :PASSWORD );   END;"
517
		
517
 
518
		If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 1 Then
518
      If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 1 Then
519
			IsLocaPasswordCorrect = TRUE
519
         IsLocaPasswordCorrect = TRUE
520
		Else
520
      Else
521
			IsLocaPasswordCorrect = FALSE
521
         IsLocaPasswordCorrect = FALSE
522
		End If
522
      End If
523
		
523
 
524
		moOraDatabase.Parameters.Remove "USER_NAME"
524
      moOraDatabase.Parameters.Remove "USER_NAME"
525
		moOraDatabase.Parameters.Remove "PASSWORD"
525
      moOraDatabase.Parameters.Remove "PASSWORD"
526
		moOraDatabase.Parameters.Remove "RETURN_CODE"
526
      moOraDatabase.Parameters.Remove "RETURN_CODE"
527
		
527
 
528
	End Function
528
   End Function
529
	'-----------------------------------------------------------------------------------------------------------------
529
   '-----------------------------------------------------------------------------------------------------------------
530
	Public Sub SetPassword ( sUserName, sPasswordA, sPasswordB )
530
   Public Sub SetPassword ( sUserName, sPasswordA, sPasswordB )
531
		If (sUserName = "")  OR  (sPasswordA = "")  OR  (sPasswordB = "") Then
531
      If (sUserName = "")  OR  (sPasswordA = "")  OR  (sPasswordB = "") Then
532
			Err.Raise 8, "Username and both Passwords are required !", ""
532
         Err.Raise 8, "Username and both Passwords are required !", ""
533
			Exit Sub
533
         Exit Sub
534
		End If
534
      End If
535
		
535
 
536
		
536
 
537
		moOraDatabase.Parameters.Add "USER_NAME",   sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
537
      moOraDatabase.Parameters.Add "USER_NAME",   sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
538
		moOraDatabase.Parameters.Add "PASSWORDA",   sPasswordA, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
538
      moOraDatabase.Parameters.Add "PASSWORDA",   sPasswordA,    ORAPARM_INPUT, ORATYPE_VARCHAR2
539
		moOraDatabase.Parameters.Add "PASSWORDB",   sPasswordB, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
539
      moOraDatabase.Parameters.Add "PASSWORDB",   sPasswordB,    ORAPARM_INPUT, ORATYPE_VARCHAR2
540
		moOraDatabase.Parameters.Add "RETURN_CODE",   0, 		ORAPARM_OUTPUT, ORATYPE_NUMBER
540
      moOraDatabase.Parameters.Add "RETURN_CODE",   0,       ORAPARM_OUTPUT, ORATYPE_NUMBER
541
		
541
 
542
		
542
      objEH.TryORA ( moOraSession )
543
		moOraSession.BeginTrans
543
      On Error Resume Next
544
		
544
 
545
		moOraDatabase.ExecuteSQL _
545
      moOraDatabase.ExecuteSQL _
546
		"BEGIN   :RETURN_CODE := PK_SECURITY.SET_PASSWORD ( :USER_NAME, :PASSWORDA, :PASSWORDB );   END;"
546
      "BEGIN   :RETURN_CODE := PK_SECURITY.SET_PASSWORD ( :USER_NAME, :PASSWORDA, :PASSWORDB );   END;"
547
		
547
 
548
		moOraSession.CommitTrans
548
      objEH.CatchORA ( moOraSession )
549
		
549
 
550
		
550
      If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = -1 Then
551
		If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = -1 Then
551
         Err.Raise 8, "Passwords do not match !", "Make sure that you type correctly both passwords."
552
			Err.Raise 8, "Passwords do not match !", "Make sure that you type correctly both passwords."
552
      End If
553
		End If
553
 
554
		
554
 
555
		
555
      moOraDatabase.Parameters.Remove "USER_NAME"
556
		moOraDatabase.Parameters.Remove "USER_NAME"
556
      moOraDatabase.Parameters.Remove "PASSWORDA"
557
		moOraDatabase.Parameters.Remove "PASSWORDA"
557
      moOraDatabase.Parameters.Remove "PASSWORDB"
558
		moOraDatabase.Parameters.Remove "PASSWORDB"
558
      moOraDatabase.Parameters.Remove "RETURN_CODE"
559
		moOraDatabase.Parameters.Remove "RETURN_CODE"
559
 
560
		
560
   End Sub
561
	End Sub
561
   '-----------------------------------------------------------------------------------------------------------------
562
	'-----------------------------------------------------------------------------------------------------------------
562
   Private Sub LoginTrail ( nEvent, sUserName, sMessage )
563
	Private Sub LoginTrail ( nEvent, sUserName, sMessage )
563
 
564
		
564
      moOraDatabase.Parameters.Add "EVENT_ENUM",         nEvent,       ORAPARM_INPUT, ORATYPE_NUMBER
565
		moOraDatabase.Parameters.Add "EVENT_ENUM",   		nEvent, 		ORAPARM_INPUT, ORATYPE_NUMBER
565
      moOraDatabase.Parameters.Add "LOGIN_USER_NAME",   sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
566
		moOraDatabase.Parameters.Add "LOGIN_USER_NAME",   sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
566
      moOraDatabase.Parameters.Add "CLIENT_IP",         Request.ServerVariables("REMOTE_ADDR"),       ORAPARM_INPUT, ORATYPE_VARCHAR2
567
		moOraDatabase.Parameters.Add "CLIENT_IP",   		Request.ServerVariables("REMOTE_ADDR"), 		ORAPARM_INPUT, ORATYPE_VARCHAR2
567
      moOraDatabase.Parameters.Add "APPLICATION_ID",      APPLICATION_ID,       ORAPARM_INPUT, ORATYPE_NUMBER
568
		moOraDatabase.Parameters.Add "APPLICATION_ID",   	APPLICATION_ID, 		ORAPARM_INPUT, ORATYPE_NUMBER
568
      moOraDatabase.Parameters.Add "LOGIN_COMMENTS",      sMessage,       ORAPARM_INPUT, ORATYPE_VARCHAR2
569
		moOraDatabase.Parameters.Add "LOGIN_COMMENTS",   	sMessage, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
569
 
570
		
570
      objEH.TryORA ( moOraSession )
571
		
571
      On Error Resume Next
572
		moOraSession.BeginTrans
572
 
573
		
573
      moOraDatabase.ExecuteSQL _
574
		moOraDatabase.ExecuteSQL _
574
      "BEGIN   pk_AMUtils.Log_Access ( :EVENT_ENUM, :LOGIN_USER_NAME, :CLIENT_IP, :APPLICATION_ID, :LOGIN_COMMENTS );   END;"
575
		"BEGIN   pk_AMUtils.Log_Access ( :EVENT_ENUM, :LOGIN_USER_NAME, :CLIENT_IP, :APPLICATION_ID, :LOGIN_COMMENTS );   END;"
575
 
576
		
576
      objEH.CatchORA ( moOraSession )
577
		moOraSession.CommitTrans
577
 
578
		
578
      moOraDatabase.Parameters.Remove "EVENT_ENUM"
579
		
579
      moOraDatabase.Parameters.Remove "LOGIN_USER_NAME"
580
		moOraDatabase.Parameters.Remove "EVENT_ENUM"
580
      moOraDatabase.Parameters.Remove "CLIENT_IP"
581
		moOraDatabase.Parameters.Remove "LOGIN_USER_NAME"
581
      moOraDatabase.Parameters.Remove "APPLICATION_ID"
582
		moOraDatabase.Parameters.Remove "CLIENT_IP"
582
      moOraDatabase.Parameters.Remove "LOGIN_COMMENTS"
583
		moOraDatabase.Parameters.Remove "APPLICATION_ID"
583
 
584
		moOraDatabase.Parameters.Remove "LOGIN_COMMENTS"
584
   End Sub
585
		
585
   '-----------------------------------------------------------------------------------------------------------------
586
		
586
   Private Sub TagLogon ( oRsQry )
587
	End Sub
587
      oRsQry.Edit()
588
	'-----------------------------------------------------------------------------------------------------------------
588
 
589
	Private Sub TagLogon ( oRsQry )
589
      oRsQry("is_online").Value = "Y"
590
		oRsQry.Edit()
590
      oRsQry("online_at").Value = Request.ServerVariables("REMOTE_ADDR")
591
		
591
 
592
		oRsQry("is_online").Value = "Y"
592
      oRsQry.Update()
593
		oRsQry("online_at").Value = Request.ServerVariables("REMOTE_ADDR")
593
   End Sub
594
		
594
   '-----------------------------------------------------------------------------------------------------------------
595
		oRsQry.Update()
595
   Private Sub SetUserEnvironment ( nUser_id )
596
	End Sub
596
      Dim rsUser, query, tempSTR
597
	'-----------------------------------------------------------------------------------------------------------------
597
 
598
	Private Sub SetUserEnvironment ( nUser_id )
598
      moOraDatabase.Parameters.Add "USER_ID", nUser_id, ORAPARM_INPUT, ORATYPE_NUMBER
599
		Dim rsUser, query, tempSTR
599
 
600
		
600
 
601
		moOraDatabase.Parameters.Add "USER_ID", nUser_id, ORAPARM_INPUT, ORATYPE_NUMBER
601
 
602
		
602
      '---- Get User Details ----
603
		
603
      query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
604
		
604
      Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
605
		'---- Get User Details ----
605
 
606
		query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
606
      If (NOT rsUser.BOF) AND (NOT rsUser.EOF) Then
607
		Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
607
         Session(enumUSER_ID_SESSION) = rsUser("user_id")
608
		
608
 
609
		If (NOT rsUser.BOF) AND (NOT rsUser.EOF) Then
609
         Session(enumUSER_DETAILS_SESSION) = _
610
			Session(enumUSER_ID_SESSION) = rsUser("user_id")
610
            "user_name="& rsUser("user_name") & sSEPARATOR &_
611
			
611
            "full_name="& rsUser("full_name") & sSEPARATOR &_
612
			Session(enumUSER_DETAILS_SESSION) = _
612
            "user_email="& rsUser("user_email") & sSEPARATOR &_
613
				"user_name="& rsUser("user_name") & sSEPARATOR &_
613
            "last_visit="& rsUser("last_visit") & sSEPARATOR &_
614
				"full_name="& rsUser("full_name") & sSEPARATOR &_
614
            "domain="& rsUser("domain")
615
				"user_email="& rsUser("user_email") & sSEPARATOR &_
615
 
616
				"last_visit="& rsUser("last_visit") & sSEPARATOR &_
616
      End If
617
				"domain="& rsUser("domain") 
617
 
618
			
618
 
619
		End If
619
 
620
		
620
      '---- Get User Applications ----
621
		
621
      query = "SELECT ua.APP_ID  FROM USER_APPLICATIONS ua  WHERE ua.USER_ID = :USER_ID"
622
		
622
      Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
623
		'---- Get User Applications ----
623
      tempSTR = ""
624
		query = "SELECT ua.APP_ID  FROM USER_APPLICATIONS ua  WHERE ua.USER_ID = :USER_ID"
624
      While (NOT rsUser.BOF) AND (NOT rsUser.EOF)
625
		Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
625
         tempSTR = tempSTR & sSEPARATOR & rsUser("app_id")
626
		tempSTR = ""
626
         rsUser.MoveNext()
627
		While (NOT rsUser.BOF) AND (NOT rsUser.EOF) 
627
      WEnd
628
			tempSTR = tempSTR & sSEPARATOR & rsUser("app_id")
628
 
629
			rsUser.MoveNext()
629
      If tempSTR <> "" Then
630
		WEnd
630
         Session(enumUSER_APPLICATIONS_SESSION) = Right( tempSTR, Len(tempSTR) - Len(sSEPARATOR) )   'Remove first separator
631
		
631
      Else
632
		If tempSTR <> "" Then
632
         Session(enumUSER_APPLICATIONS_SESSION) = 0
633
			Session(enumUSER_APPLICATIONS_SESSION) = Right( tempSTR, Len(tempSTR) - Len(sSEPARATOR) )	'Remove first separator
633
      End If
634
		Else
634
 
635
			Session(enumUSER_APPLICATIONS_SESSION) = 0
635
 
636
		End If
636
 
637
		
637
      moOraDatabase.Parameters.Remove "USER_ID"
638
		
638
 
639
		
639
      rsUser.Close()
640
		moOraDatabase.Parameters.Remove "USER_ID"
640
      Set rsUser = Nothing
641
		
641
   End Sub
642
		rsUser.Close()
642
   '-----------------------------------------------------------------------------------------------------------------
643
		Set rsUser = Nothing
643
   Private Sub GetApplicationRunningLevel ( )
644
	End Sub
644
      Dim rsQry, query
645
	'-----------------------------------------------------------------------------------------------------------------
645
 
646
	Private Sub GetApplicationRunningLevel ( )
646
 
647
		Dim rsQry, query
647
      '--- Get if user is loged on from DB ---
648
		
648
      moOraDatabase.Parameters.Add "APP_ID",  APPLICATION_ID, ORAPARM_INPUT, ORATYPE_NUMBER
649
		
649
 
650
		'--- Get if user is loged on from DB ---
650
      query = _
651
		moOraDatabase.Parameters.Add "APP_ID",  APPLICATION_ID, ORAPARM_INPUT, ORATYPE_NUMBER
651
      " SELECT app.APP_ID,"&_
652
		
652
      "        app.APPLICATION_NAME,"&_
653
		query = _
653
      "        app.IS_RUNNING"&_
654
		" SELECT app.APP_ID,"&_
654
      "   FROM APPLICATIONS app"&_
655
		"	     app.APPLICATION_NAME,"&_
655
      "  WHERE app.APP_ID = :APP_ID"
656
		"	     app.IS_RUNNING"&_
656
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
657
		"   FROM APPLICATIONS app"&_
657
 
658
		"  WHERE app.APP_ID = :APP_ID"
658
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
659
		Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
659
         mbIsApplicationRunning = FALSE
660
		
660
         If rsQry("is_running") = enumDB_YES Then
661
		If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
661
            mbIsApplicationRunning = TRUE
662
			mbIsApplicationRunning = FALSE
662
         End If
663
			If rsQry("is_running") = enumDB_YES Then
663
      End If
664
				mbIsApplicationRunning = TRUE
664
 
665
			End If
665
      moOraDatabase.Parameters.Remove "APP_ID"
666
		End If
666
      rsQry.Close
667
		
667
      Set rsQry = Nothing
668
		moOraDatabase.Parameters.Remove "APP_ID"
668
 
669
		rsQry.Close
669
   End Sub
670
		Set rsQry = Nothing
670
   '-----------------------------------------------------------------------------------------------------------------
671
		
671
   Private Sub Class_Initialize()
672
	End Sub
672
      '// Perform action on creation of object. e.g. Set myObj = New ThisClassName
673
	'-----------------------------------------------------------------------------------------------------------------
673
      Set mobjStaticControl = CreateObject("Scripting.Dictionary")
674
	Private Sub Class_Initialize()
674
      Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
675
		'// Perform action on creation of object. e.g. Set myObj = New ThisClassName
675
      Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
676
		Set mobjStaticControl = CreateObject("Scripting.Dictionary")
676
      mbIsApplicationRunning = NULL   ' The state of application
677
		Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
677
 
678
		Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
678
      sSEPARATOR = "||"
679
		mbIsApplicationRunning = NULL	' The state of application
679
 
680
		
680
   End Sub
681
		sSEPARATOR = "||"
681
   '-----------------------------------------------------------------------------------------------------------------
682
		
682
   Private Sub Class_Terminate()
683
	End Sub
683
      '// Perform action on object disposal. e.g. Set myObj = Nothing
684
	'-----------------------------------------------------------------------------------------------------------------
684
      Set mobjStaticControl = Nothing
685
	Private Sub Class_Terminate()
685
      Set mobjRowPermissions = Nothing
686
		'// Perform action on object disposal. e.g. Set myObj = Nothing
686
      Set mobjTablePermissions = Nothing
687
		Set mobjStaticControl = Nothing
687
 
688
		Set mobjRowPermissions = Nothing
688
   End Sub
689
		Set mobjTablePermissions = Nothing
689
   '-----------------------------------------------------------------------------------------------------------------
690
		
-
 
691
	End Sub
-
 
692
	'-----------------------------------------------------------------------------------------------------------------
-
 
693
End Class
690
End Class
694
%>
-
 
695
691
%>
-
 
692