Subversion Repositories DevTools

Rev

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

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