Subversion Repositories DevTools

Rev

Rev 3928 | Rev 3942 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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