Subversion Repositories DevTools

Rev

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

Rev 3926 Rev 3938
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
 
-
 
340
      '--- Try Authenticating ---
-
 
341
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
-
 
342
         ' User Found !
-
 
343
 
-
 
344
         If rsQry("is_disabled") = enumDB_YES  Then
-
 
345
            ' User Disabled !
-
 
346
            sMessage = "Account <b>"& sUserName &"</b> is Disabled!"
-
 
347
 
-
 
348
            '-- Login Trail --
-
 
349
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
-
 
350
 
-
 
351
            '-- Raise Exception --
-
 
352
            Err.Raise 8, sMessage, ""
-
 
353
 
-
 
354
         Else
-
 
355
 
-
 
356
            ' Proceed with authentication
342
            If Authenticated( sUserName, sUserPassword, rsQry("user_password"), rsQry("domain") ) Then
357
            If Authenticated( sUserName, sUserPassword, rsQry("user_password"), rsQry("domain") ) Then
343
					' Login OK.
358
               ' Login OK.
344
					Call SessionsAndCookieSetup ( rsQry("user_id") )
359
               Call SessionsAndCookieSetup ( rsQry("user_id") )
345
					
360
 
346
					' Tag user login
361
               ' Tag user login
347
					Call TagLogon ( rsQry )
362
               Call TagLogon ( rsQry )
348
					
363
 
349
				End If
364
            End If
350
				
365
 
351
				
366
 
352
			End If
367
         End If
353
			
368
 
354
		Else
369
      Else
355
			' User Not Found !
370
         ' User Not Found !
356
			sMessage = "Account <b>"& sUserName &"</b> Not Found!"
371
         sMessage = "Account <b>"& sUserName &"</b> Not Found!"
357
			
372
 
358
			'-- Login Trail --
373
         '-- Login Trail --
359
			Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
374
         Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
360
			
375
 
361
			'-- Raise Exception --
376
         '-- Raise Exception --
362
			Err.Raise 8, sMessage, "Make sure your Username is correct <br>OR <br>Please go back and register if you are new user. " 
377
         Err.Raise 8, sMessage, "Make sure your Username is correct <br>OR <br>Please go back and register if you are new user. "
363
			
378
 
364
		End If
379
      End If
365
		'--------------------------
380
      '--------------------------
366
		
381
 
367
		
382
 
368
		
383
 
369
		
384
 
370
		rsQry.Close()
385
      rsQry.Close()
371
		Set rsQry = Nothing
386
      Set rsQry = Nothing
372
	End Sub
387
   End Sub
373
	'-----------------------------------------------------------------------------------------------------------------
388
   '-----------------------------------------------------------------------------------------------------------------
374
	Public Function RequiresPasswordUpdate ( sUserName )
389
   Public Function RequiresPasswordUpdate ( sUserName )
375
		Dim rsQry, query, sMessage
390
      Dim rsQry, query, sMessage
376
		sMessage = NULL
391
      sMessage = NULL
377
		
392
 
378
		moOraDatabase.Parameters.Add "USER_NAME",   	sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
393
      moOraDatabase.Parameters.Add "USER_NAME",      sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
379
		
394
 
380
		query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_NAME = :USER_NAME"
395
      query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_NAME = :USER_NAME"
381
		Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
396
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
382
		
397
 
383
		
398
 
384
		'--- Try Authenticating ---
399
      '--- Try Authenticating ---
385
		RequiresPasswordUpdate = FALSE
400
      RequiresPasswordUpdate = FALSE
386
		If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
401
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
387
			If IsNull(rsQry("user_password")) AND IsNull(rsQry("domain")) Then
402
         If IsNull(rsQry("user_password")) AND IsNull(rsQry("domain")) Then
388
				RequiresPasswordUpdate = TRUE
403
            RequiresPasswordUpdate = TRUE
389
			End If
404
         End If
390
			
405
 
391
		End If
406
      End If
392
		'--------------------------
407
      '--------------------------
393
		
408
 
394
		
409
 
395
		moOraDatabase.Parameters.Remove "USER_NAME"
410
      moOraDatabase.Parameters.Remove "USER_NAME"
396
		
411
 
397
		rsQry.Close()
412
      rsQry.Close()
398
		Set rsQry = Nothing
413
      Set rsQry = Nothing
399
	End Function
414
   End Function
400
	'-----------------------------------------------------------------------------------------------------------------
415
   '-----------------------------------------------------------------------------------------------------------------
401
	Public Sub LogoffUser ()
416
   Public Sub LogoffUser ()
402
		'-- Login Trail --
417
      '-- Login Trail --
403
		Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGOFF, UserName, NULL )
418
      Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGOFF, UserName, NULL )
404
		
419
 
405
		'-- Kill User Session --
420
      '-- Kill User Session --
406
		Session.Abandon
421
      Session.Abandon
407
		
422
 
408
	End Sub
423
   End Sub
409
	'-----------------------------------------------------------------------------------------------------------------
424
   '-----------------------------------------------------------------------------------------------------------------
410
	Private Sub SessionsAndCookieSetup ( nUserId )
425
   Private Sub SessionsAndCookieSetup ( nUserId )
411
		' Store User details in session
426
      ' Store User details in session
412
		Call SetUserEnvironment ( nUserId )
427
      Call SetUserEnvironment ( nUserId )
413
		
428
 
414
		' Aquire Login Token for Single Application
429
      ' Aquire Login Token for Single Application
415
		Session(enumLOGIN_TOKEN_SESSION) = Session.SessionID
430
      Session(enumLOGIN_TOKEN_SESSION) = Session.SessionID
416
		
431
 
417
		Session.Timeout = enumSESSION_TIMEOUT
432
      Session.Timeout = enumSESSION_TIMEOUT
418
	End Sub
433
   End Sub
419
	'-----------------------------------------------------------------------------------------------------------------
434
   '-----------------------------------------------------------------------------------------------------------------
420
	Private Function Authenticated ( ByRef sUserName, ByRef sUserPassword, sDBUserPassword, sDBdomain )
435
   Private Function Authenticated ( ByRef sUserName, ByRef sUserPassword, sDBUserPassword, sDBdomain )
421
		Dim objLoginAuth, return, sMessage
436
      Dim objLoginAuth, return, sMessage
422
		sMessage = NULL
437
      sMessage = NULL
423
		
438
 
424
		Authenticated = FALSE
439
      Authenticated = FALSE
425
		
440
 
426
		If NOT IsNull(sDBdomain) Then
441
      ' Hook for testing access control features
427
			' DOMAIN auth.
442
      ' Any login allowed to the Test Database
428
			
443
      '
429
			Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
444
      If isDevSystem() Then
430
			
445
        Authenticated = TRUE
431
			return = -1
446
 
432
			return = objLoginAuth.AuthenticateUser ( sUserName, sUserPassword, sDBdomain )
447
        '-- Login Trail --
433
			
448
        Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
434
			' From MSDN System Error Codes
449
 
435
			' 0 - The operation completed successfully.
450
      ElseIf NOT IsNull(sDBdomain) Then
436
			' 1326 - Logon failure: unknown user name or bad password.
451
         ' DOMAIN auth.
437
			' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
452
 
438
			' 1909 - The referenced account is currently locked out and may not be used to log on.
453
         Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
439
			
454
 
440
			Select Case return
455
         return = -1
441
				Case 0, 1385
456
         return = objLoginAuth.AuthenticateUser ( sUserName, sUserPassword, sDBdomain )
442
					'Login ok
457
 
443
					Authenticated = TRUE
458
         ' From MSDN System Error Codes
444
					
459
         ' 0 - The operation completed successfully.
445
					'-- Login Trail --
460
         ' 1326 - Logon failure: unknown user name or bad password.
446
					Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
461
         ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
447
					
462
         ' 1909 - The referenced account is currently locked out and may not be used to log on.
448
				Case 1909
463
 
449
					sMessage = "Account <b>"& sUserName &"</b> at "& sDBdomain &" domain is currently locked!"
464
         Select Case return
450
					
465
            Case 0, 1385
451
					'-- Login Trail --
466
               'Login ok
452
					Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
467
               Authenticated = TRUE
453
					
468
 
