| com.jcorporate.expresso.core.dbobj.SecuredDBObject com.jcorporate.expresso.services.dbobj.SecurityDBObject
All known Subclasses: com.jcorporate.expresso.services.dbobj.TmpUser, com.jcorporate.expresso.services.dbobj.DefaultUserInfo, com.jcorporate.expresso.services.dbobj.UserPreference, com.jcorporate.expresso.services.dbobj.UserGroup, com.jcorporate.expresso.services.dbobj.GroupMembers, com.jcorporate.expresso.services.dbobj.DBObjSecurity, com.jcorporate.expresso.services.dbobj.JobSecurity, com.jcorporate.expresso.services.dbobj.UserPreferenceDef, com.jcorporate.expresso.services.dbobj.GroupNest, com.jcorporate.expresso.services.dbobj.ControllerSecurity,
SecurityDBObject | abstract public class SecurityDBObject extends SecuredDBObject (Code) | |
SecurityDBObject.java
this object provides a means to control the DB context via Setup values.
subclasses will ignore any context except that found in Setup.
You probably will never create a subclass of SecurityDBObject yourself--it is
a framework tool embedded in the Expresso security system. The idea is to provide
a flexible way to redirect authentication classes to another database context.
For example, consider a situation where there are two Expresso applications,
and you wanted the second application to rely on the first in order to
authenticate users and otherwise supply user information.
The following classes extend SecurityDBObject in Expresso:
- ControllerSecurity
- DBObjSecurity
- DefaultUserInfo
- GroupMembers
- GroupNest
- JobSecurity
- TmpUser
- UserGroup
- UserPreference
- UserPreferenceDef
SecurityDBObject provides a means to control the DB context
(for some or all of the classes listed above) via Setup values.
Two Setup values are important for SecurityDBObject:
SecurityDB -- Database to use for User/Group Security Info
SecurityDBObjs -- Database Objects that should use the 'fixed' context found in the SecurityDB parameter
If these Setup values are empty, SecurityDBObject does nothing special. However, if these 2 Setup values contain
meaningful info, subclasses of SecurityDBObject may ignore any DB context supplied (e.g., they can ignore a
context like 'default' that comes from the ControllerRequest). The logic is two-fold: the Setup value SecurityDB
must be filled, AND the Setup value SecurityDBObjs must contain the fully-qualified class name of all objects
(from the list of SecurityDBObject subclasses listed above) that will use the 'fixed' context value in Setup
value SecurityDB. That's a bit tricky, so to repeat: even though all the security classes listed above are
instances of SecurityDBObject, each one will use the fixed context only if that individual class is also listed
in the Setup value, SecurityDBObjs.
This scheme is useful in at least one case: one primary Expresso application supplying User information to a
secondary Expresso application.
LIMITATION: user info and group membership changed on the primary,
UserInfo application will not trigger a cache cleaning on the secondary
system. So when these memberships are changed, manually clean the cache on
the secondary system via admin
pages, or by restarting.
As always, this sample may not be representative of your needs, so attempt
this only with caution and a single-step debugger handy.
author: Michael Nash |
Method Summary | |
protected void | overrideDataContext(String newContext) when someone tries to set a new data context, check
with Setup values to see if this new context should be
ignored, such as when a SecurityDBObject subclass is listed in the set
of SecurityDBObjs (a list configurable as a Setup param). | public void | setDBName(String newContext) Ignore the newContext parameter if Setup values indicate to do this. | public void | setDataContext(String newContext) |
SECURITY_CONTEXT | final public static String SECURITY_CONTEXT(Code) | | |
SECURITY_OBJECTS | final public static String SECURITY_OBJECTS(Code) | | |
SecurityDBObject | public SecurityDBObject(int uid) throws DBException(Code) | | Use over (String) constructor. Initializes the object in the context
of the user who's uid belongs to the parameter.
Parameters: uid - the Uid of the user context throws: DBException - if there's an initialization problem |
SecurityDBObject | public SecurityDBObject(RequestContext request) throws DBException(Code) | | For using DBObjects within Controllers. Initializes based upon the current
user and the requested db. [Of course this can be modified later]
Parameters: request - - The controller request handed to you by the framework. throws: DBException - if there's an error constructing the object |
overrideDataContext | protected void overrideDataContext(String newContext)(Code) | | when someone tries to set a new data context, check
with Setup values to see if this new context should be
ignored, such as when a SecurityDBObject subclass is listed in the set
of SecurityDBObjs (a list configurable as a Setup param).
Parameters: newContext - the new data context to use. |
setDBName | public void setDBName(String newContext) throws DBException(Code) | | Ignore the newContext parameter if Setup values indicate to do this.
In other words, when someone tries to set a new data context, check
with Setup values to see if this SecurityDBObject subclass is listed in the set
of SecurityDBObjs (a list configurable as a Setup param).
Warning: calls super.setDBName(),
which could loop back recursively if the superclass
then creates objects which get db context set.
Parameters: newContext - the new dataContext to use throws: DBException - upon construction error. |
setDataContext | public void setDataContext(String newContext)(Code) | | Override of DBObject's setDataContext() to call setDBName
Parameters: newContext - the new dataContext to use |
Methods inherited from com.jcorporate.expresso.core.dbobj.SecuredDBObject | public void add() throws DBException(Code)(Java Doc) public boolean canRequesterAdd() throws DBException(Code)(Java Doc) public boolean canRequesterDelete() throws DBException(Code)(Java Doc) public boolean canRequesterRead() throws DBException(Code)(Java Doc) public boolean canRequesterUpdate() throws DBException(Code)(Java Doc) public boolean checkAllowed(String requestedFunction) throws DBException(Code)(Java Doc) public void copyAttributes(DBObject returnObj) throws DBException(Code)(Java Doc) public synchronized int count() throws com.jcorporate.expresso.core.db.DBException(Code)(Java Doc) protected synchronized void createSecurityCache() throws CacheException(Code)(Java Doc) public void delete() throws DBException(Code)(Java Doc) public synchronized void deleteAll() throws com.jcorporate.expresso.core.db.DBException(Code)(Java Doc) public boolean find() throws DBException(Code)(Java Doc) public int getRequestingUid()(Code)(Java Doc) protected String getString(String stringCode, Object[] args) throws DBException(Code)(Java Doc) protected String getString(String stringCode) throws DBException(Code)(Java Doc) protected String getString(String stringCode, String arg1) throws DBException(Code)(Java Doc) protected String getString(String stringCode, String arg1, String arg2) throws DBException(Code)(Java Doc) protected String getString(String stringCode, String arg1, String arg2, String arg3) throws DBException(Code)(Java Doc) protected String getString(String stringCode, String arg1, String arg2, String arg3, String arg4) throws DBException(Code)(Java Doc) public int getSystemUid()(Code)(Java Doc) public static SecuredDBObject instantiate(String className) throws DBException(Code)(Java Doc) public void isAllowed(String requestedFunction) throws SecurityException, DBException(Code)(Java Doc) public void retrieve() throws DBException(Code)(Java Doc) public synchronized void search() throws DBException(Code)(Java Doc) public synchronized ArrayList searchAndRetrieveList() throws DBException(Code)(Java Doc) public synchronized ArrayList searchAndRetrieveList(String sortKeys) throws DBException(Code)(Java Doc) public void setRequestingUid(int newUid)(Code)(Java Doc) public void update() throws DBException(Code)(Java Doc)
|
|
|