Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

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