Subversion Repositories DevTools

Rev

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