454
					'-- Raise Exception --
469
               '-- Login Trail --
455
					Err.Raise 8, sMessage, ""
470
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
456
					
471
 
457
					
472
            Case 1909
458
				Case Else
473
               sMessage = "Account <b>"& sUserName &"</b> at "& sDBdomain &" domain is currently locked!"
459
					sMessage = "Password is incorrect for <b>"& sUserName &"</b> at "& sDBdomain &" domain!"
474
 
460
					
475
               '-- Login Trail --
461
					'-- Login Trail --
476
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
462
					Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
477
 
463
					
478
               '-- Raise Exception --
464
					'-- Raise Exception --
479
               Err.Raise 8, sMessage, ""
465
					Err.Raise 8, sMessage, sDBdomain &" domain returns system error code "& return
480
 
466
					
481
 
467
			End Select
482
            Case Else
468
			
483
               sMessage = "Password is incorrect for <b>"& sUserName &"</b> at "& sDBdomain &" domain!"
469
			Set objLoginAuth = Nothing
484
 
470
			
485
               '-- Login Trail --
471
		Else
486
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
472
			' LOCAL auth.
487
 
473
			If IsLocaPasswordCorrect ( sUserName, sUserPassword ) Then
488
               '-- Raise Exception --
474
				'Login ok
489
               Err.Raise 8, sMessage, sDBdomain &" domain returns system error code "& return
475
				Authenticated = TRUE
490
 
476
				
491
         End Select
477
				'-- Login Trail --
492
 
478
				Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
493
         Set objLoginAuth = Nothing
479
				
494
 
480
			Else
495
      Else
481
				sMessage = "Password is incorrect for <b>"& sUserName &"</b>!"
496
         ' LOCAL auth.
482
				
497
         If IsLocaPasswordCorrect ( sUserName, sUserPassword ) Then
483
				'-- Login Trail --
498
            'Login ok
484
				Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
499
            Authenticated = TRUE
485
				
500
 
486
				'-- Raise Exception --
501
            '-- Login Trail --
487
				Err.Raise 8, sMessage, "Please try again and make sure you do not have Caps Lock on."
502
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
488
				
503
 
489
			End If
504
         Else
490
			
505
            sMessage = "Password is incorrect for <b>"& sUserName &"</b>!"
491
		End If
506
 
492
		
507
            '-- Login Trail --
493
		
508
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
494
		
509
 
495
	End Function
510
            '-- Raise Exception --
496
	'-----------------------------------------------------------------------------------------------------------------
511
            Err.Raise 8, sMessage, "Please try again and make sure you do not have Caps Lock on."
497
	Private Function IsLocaPasswordCorrect ( sUserName, sPassword )
512
 
498
		
513
         End If
499
		moOraDatabase.Parameters.Add "USER_NAME",   sUserName, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
514
 
500
		moOraDatabase.Parameters.Add "PASSWORD",    sPassword, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
515
      End If
501
		moOraDatabase.Parameters.Add "RETURN_CODE",   0, 		ORAPARM_OUTPUT, ORATYPE_NUMBER
516
 
502
		
517
 
503
		moOraDatabase.ExecuteSQL _
518
 
504
		"BEGIN   :RETURN_CODE := PK_SECURITY.IS_LOCAL_PASSWORD_CORRECT ( :USER_NAME, :PASSWORD );   END;"
519
   End Function
505
		
520
   '-----------------------------------------------------------------------------------------------------------------
506
		If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 1 Then
521
   Private Function IsLocaPasswordCorrect ( sUserName, sPassword )
507
			IsLocaPasswordCorrect = TRUE
522
 
508
		Else
523
      moOraDatabase.Parameters.Add "USER_NAME",   sUserName,    ORAPARM_INPUT, ORATYPE_VARCHAR2
509
			IsLocaPasswordCorrect = FALSE
524
      moOraDatabase.Parameters.Add "PASSWORD",    sPassword,    ORAPARM_INPUT, ORATYPE_VARCHAR2
510
		End If
525
      moOraDatabase.Parameters.Add "RETURN_CODE",   0,       ORAPARM_OUTPUT, ORATYPE_NUMBER
511
		
526
 
