Author: adrianc
Date: Sun Aug 9 17:20:06 2009 New Revision: 802563 URL: http://svn.apache.org/viewvc?rev=802563&view=rev Log: Converted Security.java to an interface. No functional change. Modified: ofbiz/trunk/framework/security/src/org/ofbiz/security/OFBizSecurity.java ofbiz/trunk/framework/security/src/org/ofbiz/security/Security.java ofbiz/trunk/framework/security/src/org/ofbiz/security/SecurityFactory.java ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Modified: ofbiz/trunk/framework/security/src/org/ofbiz/security/OFBizSecurity.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/security/src/org/ofbiz/security/OFBizSecurity.java?rev=802563&r1=802562&r2=802563&view=diff ============================================================================== --- ofbiz/trunk/framework/security/src/org/ofbiz/security/OFBizSecurity.java (original) +++ ofbiz/trunk/framework/security/src/org/ofbiz/security/OFBizSecurity.java Sun Aug 9 17:20:06 2009 @@ -29,6 +29,7 @@ import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.cache.UtilCache; import org.ofbiz.entity.GenericDelegator; import org.ofbiz.entity.GenericEntityException; import org.ofbiz.entity.GenericValue; @@ -39,33 +40,42 @@ import org.ofbiz.entity.util.EntityUtil; /** - * <code>OFBizSecurity</code> - * This class has not been altered from the original source. It now just extends Security and was therefore renamed to - * OFBizSecurity. + * An implementation of the Security interface that uses the OFBiz database + * for permission storage. */ -public class OFBizSecurity extends org.ofbiz.security.Security { +public class OFBizSecurity implements Security { public static final String module = OFBizSecurity.class.getName(); - public static final Map<String, Map<String, String>> simpleRoleEntity = UtilMisc.toMap( + /** + * UtilCache to cache a Collection of UserLoginSecurityGroup entities for each UserLogin, by userLoginId. + */ + protected static UtilCache<String, List<GenericValue>> userLoginSecurityGroupByUserLoginId = new UtilCache<String, List<GenericValue>>("security.UserLoginSecurityGroupByUserLoginId"); + + /** + * UtilCache to cache whether or not a certain SecurityGroupPermission row exists or not. + * For each SecurityGroupPermissionPK there is a Boolean in the cache specifying whether or not it exists. + * In this way the cache speeds things up whether or not the user has a permission. + */ + protected static UtilCache<GenericValue, Boolean> securityGroupPermissionCache = new UtilCache<GenericValue, Boolean>("security.SecurityGroupPermissionCache"); + + protected GenericDelegator delegator = null; + + protected static final Map<String, Map<String, String>> simpleRoleEntity = UtilMisc.toMap( "ORDERMGR", UtilMisc.toMap("name", "OrderRole", "pkey", "orderId"), "FACILITY", UtilMisc.toMap("name", "FacilityParty", "pkey", "facilityId"), "MARKETING", UtilMisc.toMap("name", "MarketingCampaignRole", "pkey", "marketingCampaignId")); - GenericDelegator delegator = null; - protected OFBizSecurity() {} protected OFBizSecurity(GenericDelegator delegator) { this.delegator = delegator; } - @Override public GenericDelegator getDelegator() { - return delegator; + return this.delegator; } - @Override public void setDelegator(GenericDelegator delegator) { this.delegator = delegator; } @@ -73,7 +83,6 @@ /** * @see org.ofbiz.security.Security#findUserLoginSecurityGroupByUserLoginId(java.lang.String) */ - @Override public Iterator<GenericValue> findUserLoginSecurityGroupByUserLoginId(String userLoginId) { List<GenericValue> collection = userLoginSecurityGroupByUserLoginId.get(userLoginId); @@ -95,7 +104,6 @@ /** * @see org.ofbiz.security.Security#securityGroupPermissionExists(java.lang.String, java.lang.String) */ - @Override public boolean securityGroupPermissionExists(String groupId, String permission) { GenericValue securityGroupPermissionValue = delegator.makeValue("SecurityGroupPermission", UtilMisc.toMap("groupId", groupId, "permissionId", permission)); @@ -120,7 +128,6 @@ /** * @see org.ofbiz.security.Security#hasPermission(java.lang.String, javax.servlet.http.HttpSession) */ - @Override public boolean hasPermission(String permission, HttpSession session) { GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); @@ -132,7 +139,6 @@ /** * @see org.ofbiz.security.Security#hasPermission(java.lang.String, org.ofbiz.entity.GenericValue) */ - @Override public boolean hasPermission(String permission, GenericValue userLogin) { if (userLogin == null) return false; @@ -150,7 +156,6 @@ /** * @see org.ofbiz.security.Security#hasEntityPermission(java.lang.String, java.lang.String, javax.servlet.http.HttpSession) */ - @Override public boolean hasEntityPermission(String entity, String action, HttpSession session) { GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); @@ -161,7 +166,6 @@ /** * @see org.ofbiz.security.Security#hasEntityPermission(java.lang.String, java.lang.String, org.ofbiz.entity.GenericValue) */ - @Override public boolean hasEntityPermission(String entity, String action, GenericValue userLogin) { if (userLogin == null) return false; @@ -187,7 +191,6 @@ /** * @see org.ofbiz.security.Security#hasRolePermission(java.lang.String, java.lang.String, java.lang.String, java.lang.String, javax.servlet.http.HttpSession) */ - @Override public boolean hasRolePermission(String application, String action, String primaryKey, String role, HttpSession session) { GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); return hasRolePermission(application, action, primaryKey, role, userLogin); @@ -196,7 +199,6 @@ /** * @see org.ofbiz.security.Security#hasRolePermission(java.lang.String, java.lang.String, java.lang.String, java.lang.String, org.ofbiz.entity.GenericValue) */ - @Override public boolean hasRolePermission(String application, String action, String primaryKey, String role, GenericValue userLogin) { List<String> roles = null; if (role != null && !role.equals("")) @@ -207,7 +209,6 @@ /** * @see org.ofbiz.security.Security#hasRolePermission(java.lang.String, java.lang.String, java.lang.String, java.util.List, javax.servlet.http.HttpSession) */ - @Override public boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, HttpSession session) { GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); return hasRolePermission(application, action, primaryKey, roles, userLogin); @@ -216,7 +217,6 @@ /** * @see org.ofbiz.security.Security#hasRolePermission(java.lang.String, java.lang.String, java.lang.String, java.util.List, org.ofbiz.entity.GenericValue) */ - @Override public boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, GenericValue userLogin) { String entityName = null; EntityCondition condition = null; @@ -291,4 +291,10 @@ return false; } + public void clearUserData(GenericValue userLogin) { + if (userLogin != null) { + userLoginSecurityGroupByUserLoginId.remove(userLogin.getString("userLoginId")); + } + } + } Modified: ofbiz/trunk/framework/security/src/org/ofbiz/security/Security.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/security/src/org/ofbiz/security/Security.java?rev=802563&r1=802562&r2=802563&view=diff ============================================================================== --- ofbiz/trunk/framework/security/src/org/ofbiz/security/Security.java (original) +++ ofbiz/trunk/framework/security/src/org/ofbiz/security/Security.java Sun Aug 9 17:20:06 2009 @@ -23,36 +23,17 @@ import javax.servlet.http.HttpSession; -import org.ofbiz.base.util.cache.UtilCache; import org.ofbiz.entity.GenericDelegator; import org.ofbiz.entity.GenericValue; /** - * Security handler: This class is an abstract implementation for all commononly used security aspects. + * Security interface. This interface defines security-related methods. */ -public abstract class Security { +public interface Security { - /** - * UtilCache to cache a Collection of UserLoginSecurityGroup entities for each UserLogin, by userLoginId. - */ - public static UtilCache<String, List<GenericValue>> userLoginSecurityGroupByUserLoginId = new UtilCache<String, List<GenericValue>>("security.UserLoginSecurityGroupByUserLoginId"); - - /** - * UtilCache to cache whether or not a certain SecurityGroupPermission row exists or not. - * For each SecurityGroupPermissionPK there is a Boolean in the cache specifying whether or not it exists. - * In this way the cache speeds things up whether or not the user has a permission. - */ - public static UtilCache<GenericValue, Boolean> securityGroupPermissionCache = new UtilCache<GenericValue, Boolean>("security.SecurityGroupPermissionCache"); - - GenericDelegator delegator = null; + public GenericDelegator getDelegator(); - public GenericDelegator getDelegator() { - return delegator; - } - - public void setDelegator(GenericDelegator delegator) { - this.delegator = delegator; - } + public void setDelegator(GenericDelegator delegator); /** * Uses userLoginSecurityGroupByUserLoginId cache to speed up the finding of the userLogin's security group list. @@ -61,7 +42,7 @@ * @return An iterator made from the Collection either cached or retrieved from the database through the * UserLoginSecurityGroup Delegator. */ - public abstract Iterator<GenericValue> findUserLoginSecurityGroupByUserLoginId(String userLoginId); + public Iterator<GenericValue> findUserLoginSecurityGroupByUserLoginId(String userLoginId); /** * Finds whether or not a SecurityGroupPermission row exists given a groupId and permission. @@ -73,7 +54,7 @@ * @param permission The name of the permission * @return boolean specifying whether or not a SecurityGroupPermission row exists */ - public abstract boolean securityGroupPermissionExists(String groupId, String permission); + public boolean securityGroupPermissionExists(String groupId, String permission); /** * Checks to see if the currently logged in userLogin has the passed permission. @@ -82,7 +63,7 @@ * @param session The current HTTP session, contains the logged in userLogin as an attribute. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasPermission(String permission, HttpSession session); + public boolean hasPermission(String permission, HttpSession session); /** * Checks to see if the userLogin has the passed permission. @@ -91,7 +72,7 @@ * @param userLogin The userLogin object for user to check against. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasPermission(String permission, GenericValue userLogin); + public boolean hasPermission(String permission, GenericValue userLogin); /** * Like hasPermission above, except it has functionality specific to Entity permissions. Checks the entity for the @@ -102,7 +83,7 @@ * @param session The current HTTP session, contains the logged in userLogin as an attribute. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasEntityPermission(String entity, String action, HttpSession session); + public boolean hasEntityPermission(String entity, String action, HttpSession session); /** * Like hasPermission above, except it has functionality specific to Entity permissions. Checks the entity for the @@ -113,7 +94,7 @@ * @param userLogin The userLogin object for user to check against. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasEntityPermission(String entity, String action, GenericValue userLogin); + public boolean hasEntityPermission(String entity, String action, GenericValue userLogin); /** * Like hasEntityPermission above, this checks the specified action, as well as for "_ADMIN" to allow for simplified @@ -127,7 +108,7 @@ * @param session The current HTTP session, contains the logged in userLogin as an attribute. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasRolePermission(String application, String action, String primaryKey, String role, HttpSession session); + public boolean hasRolePermission(String application, String action, String primaryKey, String role, HttpSession session); /** * Like hasEntityPermission above, this checks the specified action, as well as for "_ADMIN" to allow for simplified @@ -141,7 +122,7 @@ * @param userLogin The userLogin object for user to check against. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasRolePermission(String application, String action, String primaryKey, String role, GenericValue userLogin); + public boolean hasRolePermission(String application, String action, String primaryKey, String role, GenericValue userLogin); /** * Like hasEntityPermission above, this checks the specified action, as well as for "_ADMIN" to allow for simplified @@ -155,7 +136,7 @@ * @param userLogin The userLogin object for user to check against. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, GenericValue userLogin); + public boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, GenericValue userLogin); /** * Like hasEntityPermission above, this checks the specified action, as well as for "_ADMIN" to allow for simplified @@ -169,6 +150,12 @@ * @param session The current HTTP session, contains the logged in userLogin as an attribute. * @return Returns true if the currently logged in userLogin has the specified permission, otherwise returns false. */ - public abstract boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, HttpSession session); + public boolean hasRolePermission(String application, String action, String primaryKey, List<String> roles, HttpSession session); + /** Clears any user-related cached data. This method is called by the framework + * to indicate a user has logged out. Implementations should clear any cached + * data related to the user. + * @param userLogin The user login to be cleared + */ + public void clearUserData(GenericValue userLogin); } Modified: ofbiz/trunk/framework/security/src/org/ofbiz/security/SecurityFactory.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/security/src/org/ofbiz/security/SecurityFactory.java?rev=802563&r1=802562&r2=802563&view=diff ============================================================================== --- ofbiz/trunk/framework/security/src/org/ofbiz/security/SecurityFactory.java (original) +++ ofbiz/trunk/framework/security/src/org/ofbiz/security/SecurityFactory.java Sun Aug 9 17:20:06 2009 @@ -64,7 +64,7 @@ synchronized (SecurityFactory.class) { try { ClassLoader loader = Thread.currentThread().getContextClassLoader(); - Class c = loader.loadClass(getSecurityClass(securityName)); + Class<?> c = loader.loadClass(getSecurityClass(securityName)); security = (Security) c.newInstance(); security.setDelegator(delegator); } catch (ClassNotFoundException cnf) { Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java?rev=802563&r1=802562&r2=802563&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java (original) +++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Sun Aug 9 17:20:06 2009 @@ -488,7 +488,7 @@ Security security = (Security) request.getAttribute("security"); if (security != null && userLogin != null) { - Security.userLoginSecurityGroupByUserLoginId.remove(userLogin.getString("userLoginId")); + security.clearUserData(userLogin); } // set the logged out flag |
Free forum by Nabble | Edit this page |