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
'//
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
 
120
      Extract = Right( tempSTR, Len(tempSTR) - Len( sField &"=" ))   ' Strip the filed name from value
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
354
            If Authenticated( sUserName, sUserPassword, rsQry("user_password"), rsQry("domain") ) Then
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
 
438
      If NOT IsNull(sDBdomain) Then
439
         ' DOMAIN auth.
440
 
441
         Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
442
 
443
         return = -1
444
         return = objLoginAuth.AuthenticateUser ( sUserName, sUserPassword, sDBdomain )
445
 
446
         ' From MSDN System Error Codes
447
         ' 0 - The operation completed successfully.
448
         ' 1326 - Logon failure: unknown user name or bad password.
449
         ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
450
         ' 1909 - The referenced account is currently locked out and may not be used to log on.
451
 
452
         Select Case return
453
            Case 0, 1385
454
               'Login ok
455
               Authenticated = TRUE
456
 
457
               '-- Login Trail --
458
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
459
 
460
            Case 1909
461
               sMessage = "Account <b>"& sUserName &"</b> at "& sDBdomain &" domain is currently locked!"
462
 
463
               '-- Login Trail --
464
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
465
 
466
               '-- Raise Exception --
467
               Err.Raise 8, sMessage, ""
468
 
469
 
470
            Case Else
471
               sMessage = "Password is incorrect for <b>"& sUserName &"</b> at "& sDBdomain &" domain!"
472
 
473
               '-- Login Trail --
474
               Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
475
 
476
               '-- Raise Exception --
477
               Err.Raise 8, sMessage, sDBdomain &" domain returns system error code "& return
478
 
479
         End Select
480
 
481
         Set objLoginAuth = Nothing
482
 
483
      Else
484
         ' LOCAL auth.
485
         If IsLocaPasswordCorrect ( sUserName, sUserPassword ) Then
486
            'Login ok
487
            Authenticated = TRUE
488
 
489
            '-- Login Trail --
490
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_SUCCESS, sUserName, NULL )
491
 
492
         Else
493
            sMessage = "Password is incorrect for <b>"& sUserName &"</b>!"
494
 
495
            '-- Login Trail --
496
            Call LoginTrail ( enumACCESS_MANAGER_EVENT_LOGON_FAIL, sUserName, sMessage )
497
 
498
            '-- Raise Exception --
499
            Err.Raise 8, sMessage, "Please try again and make sure you do not have Caps Lock on."
500
 
501
         End If
502
 
503
      End If
504
 
505
 
506
 
507
   End Function
508
   '-----------------------------------------------------------------------------------------------------------------
509
   Private Function IsLocaPasswordCorrect ( sUserName, sPassword )
510
 
511
      moOraDatabase.Parameters.Add "USER_NAME",   sUserName,    ORAPARM_INPUT, ORATYPE_VARCHAR2
512
      moOraDatabase.Parameters.Add "PASSWORD",    sPassword,    ORAPARM_INPUT, ORATYPE_VARCHAR2
513
      moOraDatabase.Parameters.Add "RETURN_CODE",   0,       ORAPARM_OUTPUT, ORATYPE_NUMBER
514
 
515
      moOraDatabase.ExecuteSQL _
516
      "BEGIN   :RETURN_CODE := PK_SECURITY.IS_LOCAL_PASSWORD_CORRECT ( :USER_NAME, :PASSWORD );   END;"
517
 
518
      If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 1 Then
519
         IsLocaPasswordCorrect = TRUE
520
      Else
521
         IsLocaPasswordCorrect = FALSE
522
      End If
523
 
524
      moOraDatabase.Parameters.Remove "USER_NAME"
525
      moOraDatabase.Parameters.Remove "PASSWORD"
526
      moOraDatabase.Parameters.Remove "RETURN_CODE"
527
 
528
   End Function
529
   '-----------------------------------------------------------------------------------------------------------------
530
   Public Sub SetPassword ( sUserName, sPasswordA, sPasswordB )
531
      If (sUserName = "")  OR  (sPasswordA = "")  OR  (sPasswordB = "") Then