512
		moOraDatabase.Parameters.Remove "USER_NAME"
527
      moOraDatabase.ExecuteSQL _
513
		moOraDatabase.Parameters.Remove "PASSWORD"
528
      "BEGIN   :RETURN_CODE := PK_SECURITY.IS_LOCAL_PASSWORD_CORRECT ( :USER_NAME, :PASSWORD );   END;"
514
		moOraDatabase.Parameters.Remove "RETURN_CODE"
529
 
515
		
530
      If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 1 Then
516
	End Function
531
         IsLocaPasswordCorrect = TRUE
517
	'-----------------------------------------------------------------------------------------------------------------
532
      Else
518
	Public Sub SetPassword ( sUserName, sPasswordA, sPasswordB )
533
         IsLocaPasswordCorrect = FALSE
519
		If (sUserName = "")  OR  (sPasswordA = "")  OR  (sPasswordB = "") Then
534
      End If
520
			Err.Raise 8, "Username and both Passwords are required !", ""
535
 
521
			Exit Sub
536
      moOraDatabase.Parameters.Remove "USER_NAME"
522
		End If
537
      moOraDatabase.Parameters.Remove "PASSWORD"
523
		
538
      moOraDatabase.Parameters.Remove "RETURN_CODE"
524
		
539
 
525
		moOraDatabase.Parameters.Add "USER_NAME",   sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
540
   End Function
526
		moOraDatabase.Parameters.Add "PASSWORDA",   sPasswordA, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
541
   '-----------------------------------------------------------------------------------------------------------------
527
		moOraDatabase.Parameters.Add "PASSWORDB",   sPasswordB, 	ORAPARM_INPUT, ORATYPE_VARCHAR2
542
   Public Sub SetPassword ( sUserName, sPasswordA, sPasswordB )
528
		moOraDatabase.Parameters.Add "RETURN_CODE",   0, 		ORAPARM_OUTPUT, ORATYPE_NUMBER
543
      If (sUserName = "")  OR  (sPasswordA = "")  OR  (sPasswordB = "") Then
529
		
544
         Err.Raise 8, "Username and both Passwords are required !", ""
530
		
545
         Exit Sub
531
		moOraSession.BeginTrans
546
      End If
532
		
547
 
533
		moOraDatabase.ExecuteSQL _
548
 
534
		"BEGIN   :RETURN_CODE := PK_SECURITY.SET_PASSWORD ( :USER_NAME, :PASSWORDA, :PASSWORDB );   END;"
549
      moOraDatabase.Parameters.Add "USER_NAME",   sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
535
		
550
      moOraDatabase.Parameters.Add "PASSWORDA",   sPasswordA,    ORAPARM_INPUT, ORATYPE_VARCHAR2
536
		moOraSession.CommitTrans
551
      moOraDatabase.Parameters.Add "PASSWORDB",   sPasswordB,    ORAPARM_INPUT, ORATYPE_VARCHAR2
537
		
552
      moOraDatabase.Parameters.Add "RETURN_CODE",   0,       ORAPARM_OUTPUT, ORATYPE_NUMBER
538
		
553
 
539
		If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = -1 Then
554
      objEH.TryORA ( moOraSession )
540
			Err.Raise 8, "Passwords do not match !", "Make sure that you type correctly both passwords."
555
      On Error Resume Next
541
		End If
556
 
542
		
557
      moOraDatabase.ExecuteSQL _
543
		
558
      "BEGIN   :RETURN_CODE := PK_SECURITY.SET_PASSWORD ( :USER_NAME, :PASSWORDA, :PASSWORDB );   END;"
544
		moOraDatabase.Parameters.Remove "USER_NAME"
559
 
545
		moOraDatabase.Parameters.Remove "PASSWORDA"
560
      objEH.CatchORA ( moOraSession )
546
		moOraDatabase.Parameters.Remove "PASSWORDB"
561
 
547
		moOraDatabase.Parameters.Remove "RETURN_CODE"
562
      If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = -1 Then
548
		
563
         Err.Raise 8, "Passwords do not match !", "Make sure that you type correctly both passwords."
549
	End Sub
564
      End If
