Subversion Repositories DevTools

Rev

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

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