Author: shane.bryzak(a)jboss.com
Date: 2009-05-18 04:49:55 -0400 (Mon, 18 May 2009)
New Revision: 10925
Added:
modules/trunk/security/src/main/java/org/jboss/seam/security/management/IdentityStoreEntityClasses.java
Modified:
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreConfig.java
modules/trunk/security/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java
Log:
some hackish configuration stuff
Added:
modules/trunk/security/src/main/java/org/jboss/seam/security/management/IdentityStoreEntityClasses.java
===================================================================
---
modules/trunk/security/src/main/java/org/jboss/seam/security/management/IdentityStoreEntityClasses.java
(rev 0)
+++
modules/trunk/security/src/main/java/org/jboss/seam/security/management/IdentityStoreEntityClasses.java 2009-05-18
08:49:55 UTC (rev 10925)
@@ -0,0 +1,16 @@
+package org.jboss.seam.security.management;
+
+import javax.context.ApplicationScoped;
+
+/**
+ * FIXME - a hack until we get some proper bean configuration
+ *
+ * @author Shane Bryzak
+ *
+ */
+@ApplicationScoped
+public interface IdentityStoreEntityClasses
+{
+ Class<?> getUserEntityClass();
+ Class<?> getRoleEntityClass();
+}
Modified:
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
===================================================================
---
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java 2009-05-18
08:49:13 UTC (rev 10924)
+++
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java 2009-05-18
08:49:55 UTC (rev 10925)
@@ -11,7 +11,6 @@
import java.util.List;
import java.util.Set;
-import javax.annotation.Named;
import javax.context.RequestScoped;
import javax.inject.Current;
import javax.inject.Initializer;
@@ -35,7 +34,6 @@
*
* @author Shane Bryzak
*/
-@Named("identityStore")
@RequestScoped
public class JpaIdentityStore implements IdentityStore, Serializable
{
@@ -46,7 +44,7 @@
protected FeatureSet featureSet;
@PersistenceContext EntityManager entityManager;
-
+
JpaIdentityStoreConfig config;
Manager manager;
@@ -77,7 +75,7 @@
featureSet.enableAll();
}
- if (config.userEntityClass == null)
+ if (config.getUserEntityClass() == null)
{
log.error("Error in JpaIdentityStore configuration - userClass must be
configured.");
return;
@@ -88,7 +86,7 @@
{
try
{
- if (config.userEntityClass == null)
+ if (config.getUserEntityClass() == null)
{
throw new IdentityManagementException("Could not create account,
userClass not set");
}
@@ -98,21 +96,21 @@
throw new IdentityManagementException("Could not create account, already
exists");
}
- Object user = config.userEntityClass.newInstance();
+ Object user = config.getUserEntityClass().newInstance();
- config.userPrincipalProperty.setValue(user, username);
+ config.getUserPrincipalProperty().setValue(user, username);
- if (config.userFirstNameProperty.isSet())
config.userFirstNameProperty.setValue(user, firstname);
- if (config.userLastNameProperty.isSet())
config.userLastNameProperty.setValue(user, lastname);
+ if (config.getUserFirstNameProperty().isSet())
config.getUserFirstNameProperty().setValue(user, firstname);
+ if (config.getUserLastNameProperty().isSet())
config.getUserLastNameProperty().setValue(user, lastname);
if (password == null)
{
- if (config.userEnabledProperty.isSet())
config.userEnabledProperty.setValue(user, false);
+ if (config.getUserEnabledProperty().isSet())
config.getUserEnabledProperty().setValue(user, false);
}
else
{
setUserPassword(user, password);
- if (config.userEnabledProperty.isSet())
config.userEnabledProperty.setValue(user, true);
+ if (config.getUserEnabledProperty().isSet())
config.getUserEnabledProperty().setValue(user, true);
}
manager.fireEvent(new PrePersistUserEvent(user));
@@ -138,15 +136,15 @@
protected void setUserPassword(Object user, String password)
{
- if (config.passwordSaltProperty.isSet())
+ if (config.getPasswordSaltProperty().isSet())
{
byte[] salt = generateUserSalt(user);
- config.passwordSaltProperty.setValue(user, BinTools.bin2hex(salt));
- config.userPasswordProperty.setValue(user, generatePasswordHash(password,
salt));
+ config.getPasswordSaltProperty().setValue(user, BinTools.bin2hex(salt));
+ config.getUserPasswordProperty().setValue(user, generatePasswordHash(password,
salt));
}
else
{
- config.userPasswordProperty.setValue(user, generatePasswordHash(password,
getUserAccountSalt(user)));
+ config.getUserPasswordProperty().setValue(user, generatePasswordHash(password,
getUserAccountSalt(user)));
}
}
@@ -157,7 +155,7 @@
protected String getUserAccountSalt(Object user)
{
// By default, we'll use the user's username as the password salt
- return config.userPrincipalProperty.getValue(user).toString();
+ return config.getUserPrincipalProperty().getValue(user).toString();
}
/**
@@ -188,12 +186,12 @@
@SuppressWarnings("unchecked")
public boolean grantRole(String username, String role)
{
- if (config.roleEntityClass == null) return false;
+ if (config.getRoleEntityClass() == null) return false;
Object user = lookupUser(username);
if (user == null)
{
- if (config.userPasswordProperty.isSet())
+ if (config.getUserPasswordProperty().isSet())
{
// If no userPasswordProperty is set, it means that authentication is being
performed
// by another identity store and this one is just managing roles
@@ -220,10 +218,10 @@
throw new NoSuchRoleException("Could not grant role, role '" +
role + "' does not exist");
}
- Collection<?> userRoles = (Collection<?>)
config.userRolesProperty.getValue(user);
+ Collection<?> userRoles = (Collection<?>)
config.getUserRolesProperty().getValue(user);
if (userRoles == null)
{
- Type propType = config.userRolesProperty.getPropertyType();
+ Type propType = config.getUserRolesProperty().getPropertyType();
Class<?> collectionType;
if (propType instanceof Class &&
Collection.class.isAssignableFrom((Class<?>) propType))
@@ -250,30 +248,30 @@
userRoles = new ArrayList<Object>();
}
- config.userRolesProperty.setValue(user, userRoles);
+ config.getUserRolesProperty().setValue(user, userRoles);
}
- else if (((Collection<?>)
config.userRolesProperty.getValue(user)).contains(roleToGrant))
+ else if (((Collection<?>)
config.getUserRolesProperty().getValue(user)).contains(roleToGrant))
{
return false;
}
- if (config.xrefEntityClass == null)
+ if (config.getXrefEntityClass() == null)
{
// If this is a Many-To-Many relationship, simply add the role
- ((Collection<Object>)
config.userRolesProperty.getValue(user)).add(roleToGrant);
+ ((Collection<Object>)
config.getUserRolesProperty().getValue(user)).add(roleToGrant);
}
else
{
// Otherwise we need to insert a cross-reference entity instance
try
{
- Object xref = config.xrefEntityClass.newInstance();
- config.xrefUserProperty.setValue(xref, user);
- config.xrefRoleProperty.setValue(xref, roleToGrant);
+ Object xref = config.getXrefEntityClass().newInstance();
+ config.getXrefUserProperty().setValue(xref, user);
+ config.getXrefRoleProperty().setValue(xref, roleToGrant);
manager.fireEvent(new PrePersistUserRoleEvent(xref));
- ((Collection<Object>)
config.userRolesProperty.getValue(user)).add(entityManager.merge(xref));
+ ((Collection<Object>)
config.getUserRolesProperty().getValue(user)).add(entityManager.merge(xref));
}
catch (Exception ex)
{
@@ -300,17 +298,17 @@
boolean success = false;
- if (config.xrefEntityClass == null)
+ if (config.getXrefEntityClass() == null)
{
- success = ((Collection<?>)
config.userRolesProperty.getValue(user)).remove(roleToRevoke);
+ success = ((Collection<?>)
config.getUserRolesProperty().getValue(user)).remove(roleToRevoke);
}
else
{
- Collection<?> roles = ((Collection<?>)
config.userRolesProperty.getValue(user));
+ Collection<?> roles = ((Collection<?>)
config.getUserRolesProperty().getValue(user));
for (Object xref : roles)
{
- if (config.xrefRoleProperty.getValue(xref).equals(roleToRevoke))
+ if (config.getXrefRoleProperty().getValue(xref).equals(roleToRevoke))
{
success = roles.remove(xref);
break;
@@ -324,7 +322,7 @@
@SuppressWarnings("unchecked")
public boolean addRoleToGroup(String role, String group)
{
- if (!config.roleGroupsProperty.isSet()) return false;
+ if (!config.getRoleGroupsProperty().isSet()) return false;
Object targetRole = lookupRole(role);
if (targetRole == null)
@@ -338,14 +336,14 @@
throw new NoSuchRoleException("Could not grant role, group '" +
group + "' does not exist");
}
- Collection<?> roleGroups = (Collection<?>)
config.roleGroupsProperty.getValue(targetRole);
+ Collection<?> roleGroups = (Collection<?>)
config.getRoleGroupsProperty().getValue(targetRole);
if (roleGroups == null)
{
// This should either be a Set, or a List...
Class<?> rawType = null;
- if (config.roleGroupsProperty.getPropertyType() instanceof ParameterizedType)
+ if (config.getRoleGroupsProperty().getPropertyType() instanceof
ParameterizedType)
{
- rawType = (Class<?>) ((ParameterizedType)
config.roleGroupsProperty.getPropertyType()).getRawType();
+ rawType = (Class<?>) ((ParameterizedType)
config.getRoleGroupsProperty().getPropertyType()).getRawType();
}
else
{
@@ -361,21 +359,21 @@
roleGroups = new ArrayList<Object>();
}
- config.roleGroupsProperty.setValue(targetRole, roleGroups);
+ config.getRoleGroupsProperty().setValue(targetRole, roleGroups);
}
- else if (((Collection<?>)
config.roleGroupsProperty.getValue(targetRole)).contains(targetGroup))
+ else if (((Collection<?>)
config.getRoleGroupsProperty().getValue(targetRole)).contains(targetGroup))
{
return false;
}
- ((Collection<Object>)
config.roleGroupsProperty.getValue(targetRole)).add(targetGroup);
+ ((Collection<Object>)
config.getRoleGroupsProperty().getValue(targetRole)).add(targetGroup);
return true;
}
public boolean removeRoleFromGroup(String role, String group)
{
- if (!config.roleGroupsProperty.isSet()) return false;
+ if (!config.getRoleGroupsProperty().isSet()) return false;
Object roleToRemove = lookupRole(role);
if (role == null)
@@ -389,7 +387,7 @@
throw new NoSuchRoleException("Could not remove role from group, no such
group '" + group + "'");
}
- boolean success = ((Collection<?>)
config.roleGroupsProperty.getValue(roleToRemove)).remove(targetGroup);
+ boolean success = ((Collection<?>)
config.getRoleGroupsProperty().getValue(roleToRemove)).remove(targetGroup);
return success;
}
@@ -398,7 +396,7 @@
{
try
{
- if (config.roleEntityClass == null)
+ if (config.getRoleEntityClass() == null)
{
throw new IdentityManagementException("Could not create role, roleClass
not set");
}
@@ -408,8 +406,8 @@
throw new IdentityManagementException("Could not create role, already
exists");
}
- Object instance = config.roleEntityClass.newInstance();
- config.roleNameProperty.setValue(instance, role);
+ Object instance = config.getRoleEntityClass().newInstance();
+ config.getRoleNameProperty().setValue(instance, role);
entityManager.persist(instance);
return true;
@@ -435,9 +433,9 @@
throw new NoSuchRoleException("Could not delete role, role '" +
role + "' does not exist");
}
- if (config.xrefEntityClass != null)
+ if (config.getXrefEntityClass() != null)
{
- entityManager.createQuery("delete " + config.xrefEntityClass.getName()
+ " where role = :role")
+ entityManager.createQuery("delete " +
config.getXrefEntityClass().getName() + " where role = :role")
.setParameter("role", roleToDelete)
.executeUpdate();
}
@@ -462,10 +460,10 @@
public boolean enableUser(String name)
{
- if (!config.userEnabledProperty.isSet())
+ if (!config.getUserEnabledProperty().isSet())
{
log.debug("Can not enable user, no @UserEnabled property configured in
userClass " +
- config.userEntityClass.getName());
+ config.getUserEntityClass().getName());
return false;
}
@@ -476,21 +474,21 @@
}
// Can't enable an already-enabled user, return false
- if (((Boolean) config.userEnabledProperty.getValue(user)) == true)
+ if (((Boolean) config.getUserEnabledProperty().getValue(user)) == true)
{
return false;
}
- config.userEnabledProperty.setValue(user, true);
+ config.getUserEnabledProperty().setValue(user, true);
return true;
}
public boolean disableUser(String name)
{
- if (!config.userEnabledProperty.isSet())
+ if (!config.getUserEnabledProperty().isSet())
{
log.debug("Can not disable user, no @UserEnabled property configured in
userClass " +
- config.userEntityClass.getName());
+ config.getUserEntityClass().getName());
return false;
}
@@ -501,12 +499,12 @@
}
// Can't disable an already-disabled user, return false
- if (((Boolean) config.userEnabledProperty.getValue(user)) == false)
+ if (((Boolean) config.getUserEnabledProperty().getValue(user)) == false)
{
return false;
}
- config.userEnabledProperty.setValue(user, false);
+ config.getUserEnabledProperty().setValue(user, false);
return true;
}
@@ -536,8 +534,8 @@
public boolean isUserEnabled(String name)
{
Object user = lookupUser(name);
- return user != null && (!config.userEnabledProperty.isSet() ||
- (((Boolean) config.userEnabledProperty.getValue(user))) == true);
+ return user != null && (!config.getUserEnabledProperty().isSet() ||
+ (((Boolean) config.getUserEnabledProperty().getValue(user))) == true);
}
public List<String> getGrantedRoles(String name)
@@ -550,20 +548,20 @@
List<String> roles = new ArrayList<String>();
- Collection<?> userRoles = (Collection<?>)
config.userRolesProperty.getValue(user);
+ Collection<?> userRoles = (Collection<?>)
config.getUserRolesProperty().getValue(user);
if (userRoles != null)
{
for (Object role : userRoles)
{
- if (config.xrefEntityClass == null)
+ if (config.getXrefEntityClass() == null)
{
- roles.add((String) config.roleNameProperty.getValue(role));
+ roles.add((String) config.getRoleNameProperty().getValue(role));
}
else
{
- Object xref = config.roleNameProperty.getValue(role);
- Object userRole = config.xrefRoleProperty.getValue(xref);
- roles.add((String) config.roleNameProperty.getValue(userRole));
+ Object xref = config.getRoleNameProperty().getValue(role);
+ Object userRole = config.getXrefRoleProperty().getValue(xref);
+ roles.add((String) config.getRoleNameProperty().getValue(userRole));
}
}
}
@@ -581,14 +579,14 @@
List<String> groups = new ArrayList<String>();
- if (config.roleGroupsProperty.isSet())
+ if (config.getRoleGroupsProperty().isSet())
{
- Collection<?> roleGroups = (Collection<?>)
config.roleGroupsProperty.getValue(role);
+ Collection<?> roleGroups = (Collection<?>)
config.getRoleGroupsProperty().getValue(role);
if (roleGroups != null)
{
for (Object group : roleGroups)
{
- groups.add((String) config.roleNameProperty.getValue(group));
+ groups.add((String) config.getRoleNameProperty().getValue(group));
}
}
}
@@ -605,12 +603,12 @@
}
Set<String> roles = new HashSet<String>();
- Collection<?> userRoles = (Collection<?>)
config.userRolesProperty.getValue(user);
+ Collection<?> userRoles = (Collection<?>)
config.getUserRolesProperty().getValue(user);
if (userRoles != null)
{
for (Object role : userRoles)
{
- addRoleAndMemberships((String) config.roleNameProperty.getValue(role),
roles);
+ addRoleAndMemberships((String) config.getRoleNameProperty().getValue(role),
roles);
}
}
@@ -623,15 +621,15 @@
{
Object instance = lookupRole(role);
- if (config.roleGroupsProperty.isSet())
+ if (config.getRoleGroupsProperty().isSet())
{
- Collection<?> groups = (Collection<?>)
config.roleGroupsProperty.getValue(instance);
+ Collection<?> groups = (Collection<?>)
config.getRoleGroupsProperty().getValue(instance);
if (groups != null)
{
for (Object group : groups)
{
- addRoleAndMemberships((String) config.roleNameProperty.getValue(group),
roles);
+ addRoleAndMemberships((String)
config.getRoleNameProperty().getValue(group), roles);
}
}
}
@@ -640,12 +638,12 @@
public String generatePasswordHash(String password, byte[] salt)
{
- if (config.passwordSaltProperty.isSet())
+ if (config.getPasswordSaltProperty().isSet())
{
try
{
return getPasswordHash().createPasswordKey(password.toCharArray(), salt,
- config.userPasswordProperty.getAnnotation().iterations());
+ config.getUserPasswordProperty().getAnnotation().iterations());
}
catch (GeneralSecurityException ex)
{
@@ -665,7 +663,7 @@
@Deprecated
protected String generatePasswordHash(String password, String salt)
{
- String algorithm = config.userPasswordProperty.getAnnotation().hash();
+ String algorithm = config.getUserPasswordProperty().getAnnotation().hash();
if (algorithm == null || "".equals(algorithm))
{
@@ -698,17 +696,17 @@
public boolean authenticate(String username, String password)
{
Object user = lookupUser(username);
- if (user == null || (config.userEnabledProperty.isSet() &&
- ((Boolean) config.userEnabledProperty.getValue(user) == false)))
+ if (user == null || (config.getUserEnabledProperty().isSet() &&
+ ((Boolean) config.getUserEnabledProperty().getValue(user) == false)))
{
return false;
}
String passwordHash = null;
- if (config.passwordSaltProperty.isSet())
+ if (config.getPasswordSaltProperty().isSet())
{
- String encodedSalt = (String) config.passwordSaltProperty.getValue(user);
+ String encodedSalt = (String) config.getPasswordSaltProperty().getValue(user);
if (encodedSalt == null)
{
throw new IdentityManagementException("A @PasswordSalt property was
found on entity " + user +
@@ -723,7 +721,7 @@
}
- boolean success = passwordHash.equals(config.userPasswordProperty.getValue(user));
+ boolean success =
passwordHash.equals(config.getUserPasswordProperty().getValue(user));
if (success)
{
@@ -738,8 +736,8 @@
try
{
Object user = entityManager.createQuery(
- "select u from " + config.userEntityClass.getName() + " u
where " + config.userPrincipalProperty.getName() +
- " = :username")
+ "select u from " + config.getUserEntityClass().getName() + " u
where " +
+ config.getUserPrincipalProperty().getName() + " = :username")
.setParameter("username", username)
.getSingleResult();
@@ -753,17 +751,17 @@
public String getUserName(Object user)
{
- return (String) config.userPrincipalProperty.getValue(user);
+ return (String) config.getUserPrincipalProperty().getValue(user);
}
public String getRoleName(Object role)
{
- return (String) config.roleNameProperty.getValue(role);
+ return (String) config.getRoleNameProperty().getValue(role);
}
public boolean isRoleConditional(String role)
{
- return config.roleConditionalProperty.isSet() ? (Boolean)
config.roleConditionalProperty.getValue(
+ return config.getRoleConditionalProperty().isSet() ? (Boolean)
config.getRoleConditionalProperty().getValue(
lookupRole(role)) : false;
}
@@ -772,7 +770,7 @@
try
{
Object value = entityManager.createQuery(
- "select r from " + config.roleEntityClass.getName() + " r
where " + config.roleNameProperty.getName() +
+ "select r from " + config.getRoleEntityClass().getName() + " r
where " + config.getRoleNameProperty().getName() +
" = :role")
.setParameter("role", role)
.getSingleResult();
@@ -789,7 +787,8 @@
public List<String> listUsers()
{
return (List<String>) entityManager.createQuery(
- "select u." + config.userPrincipalProperty.getName() + " from
" + config.userEntityClass.getName() + " u")
+ "select u." + config.getUserPrincipalProperty().getName() + "
from " +
+ config.getUserEntityClass().getName() + " u")
.getResultList();
}
@@ -797,8 +796,8 @@
public List<String> listUsers(String filter)
{
return (List<String>) entityManager.createQuery(
- "select u." + config.userPrincipalProperty.getName() + " from
" + config.userEntityClass.getName() +
- " u where lower(" + config.userPrincipalProperty.getName() +
") like :username")
+ "select u." + config.getUserPrincipalProperty().getName() + "
from " + config.getUserEntityClass().getName() +
+ " u where lower(" + config.getUserPrincipalProperty().getName() +
") like :username")
.setParameter("username", "%" + (filter != null ?
filter.toLowerCase() : "") +
"%")
.getResultList();
@@ -808,8 +807,8 @@
public List<String> listRoles()
{
return (List<String>) entityManager.createQuery(
- "select r." + config.roleNameProperty.getName() + " from
" +
- config.roleEntityClass.getName() + " r").getResultList();
+ "select r." + config.getRoleNameProperty().getName() + " from
" +
+ config.getRoleEntityClass().getName() + " r").getResultList();
}
public List<Principal> listMembers(String role)
@@ -834,20 +833,20 @@
{
Object roleEntity = lookupRole(role);
- if (config.xrefEntityClass == null)
+ if (config.getXrefEntityClass() == null)
{
return (List<String>) entityManager.createQuery("select u." +
- config.userPrincipalProperty.getName() +
- " from " + config.userEntityClass.getName() + " u where
:role member of u." +
- config.userRolesProperty.getName())
+ config.getUserPrincipalProperty().getName() +
+ " from " + config.getUserEntityClass().getName() + " u
where :role member of u." +
+ config.getUserRolesProperty().getName())
.setParameter("role", roleEntity)
.getResultList();
}
else
{
List<?> xrefs = entityManager.createQuery("select x from " +
- config.xrefEntityClass.getName() + " x where x." +
- config.xrefRoleProperty.getName() + " = :role")
+ config.getXrefEntityClass().getName() + " x where x." +
+ config.getXrefRoleProperty().getName() + " = :role")
.setParameter("role", roleEntity)
.getResultList();
@@ -855,8 +854,8 @@
for (Object xref : xrefs)
{
- Object user = config.xrefUserProperty.getValue(xref);
- members.add(config.userPrincipalProperty.getValue(user).toString());
+ Object user = config.getXrefUserProperty().getValue(xref);
+ members.add(config.getUserPrincipalProperty().getValue(user).toString());
}
return members;
@@ -867,14 +866,14 @@
@SuppressWarnings("unchecked")
private List<String> listRoleMembers(String role)
{
- if (config.roleGroupsProperty.isSet())
+ if (config.getRoleGroupsProperty().isSet())
{
Object roleEntity = lookupRole(role);
return (List<String>) entityManager.createQuery("select r." +
- config.roleNameProperty.getName() +
- " from " + config.roleEntityClass.getName() + " r where
:role member of r." +
- config.roleGroupsProperty.getName())
+ config.getRoleNameProperty().getName() +
+ " from " + config.getRoleEntityClass().getName() + " r
where :role member of r." +
+ config.getRoleGroupsProperty().getName())
.setParameter("role", roleEntity)
.getResultList();
}
@@ -888,15 +887,15 @@
StringBuilder roleQuery = new StringBuilder();
roleQuery.append("select r.");
- roleQuery.append(config.roleNameProperty.getName());
+ roleQuery.append(config.getRoleNameProperty().getName());
roleQuery.append(" from ");
- roleQuery.append(config.roleEntityClass.getName());
+ roleQuery.append(config.getRoleEntityClass().getName());
roleQuery.append(" r");
- if (config.roleConditionalProperty.isSet())
+ if (config.getRoleConditionalProperty().isSet())
{
roleQuery.append(" where r.");
- roleQuery.append(config.roleConditionalProperty.getName());
+ roleQuery.append(config.getRoleConditionalProperty().getName());
roleQuery.append(" = false");
}
Modified:
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreConfig.java
===================================================================
---
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreConfig.java 2009-05-18
08:49:13 UTC (rev 10924)
+++
modules/trunk/security/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreConfig.java 2009-05-18
08:49:55 UTC (rev 10925)
@@ -5,6 +5,7 @@
import java.util.Collection;
import javax.context.ApplicationScoped;
+import javax.inject.Current;
import javax.inject.Initializer;
import org.jboss.seam.security.annotations.management.PasswordSalt;
@@ -28,55 +29,57 @@
@ApplicationScoped
public class JpaIdentityStoreConfig
{
- Class<?> userEntityClass;
- Class<?> roleEntityClass;
- Class<?> xrefEntityClass;
- TypedBeanProperty xrefUserProperty;
- TypedBeanProperty xrefRoleProperty;
+ private Class<?> userEntityClass;
+ private Class<?> roleEntityClass;
+ private Class<?> xrefEntityClass;
+ private TypedBeanProperty xrefUserProperty;
+ private TypedBeanProperty xrefRoleProperty;
- AnnotatedBeanProperty<UserPrincipal> userPrincipalProperty;
- AnnotatedBeanProperty<UserPassword> userPasswordProperty;
- AnnotatedBeanProperty<PasswordSalt> passwordSaltProperty;
- AnnotatedBeanProperty<UserRoles> userRolesProperty;
- AnnotatedBeanProperty<UserEnabled> userEnabledProperty;
- AnnotatedBeanProperty<UserFirstName> userFirstNameProperty;
- AnnotatedBeanProperty<UserLastName> userLastNameProperty;
- AnnotatedBeanProperty<RoleName> roleNameProperty;
- AnnotatedBeanProperty<RoleGroups> roleGroupsProperty;
- AnnotatedBeanProperty<RoleConditional> roleConditionalProperty;
+ private AnnotatedBeanProperty<UserPrincipal> userPrincipalProperty;
+ private AnnotatedBeanProperty<UserPassword> userPasswordProperty;
+ private AnnotatedBeanProperty<PasswordSalt> passwordSaltProperty;
+ private AnnotatedBeanProperty<UserRoles> userRolesProperty;
+ private AnnotatedBeanProperty<UserEnabled> userEnabledProperty;
+ private AnnotatedBeanProperty<UserFirstName> userFirstNameProperty;
+ private AnnotatedBeanProperty<UserLastName> userLastNameProperty;
+ private AnnotatedBeanProperty<RoleName> roleNameProperty;
+ private AnnotatedBeanProperty<RoleGroups> roleGroupsProperty;
+ private AnnotatedBeanProperty<RoleConditional> roleConditionalProperty;
+
+ @Current IdentityStoreEntityClasses entityClasses;
@Initializer
public void initProperties()
{
- userPrincipalProperty = new
AnnotatedBeanProperty<UserPrincipal>(userEntityClass, UserPrincipal.class);
- userPasswordProperty = new
AnnotatedBeanProperty<UserPassword>(userEntityClass, UserPassword.class);
- passwordSaltProperty = new
AnnotatedBeanProperty<PasswordSalt>(userEntityClass, PasswordSalt.class);
- userRolesProperty = new AnnotatedBeanProperty<UserRoles>(userEntityClass,
UserRoles.class);
- userEnabledProperty = new AnnotatedBeanProperty<UserEnabled>(userEntityClass,
UserEnabled.class);
- userFirstNameProperty = new
AnnotatedBeanProperty<UserFirstName>(userEntityClass, UserFirstName.class);
- userLastNameProperty = new
AnnotatedBeanProperty<UserLastName>(userEntityClass, UserLastName.class);
+ userPrincipalProperty = new
AnnotatedBeanProperty<UserPrincipal>(getUserEntityClass(), UserPrincipal.class);
+ userPasswordProperty = new
AnnotatedBeanProperty<UserPassword>(getUserEntityClass(), UserPassword.class);
+ passwordSaltProperty = new
AnnotatedBeanProperty<PasswordSalt>(getUserEntityClass(), PasswordSalt.class);
+ userRolesProperty = new
AnnotatedBeanProperty<UserRoles>(getUserEntityClass(), UserRoles.class);
+ userEnabledProperty = new
AnnotatedBeanProperty<UserEnabled>(getUserEntityClass(), UserEnabled.class);
+ userFirstNameProperty = new
AnnotatedBeanProperty<UserFirstName>(getUserEntityClass(), UserFirstName.class);
+ userLastNameProperty = new
AnnotatedBeanProperty<UserLastName>(getUserEntityClass(), UserLastName.class);
if (!userPrincipalProperty.isSet())
{
- throw new IdentityManagementException("Invalid userClass " +
userEntityClass.getName() +
+ throw new IdentityManagementException("Invalid userClass " +
getUserEntityClass().getName() +
" - required annotation @UserPrincipal not found on any Field or
Method.");
}
if (!userRolesProperty.isSet())
{
- throw new IdentityManagementException("Invalid userClass " +
userEntityClass.getName() +
+ throw new IdentityManagementException("Invalid userClass " +
getUserEntityClass().getName() +
" - required annotation @UserRoles not found on any Field or
Method.");
}
- if (roleEntityClass != null)
+ if (getRoleEntityClass() != null)
{
- roleNameProperty = new AnnotatedBeanProperty<RoleName>(roleEntityClass,
RoleName.class);
- roleGroupsProperty = new
AnnotatedBeanProperty<RoleGroups>(roleEntityClass, RoleGroups.class);
- roleConditionalProperty = new
AnnotatedBeanProperty<RoleConditional>(roleEntityClass, RoleConditional.class);
+ roleNameProperty = new
AnnotatedBeanProperty<RoleName>(getRoleEntityClass(), RoleName.class);
+ roleGroupsProperty = new
AnnotatedBeanProperty<RoleGroups>(getRoleEntityClass(), RoleGroups.class);
+ roleConditionalProperty = new
AnnotatedBeanProperty<RoleConditional>(getRoleEntityClass(),
RoleConditional.class);
if (!roleNameProperty.isSet())
{
- throw new IdentityManagementException("Invalid roleClass " +
roleEntityClass.getName() +
+ throw new IdentityManagementException("Invalid roleClass " +
getRoleEntityClass().getName() +
" - required annotation @RoleName not found on any Field or
Method.");
}
@@ -94,11 +97,11 @@
// If the @UserRoles property isn't a collection of <roleClass>,
then assume the relationship
// is going through a cross-reference table
- if (!genType.equals(roleEntityClass))
+ if (!genType.equals(getRoleEntityClass()))
{
xrefEntityClass = (Class<?>) genType;
- xrefUserProperty = new TypedBeanProperty(xrefEntityClass,
userEntityClass);
- xrefRoleProperty = new TypedBeanProperty(xrefEntityClass,
roleEntityClass);
+ xrefUserProperty = new TypedBeanProperty(xrefEntityClass,
getUserEntityClass());
+ xrefRoleProperty = new TypedBeanProperty(xrefEntityClass,
getRoleEntityClass());
if (!xrefUserProperty.isSet())
{
@@ -118,6 +121,11 @@
public Class<?> getUserEntityClass()
{
+ if (userEntityClass == null)
+ {
+ userEntityClass = entityClasses.getUserEntityClass();
+ }
+
return userEntityClass;
}
@@ -128,6 +136,11 @@
public Class<?> getRoleEntityClass()
{
+ if (roleEntityClass == null)
+ {
+ roleEntityClass = entityClasses.getRoleEntityClass();
+ }
+
return roleEntityClass;
}
@@ -135,4 +148,62 @@
{
this.roleEntityClass = roleEntityClass;
}
+
+ public Class<?> getXrefEntityClass()
+ {
+ return xrefEntityClass;
+ }
+
+ public TypedBeanProperty getXrefUserProperty()
+ {
+ return xrefUserProperty;
+ }
+
+ public TypedBeanProperty getXrefRoleProperty()
+ {
+ return xrefRoleProperty;
+ }
+
+ public AnnotatedBeanProperty<UserPrincipal> getUserPrincipalProperty()
+ {
+ return userPrincipalProperty;
+ }
+
+ public AnnotatedBeanProperty<UserPassword> getUserPasswordProperty()
+ {
+ return userPasswordProperty;
+ }
+
+ public AnnotatedBeanProperty<PasswordSalt> getPasswordSaltProperty() {
+ return passwordSaltProperty;
+ }
+
+ public AnnotatedBeanProperty<UserRoles> getUserRolesProperty() {
+ return userRolesProperty;
+ }
+
+ public AnnotatedBeanProperty<UserEnabled> getUserEnabledProperty() {
+ return userEnabledProperty;
+ }
+
+ public AnnotatedBeanProperty<UserFirstName> getUserFirstNameProperty() {
+ return userFirstNameProperty;
+ }
+
+ public AnnotatedBeanProperty<UserLastName> getUserLastNameProperty() {
+ return userLastNameProperty;
+ }
+
+ public AnnotatedBeanProperty<RoleName> getRoleNameProperty() {
+ return roleNameProperty;
+ }
+
+ public AnnotatedBeanProperty<RoleGroups> getRoleGroupsProperty() {
+ return roleGroupsProperty;
+ }
+
+ public AnnotatedBeanProperty<RoleConditional> getRoleConditionalProperty() {
+ return roleConditionalProperty;
+ }
+
}
Modified:
modules/trunk/security/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java
===================================================================
---
modules/trunk/security/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java 2009-05-18
08:49:13 UTC (rev 10924)
+++
modules/trunk/security/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java 2009-05-18
08:49:55 UTC (rev 10925)
@@ -27,6 +27,7 @@
import org.jboss.seam.security.SimplePrincipal;
import org.jboss.seam.security.management.IdentityManager;
import org.jboss.seam.security.management.JpaIdentityStore;
+import org.jboss.seam.security.management.JpaIdentityStoreConfig;
import org.jboss.seam.security.permission.PermissionMetadata.ActionSet;
import org.jboss.seam.security.util.AnnotatedBeanProperty;
@@ -527,15 +528,16 @@
boolean recipientIsRole = recipient instanceof Role;
JpaIdentityStore identityStore =
manager.getInstanceByType(JpaIdentityStore.class);
+ JpaIdentityStoreConfig config =
manager.getInstanceByType(JpaIdentityStoreConfig.class);
if (identityStore != null)
{
if (recipientIsRole && roleProperty.isSet() &&
-
roleProperty.getPropertyType().equals(identityStore.getRoleEntityClass()))
+ roleProperty.getPropertyType().equals(config.getRoleEntityClass()))
{
return identityStore.lookupRole(recipient.getName());
}
- else if
(userProperty.getPropertyType().equals(identityStore.getUserEntityClass()))
+ else if (userProperty.getPropertyType().equals(config.getUserEntityClass()))
{
return identityStore.lookupUser(recipient.getName());
}
@@ -547,8 +549,10 @@
protected Principal resolvePrincipal(Object principal, boolean isUser)
{
identityManager.getRoleIdentityStore();
- JpaIdentityStore identityStore = null;
+ JpaIdentityStore identityStore =
manager.getInstanceByType(JpaIdentityStore.class);
+ JpaIdentityStoreConfig config =
manager.getInstanceByType(JpaIdentityStoreConfig.class);
+
if (principal instanceof String)
{
return isUser ? new SimplePrincipal((String) principal) : new Role((String)
principal,
@@ -557,12 +561,12 @@
if (identityStore != null)
{
- if (isUser &&
identityStore.getUserEntityClass().isAssignableFrom(principal.getClass()))
+ if (isUser &&
config.getUserEntityClass().isAssignableFrom(principal.getClass()))
{
return new SimplePrincipal(identityStore.getUserName(principal));
}
- if (!isUser &&
identityStore.getRoleEntityClass().isAssignableFrom(principal.getClass()))
+ if (!isUser &&
config.getRoleEntityClass().isAssignableFrom(principal.getClass()))
{
String name = identityStore.getRoleName(principal);
return new Role(name, identityStore.isRoleConditional(name));
@@ -605,7 +609,7 @@
createPermissionQuery(null, targets, null, Discrimination.either) :
createPermissionQuery(target, null, null, Discrimination.either);
- List userPermissions = permissionQuery.getResultList();
+ List<?> userPermissions = permissionQuery.getResultList();
Map<String,Principal> principalCache = new
HashMap<String,Principal>();
@@ -675,7 +679,7 @@
permissionQuery = targets != null ?
createPermissionQuery(null, targets, null, Discrimination.role) :
createPermissionQuery(target, null, null, Discrimination.role);
- List rolePermissions = permissionQuery.getResultList();
+ List<?> rolePermissions = permissionQuery.getResultList();
for (Object permission : rolePermissions)
{
@@ -752,22 +756,22 @@
return manager.getInstanceByType(EntityManager.class);
}
- public Class getUserPermissionClass()
+ public Class<?> getUserPermissionClass()
{
return userPermissionClass;
}
- public void setUserPermissionClass(Class userPermissionClass)
+ public void setUserPermissionClass(Class<?> userPermissionClass)
{
this.userPermissionClass = userPermissionClass;
}
- public Class getRolePermissionClass()
+ public Class<?> getRolePermissionClass()
{
return rolePermissionClass;
}
- public void setRolePermissionClass(Class rolePermissionClass)
+ public void setRolePermissionClass(Class<?> rolePermissionClass)
{
this.rolePermissionClass = rolePermissionClass;
}