550
	'-----------------------------------------------------------------------------------------------------------------
565
 
551
	Private Sub LoginTrail ( nEvent, sUserName, sMessage )
566
 
552
		
567
      moOraDatabase.Parameters.Remove "USER_NAME"
553
		moOraDatabase.Parameters.Add "EVENT_ENUM",   		nEvent, 		ORAPARM_INPUT, ORATYPE_NUMBER
568
      moOraDatabase.Parameters.Remove "PASSWORDA"
554
		moOraDatabase.Parameters.Add "LOGIN_USER_NAME",   sUserName, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
569
      moOraDatabase.Parameters.Remove "PASSWORDB"
555
		moOraDatabase.Parameters.Add "CLIENT_IP",   		Request.ServerVariables("REMOTE_ADDR"), 		ORAPARM_INPUT, ORATYPE_VARCHAR2
570
      moOraDatabase.Parameters.Remove "RETURN_CODE"
556
		moOraDatabase.Parameters.Add "APPLICATION_ID",   	APPLICATION_ID, 		ORAPARM_INPUT, ORATYPE_NUMBER
571
 
557
		moOraDatabase.Parameters.Add "LOGIN_COMMENTS",   	sMessage, 		ORAPARM_INPUT, ORATYPE_VARCHAR2
572
   End Sub
558
		
573
   '-----------------------------------------------------------------------------------------------------------------
559
		
574
   Private Sub LoginTrail ( nEvent, sUserName, sMessage )
560
		moOraSession.BeginTrans
575
 
561
		
576
      moOraDatabase.Parameters.Add "EVENT_ENUM",         nEvent,       ORAPARM_INPUT, ORATYPE_NUMBER
562
		moOraDatabase.ExecuteSQL _
577
      moOraDatabase.Parameters.Add "LOGIN_USER_NAME",   sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
563
		"BEGIN   pk_AMUtils.Log_Access ( :EVENT_ENUM, :LOGIN_USER_NAME, :CLIENT_IP, :APPLICATION_ID, :LOGIN_COMMENTS );   END;"
578
      moOraDatabase.Parameters.Add "CLIENT_IP",         Request.ServerVariables("REMOTE_ADDR"),       ORAPARM_INPUT, ORATYPE_VARCHAR2
564
		
579
      moOraDatabase.Parameters.Add "APPLICATION_ID",      APPLICATION_ID,       ORAPARM_INPUT, ORATYPE_NUMBER
565
		moOraSession.CommitTrans
580
      moOraDatabase.Parameters.Add "LOGIN_COMMENTS",      sMessage,       ORAPARM_INPUT, ORATYPE_VARCHAR2
566
		
581
 
567
		
582
      objEH.TryORA ( moOraSession )
568
		moOraDatabase.Parameters.Remove "EVENT_ENUM"
583
      On Error Resume Next
569
		moOraDatabase.Parameters.Remove "LOGIN_USER_NAME"
584
 
570
		moOraDatabase.Parameters.Remove "CLIENT_IP"
585
      moOraDatabase.ExecuteSQL _
571
		moOraDatabase.Parameters.Remove "APPLICATION_ID"
586
      "BEGIN   pk_AMUtils.Log_Access ( :EVENT_ENUM, :LOGIN_USER_NAME, :CLIENT_IP, :APPLICATION_ID, :LOGIN_COMMENTS );   END;"
572
		moOraDatabase.Parameters.Remove "LOGIN_COMMENTS"
587
 
573
		
588
      objEH.CatchORA ( moOraSession )
574
		
589
 
575
	End Sub
590
      moOraDatabase.Parameters.Remove "EVENT_ENUM"
576
	'-----------------------------------------------------------------------------------------------------------------
591
      moOraDatabase.Parameters.Remove "LOGIN_USER_NAME"
577
	Private Sub TagLogon ( oRsQry )
592
      moOraDatabase.Parameters.Remove "CLIENT_IP"
578
		oRsQry.Edit()
593
      moOraDatabase.Parameters.Remove "APPLICATION_ID"
579
		
594
      moOraDatabase.Parameters.Remove "LOGIN_COMMENTS"
