seam hasPermission + drools
yacin Jun 1, 2009 2:36 AMHi,
I upgraded from Seam 2.0.1 to Seam 2.1.1, I extended Identity in order to use the Seam hasPermission
@Name("org.jboss.seam.security.identity") @Scope(ScopeType.SESSION) @BypassInterceptors @Install(precedence=APPLICATION) @AutoCreate public class TrackableIdentity extends Identity
Once I updated to seam 2.1.1 then extending Identity was not working. I tried to use jboss rules, I did a lot of hard work to understand but I am all the time getting exception. please help is been almost a month I am struggling with this.
Here is the hasPermission section:
<ui:fragment rendered="#{s:hasPermission('MANAGE_AGENT_PROFILE', 'W') || s:hasPermission('MANAGE_AGENT_PROFILE', 'R')}">
For every user's login this is how I am creating the drools facts that will contain the Permission Objects I loaded from Database.
List<Permission> permissions = new ArrayList<Permission>(); List<RolePermission> rolePermissions = currPerson.getAppuser().getRole().getRolepermissions(); if (rolePermissions != null && rolePermissions.size() > 0) { log.debug("####role permissions "+rolePermissions.size()); System.out.println(">>test1"); for (int j=0; j<rolePermissions.size(); j++) { RolePermission rolePermission = rolePermissions.get(j); policyPricingWorkingMemory.insert(rolePermission); policyPricingWorkingMemory.fireAllRules(); //Principal r = new Role(currPerson.getAppuser().getRole().getRole()); //permissions.add(new Permission(rolePermission.getBusinessFunction().getFunctionName(), rolePermission.getAccessRight(), r)); } } result = true; }
Each User has one Role and each Role has a List of Permissions and each Permission has one Function, which is the function that the current user has either Read or Write access to it.
The following is my Jboss rules:
rule checkWritePermission no-loop when //$rolePermission:RolePermission(businessFunction:businessFunction) rolePermission:RolePermission() fuct: rolePermission.businessFunction.functionName check: PermissionCheck(name == fuct, action == "W") then check.grant(); System.out.println("Passed: checkWritePermission"); end
I am using Jboss5, and Seam 2.1.1, so here is the error I am getting, please help.
20:27:22,396 ERROR [RuleBase] errors parsing rules in: /security.drl 20:27:22,398 ERROR [RuleBase] unknown:17:1 mismatched token: [@87,354:358='check',<7>,17:1]; expecting type LEFT_PAREN (/security.drl) 20:27:22,398 ERROR [RuleBase] unknown:17:24 Unexpected token 'target' (/security.drl)
Thank-you.