Subversion Repositories DevTools

Rev

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