580
		oRsQry("is_online").Value = "Y"
595
 
581
		oRsQry("online_at").Value = Request.ServerVariables("REMOTE_ADDR")
596
   End Sub
582
		
597
   '-----------------------------------------------------------------------------------------------------------------
583
		oRsQry.Update()
598
   Private Sub TagLogon ( oRsQry )
584
	End Sub
599
      oRsQry.Edit()
585
	'-----------------------------------------------------------------------------------------------------------------
600
 
586
	Private Sub SetUserEnvironment ( nUser_id )
601
      oRsQry("is_online").Value = "Y"
587
		Dim rsUser, query, tempSTR
602
      oRsQry("online_at").Value = Request.ServerVariables("REMOTE_ADDR")
588
		
603
 
589
		moOraDatabase.Parameters.Add "USER_ID", nUser_id, ORAPARM_INPUT, ORATYPE_NUMBER
604
      oRsQry.Update()
590
		
605
   End Sub
591
		
606
   '-----------------------------------------------------------------------------------------------------------------
592
		
607
   Private Sub SetUserEnvironment ( nUser_id )
593
		'---- Get User Details ----
608
      Dim rsUser, query, tempSTR
594
		query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
609
 
595
		Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
610
      moOraDatabase.Parameters.Add "USER_ID", nUser_id, ORAPARM_INPUT, ORATYPE_NUMBER
596
		
611
 
597
		If (NOT rsUser.BOF) AND (NOT rsUser.EOF) Then
612
 
598
			Session(enumUSER_ID_SESSION) = rsUser("user_id")
613
 
599
			
614
      '---- Get User Details ----
600
			Session(enumUSER_DETAILS_SESSION) = _
615
      query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
601
				"user_name="& rsUser("user_name") & sSEPARATOR &_
616
      Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
602
				"full_name="& rsUser("full_name") & sSEPARATOR &_
617
 
603
				"user_email="& rsUser("user_email") & sSEPARATOR &_
618
      If (NOT rsUser.BOF) AND (NOT rsUser.EOF) Then
604
				"last_visit="& rsUser("last_visit") & sSEPARATOR &_
619
         Session(enumUSER_ID_SESSION) = rsUser("user_id")
605
				"domain="& rsUser("domain") 
620
 
606
			
621
         Session(enumUSER_DETAILS_SESSION) = _
607
		End If
622
            "user_name="& rsUser("user_name") & sSEPARATOR &_
608
		
623
            "full_name="& rsUser("full_name") & sSEPARATOR &_
609
		
624
            "user_email="& rsUser("user_email") & sSEPARATOR &_
610
		
625
            "last_visit="& rsUser("last_visit") & sSEPARATOR &_
611
		'---- Get User Applications ----
626
            "domain="& rsUser("domain")
612
		query = "SELECT ua.APP_ID  FROM USER_APPLICATIONS ua  WHERE ua.USER_ID = :USER_ID"
627
 
613
		Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
628
      End If
614
		tempSTR = ""
629
 
615
		While (NOT rsUser.BOF) AND (NOT rsUser.EOF) 
630
 
616
			tempSTR = tempSTR & sSEPARATOR & rsUser("app_id")
631
 
617
			rsUser.MoveNext()
632
      '---- Get User Applications ----
618
		WEnd
633
      query = "SELECT ua.APP_ID  FROM USER_APPLICATIONS ua  WHERE ua.USER_ID = :USER_ID"
619
		
634
      Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
620
		If tempSTR <> "" Then
635
      tempSTR = ""
621
			Session(enumUSER_APPLICATIONS_SESSION) = Right( tempSTR, Len(tempSTR) - Len(sSEPARATOR) )	'Remove first separator
636
      While (NOT rsUser.BOF) AND (NOT rsUser.EOF)
622
		Else
637
         tempSTR = tempSTR & sSEPARATOR & rsUser("app_id")
623
			Session(enumUSER_APPLICATIONS_SESSION) = 0
638
         rsUser.MoveNext()
624
		End If
639
      WEnd
625
		
640
 
626
		
641
      If tempSTR <> "" Then
627
		
