|
of_initsecurity
|
|
Full name
|
pfc_n_cst_security.of_initsecurity
|
Access
|
public
|
Extend of
|
integer
|
Return value
|
integer
|
Prototype
|
public function integer of_initsecurity(n_tr,string,string,string,boolean)
|
Name
|
Datatype
|
li_idx
|
integer
|
li_rc
|
integer
|
public function integer of_initsecurity (n_tr atr_trans, string as_appname, string as_userid, string as_defaultgroup, boolean ab_precache);//////////////////////////////////////////////////////////////////////////////
//
// Function: of_InitSecurity
//
// Access: public
//
// Arguments :
// atr_trans used to connect to the database
// as_appname application id
// as_userid user id
// as_defaultgroup group to be used if the user does not belong to one
// ab_precache preload all settings for the user - Default is false
//
// Returns: Integer. 1 = OK
// -1 = Transaction not connected
// -2 = Application not in dataabse
// -3 = User not in database
// -4 = User is not a member of any groups and default group does not exist
// -5 = Default group not supplied
// -6 = Error retrieving information
//
//
// Description: Initialize the database connection, application and user id's.
// Used when setting security.
//
//////////////////////////////////////////////////////////////////////////////
//
// Revision History
//
// Version
// 5.0 Initial version
// 5.0.03 Added additional error checking for retrieve statements
// 5.0.03 Fixed problem where is_defaultgroup was used instead of as_defaultgroup
// 6.0 Added ab_precache option
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright © 1996-1997 Sybase, Inc. and its subsidiaries. All rights reserved.
// Any distribution of the PowerBuilder Foundation Classes (PFC)
// source code by other than Sybase, Inc. and its subsidiaries is prohibited.
//
//////////////////////////////////////////////////////////////////////////////
integer li_rc, li_idx
// transaction not connected
if NOT atr_trans.of_isconnected() then return -1
as_defaultgroup = lower(as_defaultgroup)
as_appname = lower(as_appname)
as_userid = lower(as_userid)
// Is this a valid application?
ids_groups.dataobject = 'd_pfcsecurity_applookup'
ids_groups.of_settransobject(atr_trans)
li_rc = ids_groups.retrieve(as_appname)
if li_rc = 0 then return -2
if li_rc < 0 then return -6
// Is this a valid user ?
ids_groups.dataobject = 'd_pfcsecurity_userlookup'
ids_groups.of_settransobject(atr_trans)
li_rc= ids_groups.retrieve(as_userid)
if li_rc = 0 then return -3
if li_rc < 0 then return -6
// how many groups does this user belong to ?
ids_groups.dataobject = 'd_pfcsecurity_grouplookup'
ids_groups.of_settransobject(atr_trans)
ii_numgroups = ids_groups.retrieve(as_userid)
if ii_numgroups = 0 then
// Is default group valid ?
if len(as_defaultgroup) > 0 then
ids_groups.dataobject = 'd_pfcsecurity_groupverify'
ids_groups.of_settransobject(atr_trans)
ii_numgroups = ids_groups.retrieve(as_defaultgroup)
if ii_numgroups = 0 then return -4
else
return -5
end if
elseif ii_numgroups < 0 then
return -6
end if
// set up item list
ids_items.dataobject = 'd_pfcsecurity_controllist'
ids_items.of_settransobject(atr_trans)
ids_items.of_setappend(true)
// set the values
ib_initsecurity = true
is_defaultgroup = as_defaultgroup
is_app = as_appname
is_userID = as_userid
ib_precache = ab_precache
itr_trans = atr_trans
If ab_precache Then
// go and retrieve ALL settings for this user
ids_items.dataobject = 'd_pfcsecurity_allcontrollist'
ids_items.of_settransobject(atr_trans)
li_rc = ids_items.retrieve(as_appname, as_userid)
// read in the setting for all the groups the the user belongs to
For li_idx = 1 To ii_numgroups
li_rc = ids_items.Retrieve(is_app, ids_groups.object.group_name[li_idx] )
If li_rc = -1 Then
Return -1
Else
// Resort to force ordering
ids_items.sort()
il_numberofrows += li_rc
End If
Next
End If
Return 1
end function