532
         Err.Raise 8, "Username and both Passwords are required !", ""
533
         Exit Sub
534
      End If
535
 
536
 
537
      moOraDatabase.Parameters.Add "USER_NAME",   sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
538
      moOraDatabase.Parameters.Add "PASSWORDA",   sPasswordA,    ORAPARM_INPUT, ORATYPE_VARCHAR2
539
      moOraDatabase.Parameters.Add "PASSWORDB",   sPasswordB,    ORAPARM_INPUT, ORATYPE_VARCHAR2
540
      moOraDatabase.Parameters.Add "RETURN_CODE",   0,       ORAPARM_OUTPUT, ORATYPE_NUMBER
541
 
542
      objEH.TryORA ( moOraSession )
543
      On Error Resume Next
544
 
545
      moOraDatabase.ExecuteSQL _
546
      "BEGIN   :RETURN_CODE := PK_SECURITY.SET_PASSWORD ( :USER_NAME, :PASSWORDA, :PASSWORDB );   END;"
547
 
548
      objEH.CatchORA ( moOraSession )
549
 
550
      If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = -1 Then
551
         Err.Raise 8, "Passwords do not match !", "Make sure that you type correctly both passwords."
552
      End If
553
 
554
 
555
      moOraDatabase.Parameters.Remove "USER_NAME"
556
      moOraDatabase.Parameters.Remove "PASSWORDA"
557
      moOraDatabase.Parameters.Remove "PASSWORDB"
558
      moOraDatabase.Parameters.Remove "RETURN_CODE"
559
 
560
   End Sub
561
   '-----------------------------------------------------------------------------------------------------------------
562
   Private Sub LoginTrail ( nEvent, sUserName, sMessage )
563
 
564
      moOraDatabase.Parameters.Add "EVENT_ENUM",         nEvent,       ORAPARM_INPUT, ORATYPE_NUMBER
565
      moOraDatabase.Parameters.Add "LOGIN_USER_NAME",   sUserName,       ORAPARM_INPUT, ORATYPE_VARCHAR2
566
      moOraDatabase.Parameters.Add "CLIENT_IP",         Request.ServerVariables("REMOTE_ADDR"),       ORAPARM_INPUT, ORATYPE_VARCHAR2
567
      moOraDatabase.Parameters.Add "APPLICATION_ID",      APPLICATION_ID,       ORAPARM_INPUT, ORATYPE_NUMBER
568
      moOraDatabase.Parameters.Add "LOGIN_COMMENTS",      sMessage,       ORAPARM_INPUT, ORATYPE_VARCHAR2
569
 
570
      objEH.TryORA ( moOraSession )
571
      On Error Resume Next
572
 
573
      moOraDatabase.ExecuteSQL _
574
      "BEGIN   pk_AMUtils.Log_Access ( :EVENT_ENUM, :LOGIN_USER_NAME, :CLIENT_IP, :APPLICATION_ID, :LOGIN_COMMENTS );   END;"
575
 
576
      objEH.CatchORA ( moOraSession )
577
 
578
      moOraDatabase.Parameters.Remove "EVENT_ENUM"
579
      moOraDatabase.Parameters.Remove "LOGIN_USER_NAME"
580
      moOraDatabase.Parameters.Remove "CLIENT_IP"
581
      moOraDatabase.Parameters.Remove "APPLICATION_ID"
582
      moOraDatabase.Parameters.Remove "LOGIN_COMMENTS"
583
 
584
   End Sub
585
   '-----------------------------------------------------------------------------------------------------------------
586
   Private Sub TagLogon ( oRsQry )
587
      oRsQry.Edit()
588
 
589
      oRsQry("is_online").Value = "Y"
590
      oRsQry("online_at").Value = Request.ServerVariables("REMOTE_ADDR")
591
 
592
      oRsQry.Update()
593
   End Sub
594
   '-----------------------------------------------------------------------------------------------------------------
595
   Private Sub SetUserEnvironment ( nUser_id )
596
      Dim rsUser, query, tempSTR
597
 
598
      moOraDatabase.Parameters.Add "USER_ID", nUser_id, ORAPARM_INPUT, ORATYPE_NUMBER
599
 
600
 
601
 
602
      '---- Get User Details ----
603
      query = "SELECT usr.*  FROM USERS usr  WHERE usr.USER_ID = :USER_ID"
604
      Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
605
 
606
      If (NOT rsUser.BOF) AND (NOT rsUser.EOF) Then
607
         Session(enumUSER_ID_SESSION) = rsUser("user_id")
608
 
609
         Session(enumUSER_DETAILS_SESSION) = _
610
            "user_name="& rsUser("user_name") & sSEPARATOR &_
611
            "full_name="& rsUser("full_name") & sSEPARATOR &_
612
            "user_email="& rsUser("user_email") & sSEPARATOR &_
613
            "last_visit="& rsUser("last_visit") & sSEPARATOR &_
614
            "domain="& rsUser("domain")
615
 
616
      End If
617
 
618
 
619
 
620
      '---- Get User Applications ----
621
      query = "SELECT ua.APP_ID  FROM USER_APPLICATIONS ua  WHERE ua.USER_ID = :USER_ID"
622
      Set rsUser = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
623
      tempSTR = ""
624
      While (NOT rsUser.BOF) AND (NOT rsUser.EOF)
625
         tempSTR = tempSTR & sSEPARATOR & rsUser("app_id")
626
         rsUser.MoveNext()
627
      WEnd
628
 
629
      If tempSTR <> "" Then
630
         Session(enumUSER_APPLICATIONS_SESSION) = Right( tempSTR, Len(tempSTR) - Len(sSEPARATOR) )   'Remove first separator
631
      Else
632
         Session(enumUSER_APPLICATIONS_SESSION) = 0
633
      End If
634
 
635
 
636
 
637
      moOraDatabase.Parameters.Remove "USER_ID"
638
 
639
      rsUser.Close()
640
      Set rsUser = Nothing
641
   End Sub
642
   '-----------------------------------------------------------------------------------------------------------------
643
   Private Sub GetApplicationRunningLevel ( )
644
      Dim rsQry, query
645
 
646
 
647
      '--- Get if user is loged on from DB ---
648
      moOraDatabase.Parameters.Add "APP_ID",  APPLICATION_ID, ORAPARM_INPUT, ORATYPE_NUMBER
649
 
650
      query = _
651
      " SELECT app.APP_ID,"&_
652
      "        app.APPLICATION_NAME,"&_
653
      "        app.IS_RUNNING"&_
654
      "   FROM APPLICATIONS app"&_
655
      "  WHERE app.APP_ID = :APP_ID"
656
      Set rsQry = moOraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT )
657
 
658
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
659
         mbIsApplicationRunning = FALSE
660
         If rsQry("is_running") = enumDB_YES Then
661
            mbIsApplicationRunning = TRUE
662
         End If
663
      End If
664
 
665
      moOraDatabase.Parameters.Remove "APP_ID"
666
      rsQry.Close
667
      Set rsQry = Nothing
668
 
669
   End Sub
670
   '-----------------------------------------------------------------------------------------------------------------
671
   Private Sub Class_Initialize()
672
      '// Perform action on creation of object. e.g. Set myObj = New ThisClassName
673
      Set mobjStaticControl = CreateObject("Scripting.Dictionary")
674
      Set mobjTablePermissions = CreateObject("Scripting.Dictionary")
675
      Set mobjRowPermissions = CreateObject("Scripting.Dictionary")
676
      mbIsApplicationRunning = NULL   ' The state of application
677
 
678
      sSEPARATOR = "||"
679
 
680
   End Sub
681
   '-----------------------------------------------------------------------------------------------------------------
682
   Private Sub Class_Terminate()
683
      '// Perform action on object disposal. e.g. Set myObj = Nothing
684
      Set mobjStaticControl = Nothing
685
      Set mobjRowPermissions = Nothing
686
      Set mobjTablePermissions = Nothing
687
 
688
   End Sub
689
   '-----------------------------------------------------------------------------------------------------------------
119 ghuddy 690
End Class
129 ghuddy 691
%>