642
         Session(enumUSER_APPLICATIONS_SESSION) = Right( tempSTR, Len(tempSTR) - Len(sSEPARATOR) )   'Remove first separator
628
		moOraDatabase.Parameters.Remove "USER_ID"
643
      Else
629
		
644
         Session(enumUSER_APPLICATIONS_SESSION) = 0
630
		rsUser.Close()
645
      End If
631
		Set rsUser = Nothing
646
 
632
	End Sub
647
 
633
	'-----------------------------------------------------------------------------------------------------------------
648
 
634
	Private Sub GetApplicationRunningLevel ( )
649
      moOraDatabase.Parameters.Remove "USER_ID"
635
		Dim rsQry, query
650
 
636
		
651
      rsUser.Close()
637
		
652
      Set rsUser = Nothing
638
		'--- Get if user is loged on from DB ---
653
   End Sub
639
		moOraDatabase.Parameters.Add "APP_ID",  APPLICATION_ID, ORAPARM_INPUT, ORATYPE_NUMBER
654
   '-----------------------------------------------------------------------------------------------------------------
640
		
655
   Private Sub GetApplicationRunningLevel ( )
641
		query = _
656
      Dim rsQry, query
642
		" SELECT app.APP_ID,"&_
657
 
643
		"	     app.APPLICATION_NAME,"&_
658
 
644
		"	     app.IS_RUNNING"&_
659
      '--- Get if user is loged on from DB ---
645
		"   FROM APPLICATIONS app"&_
660
      moOraDatabase.Parameters.Add "APP_ID",  APPLICATION_ID, ORAPARM_INPUT, ORATYPE_NUMBER
646
		"  WHERE app.APP_ID = :APP_ID"
661
 
647
		Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
662
      query = _
648
		
663
      " SELECT app.APP_ID,"&_
649
		If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
664
      "        app.APPLICATION_NAME,"&_
650
			mbIsApplicationRunning = FALSE
665
      "        app.IS_RUNNING"&_
651
			If rsQry("is_running") = enumDB_YES Then
666
      "   FROM APPLICATIONS app"&_
652
				mbIsApplicationRunning = TRUE
667
      "  WHERE app.APP_ID = :APP_ID"
653
			End If
668
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
654
		End If
669
 
655
		
670
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
656
		moOraDatabase.Parameters.Remove "APP_ID"
671
         mbIsApplicationRunning = FALSE
657
		rsQry.Close
672
         If rsQry("is_running") = enumDB_YES Then
658
		Set rsQry = Nothing
673
            mbIsApplicationRunning = TRUE
659
		
674
         End If
660
	End Sub
675
      End If
661
	'-----------------------------------------------------------------------------------------------------------------
676
 
662
	Private Sub Class_Initialize()
677
      moOraDatabase.Parameters.Remove "APP_ID"
663
		'// Perform action on creation of object. e.g. Set myObj = New ThisClassName
678
      rsQry.Close
664
		Set mobjStaticControl = CreateObject("Scripting.Dictionary")
679
      Set rsQry = Nothing
665
		Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
680
 
666
		Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
681
   End Sub
667
		mbIsApplicationRunning = NULL	' The state of application
682
   '-----------------------------------------------------------------------------------------------------------------
668
		
683
   Private Sub Class_Initialize()
669
		sSEPARATOR = "||"
684
      '// Perform action on creation of object. e.g. Set myObj = New ThisClassName
670
		
685
      Set mobjStaticControl = CreateObject("Scripting.Dictionary")
671
	End Sub
686
      Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
672
	'-----------------------------------------------------------------------------------------------------------------
687
      Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
673
	Private Sub Class_Terminate()
688
      mbIsApplicationRunning = NULL   ' The state of application
674
		'// Perform action on object disposal. e.g. Set myObj = Nothing
689
 
675
		Set mobjStaticControl = Nothing
690
      sSEPARATOR = "||"
676
		Set mobjRowPermissions = Nothing
691
 
677
		Set mobjTablePermissions = Nothing
692
   End Sub
678
		
693
   '-----------------------------------------------------------------------------------------------------------------
679
	End Sub
694
   Private Sub Class_Terminate()
680
	'-----------------------------------------------------------------------------------------------------------------
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