Role use with Jpa
gkar47.bill.elliot.binoids.com Jul 28, 2011 7:03 PMI am trying to use Roles with Seam Security. I have added the following to my MySQL DB.
insert into IdentityRoleName(id, name) values (1, 'admin'); insert into IdentityRoleName(id, name) values (2, 'manager'); insert into IdentityObjectType(id, name) values (1, 'USER'); insert into IdentityObjectType(id, name) values (2, 'GROUP'); insert into IdentityObject (id, name, identity_object_type_id) values (1, 'shane', 1); insert into IdentityObject (id, name, identity_object_type_id) values (2, 'demo', 1); insert into IdentityObject (id, name, identity_object_type_id) values (3, 'ROOT', 2); insert into IdentityObject (id, name, identity_object_type_id) values (4, 'USERS', 2); insert into IdentityObjectCredentialType (id, name) values (1, 'PASSWORD'); insert into IdentityObjectCredential (id, identity_object_id, credential_type_id, value) values (1, 1, 1, 'password'); insert into IdentityObjectCredential (id, identity_object_id, credential_type_id, value) values (2, 2, 1, 'demo'); insert into IdentityObjectRelationshipType (id, name) values (1, 'JBOSS_IDENTITY_MEMBERSHIP'); insert into IdentityObjectRelationshipType (id, name) values (2, 'JBOSS_IDENTITY_ROLE'); insert into IdentityObjectRelationship (id, name, relationship_type_id, from_identity_id, to_identity_id) values (1, 'admin', 2, 3, 2); insert into IdentityObjectRelationship (id, name, relationship_type_id, from_identity_id, to_identity_id) values (2, 'admin', 2, 4, 2);
And my seam-beans.xml has the following:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xmlns:drools="urn:java:org.jboss.seam.drools:org.jboss.seam.drools.config" xmlns:auth="urn:java:org.jboss.seam.security" xmlns:security="urn:java:org.jboss.seam.security.permission" xmlns:plidm="urn:java:org.jboss.seam.security.management.picketlink" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"> <auth:Identity> <s:modifies /> <auth:authenticatorName>NGOAuthenticator</auth:authenticatorName> </auth:Identity> <security:JpaPermissionStore> <s:replaces /> <security:identityPermissionClass>com.ngo.domain.IdentityPermission</security:identityPermissionClass> </security:JpaPermissionStore> <plidm:JpaIdentityStoreConfiguration> <s:replaces /> <plidm:identityClass>com.ngo.domain.IdentityObject</plidm:identityClass> <plidm:credentialClass>com.ngo.domain.IdentityObjectCredential</plidm:credentialClass> <plidm:relationshipClass>com.ngo.domain.IdentityObjectRelationship</plidm:relationshipClass> <plidm:roleTypeClass>com.ngo.domain.IdentityRoleName</plidm:roleTypeClass> <plidm:attributeClass>com.ngo.domain.IdentityObjectAttribute</plidm:attributeClass> </plidm:JpaIdentityStoreConfiguration> </beans>
When I try to execute the following identity.getRoles()
I get no roles and therefore when I execute identity.hasRole( admin
, ROOT
, GROUP
) it returns false.
What am I missing?
I have also tried removing the relationship entries and executing identity.addRole( admin
, ROOT
, GROUP
) just before the hasRole and it says I now have the Role. But, the values are not added to the DB.