From: <fc...@us...> - 2007-08-09 08:52:41
|
Revision: 393 http://openutils.svn.sourceforge.net/openutils/?rev=393&view=rev Author: fcarone Date: 2007-08-09 01:52:43 -0700 (Thu, 09 Aug 2007) Log Message: ----------- detach the security manager from acegi Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java 2007-08-09 08:47:26 UTC (rev 392) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java 2007-08-09 08:52:43 UTC (rev 393) @@ -6,6 +6,7 @@ import it.openutils.hibernate.security.dataobject.SecurityRule; import it.openutils.hibernate.security.services.SecurityRuleManager; +import java.util.ArrayList; import java.util.List; import org.acegisecurity.GrantedAuthority; @@ -61,17 +62,24 @@ } GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities(); - List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, authorities); + List<String> roles = new ArrayList<String>(); + for (int i = 0; i < authorities.length; i++) + { + roles.add(authorities[i].getAuthority()); + } + List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles); + if (rules.isEmpty()) { - String roles = StringUtils.EMPTY; + String grantedRoles = StringUtils.EMPTY; for (int i = 0; i < authorities.length; i++) { - roles += authorities[i].getAuthority() + " "; + grantedRoles += authorities[i].getAuthority() + " "; } - log.error("Access is denied for entity {}, and roles {}", entity, roles); + log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles); throw new SecurityException("Access is denied"); } + Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules); sessionFactory.getCurrentSession().enableFilter(filter.getName()); Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2007-08-09 08:47:26 UTC (rev 392) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/SecurityRuleManager.java 2007-08-09 08:52:43 UTC (rev 393) @@ -7,7 +7,6 @@ import java.util.List; -import org.acegisecurity.GrantedAuthority; import org.hibernate.Filter; @@ -77,9 +76,9 @@ ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException; /** - * @param entity - * @param authorities - * @return + * @param entity The entity we want rules for + * @param roles The list of roles + * @return The list of security rules matching entity - roles */ - List<SecurityRule> getRulesForRoles(String entity, GrantedAuthority[] authorities); + List<SecurityRule> getRulesForRoles(String entity, List<String> roles); } Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2007-08-09 08:47:26 UTC (rev 392) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2007-08-09 08:52:43 UTC (rev 393) @@ -11,7 +11,6 @@ import java.util.ArrayList; import java.util.List; -import org.acegisecurity.GrantedAuthority; import org.hibernate.Filter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,15 +116,14 @@ /** * {@inheritDoc} */ - public List<SecurityRule> getRulesForRoles(String entity, GrantedAuthority[] authorities) + public List<SecurityRule> getRulesForRoles(String entity, List<String> roles) { List<SecurityRule> rules = new ArrayList<SecurityRule>(); - for (int i = 0; i < authorities.length; i++) + for (String role : roles) { - GrantedAuthority authority = authorities[i]; SecurityRule filter = new SecurityRule(); filter.setEntity(entity); - filter.setRole(authority.getAuthority()); + filter.setRole(role); rules.addAll(findFiltered(filter)); } return rules; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |